mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-07-07 20:06:39 +02:00
TI-46: Display error in visual reports (day,week,month)
- Fix calculation of end_mins - Add tests
This commit is contained in:
parent
c7cf7d7b46
commit
58f07d0266
3 changed files with 111 additions and 3 deletions
|
@ -10,6 +10,8 @@
|
|||
(thanks to Jan Stolarek)
|
||||
- TI-42 refresh holiday script throws an error on nb-NO locale
|
||||
(thanks to Jelle van der Waa).
|
||||
- TI-46 Display error in visual reports (day,week,month)
|
||||
(thanks to Michael Meier)
|
||||
- TI-47 first call successfully creates new database but returns exit status 1
|
||||
(thanks to Georg Sauthoff).
|
||||
- TI-49 new theme files aren't installed
|
||||
|
|
|
@ -543,13 +543,14 @@ static void renderInterval (
|
|||
|
||||
auto start_mins = (clipped.range.start.hour () - first_hour) * 60 + clipped.range.start.minute ();
|
||||
auto end_mins = (clipped.range.end.hour () - first_hour) * 60 + clipped.range.end.minute ();
|
||||
if (end_mins == 0)
|
||||
end_mins = (23 * 60) + 59;
|
||||
|
||||
if (clipped.range.end.hour () == 0)
|
||||
end_mins += (clipped.range.end.day() - clipped.range.start.day()) * 24 * 60;
|
||||
|
||||
work = clipped.range.total ();
|
||||
|
||||
auto start_block = quantizeToNMinutes (start_mins, cell) / cell;
|
||||
auto end_block = quantizeToNMinutes (end_mins == 0 ? 60 : end_mins, cell) / cell;
|
||||
auto end_block = quantizeToNMinutes (end_mins == start_mins ? start_mins + 60 : end_mins, cell) / cell;
|
||||
|
||||
int start_offset = start_block + (spacing * (start_mins / 60));
|
||||
int end_offset = end_block + (spacing * (end_mins / 60));
|
||||
|
|
105
test/chart.t
105
test/chart.t
|
@ -93,6 +93,111 @@ class TestChart(TestCase):
|
|||
|
||||
self.assertIn("Invalid value for 'reports.month.cell': 'foobar'", err)
|
||||
|
||||
def test_chart_day_with_less_than_one_minute_interval_at_day_start(self):
|
||||
self.t("track 2016-01-15T00:00:00 - 2016-01-15T00:00:40 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 XOXO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n XOXO \
|
||||
\n
|
||||
Tracked 0:00:40
|
||||
Available 23:59:20
|
||||
Total 24:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_less_than_one_minute_interval(self):
|
||||
self.t(
|
||||
"track 2016-01-15T02:00:00 - 2016-01-15T02:00:40 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 0 1 XOXO 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n XOXO \
|
||||
\n
|
||||
Tracked 0:00:40
|
||||
Available 23:59:20
|
||||
Total 24:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_less_than_one_hour_interval_at_day_start(self):
|
||||
self.t(
|
||||
"track 2016-01-15T00:00:00 - 2016-01-15T00:30:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 XO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n XO \
|
||||
\n
|
||||
Tracked 0:30:00
|
||||
Available 23:30:00
|
||||
Total 24:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_less_than_one_hour_interval(self):
|
||||
self.t(
|
||||
"track 2016-01-15T02:00:00 - 2016-01-15T02:30:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 0 1 XO 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n XO \
|
||||
\n
|
||||
Tracked 0:30:00
|
||||
Available 23:30:00
|
||||
Total 24:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_interval_over_day_border(self):
|
||||
self.t(
|
||||
"track 2016-01-15T23:00:00 - 2016-01-16T01:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-17")
|
||||
self.assertIn("""\
|
||||
\nFri 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 XOXOX\
|
||||
\n OXOXO\
|
||||
\nSat 16 XOXOX1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n OXOXO \
|
||||
\n
|
||||
Tracked 2:00:00
|
||||
Available 46:00:00
|
||||
Total 48:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_interval_over_day_border(self):
|
||||
self.t("track 2016-01-15T23:00:00 - 2016-01-16T01:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-17")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 XOXOX\
|
||||
\n OXOXO\
|
||||
\nSat 16 XOXOX1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 \
|
||||
\n OXOXO \
|
||||
\n
|
||||
Tracked 2:00:00
|
||||
Available 46:00:00
|
||||
Total 48:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
def test_chart_day_with_interval_over_whole_day(self):
|
||||
self.t("track 2016-01-15T00:00:00 - 2016-01-16T00:00:00 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO")
|
||||
code, out, err = self.t("day 2016-01-15 - 2016-01-16")
|
||||
|
||||
self.assertIn("""\
|
||||
\nFri 15 XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO\
|
||||
\n XOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXOXO\
|
||||
\n
|
||||
Tracked 24:00:00
|
||||
Available 0:00:00
|
||||
Total 24:00:00
|
||||
|
||||
""", out)
|
||||
|
||||
if __name__ == "__main__":
|
||||
from simpletap import TAPTestRunner
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue