From: Bastian Dehn Date: Sun, 9 Jun 2024 08:55:00 +0000 (+0200) Subject: add max break time X-Git-Tag: 1.0.0^2~51 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=f42b5ee2533bb51b08d1fc0e8860aea7fec59912;p=feierabend.git add max break time --- diff --git a/src/break.c b/src/break.c index 3e9b7ac..25e32af 100644 --- a/src/break.c +++ b/src/break.c @@ -4,11 +4,20 @@ #define TWO_HOURS_FIFTEEN_MINUTES 8100 #define FOUR_HOURS_FIFTY_FIVE_MINITUES 17100 #define FIVE_HOURS 18000 +#define SIX_HOURS_THIRTY_MINUTES 23400 +#define SIX_HOURS_FOURTY_FIVE_MINUTES 24300 #define FIFTEEN_MINUTES 900 #define THIRTY_MINUTES 1800 +#define FOURTY_FIVE_MINITUES 2700 int get_break_time(long worktime) { + if (worktime > SIX_HOURS_FOURTY_FIVE_MINUTES) + return FOURTY_FIVE_MINITUES; + + if (worktime > SIX_HOURS_THIRTY_MINUTES) + return worktime - SIX_HOURS_THIRTY_MINUTES + THIRTY_MINUTES; + if (worktime > FIVE_HOURS) return THIRTY_MINUTES; diff --git a/tests/main.c b/tests/main.c index efa67cf..4c2d2f5 100644 --- a/tests/main.c +++ b/tests/main.c @@ -87,7 +87,7 @@ void five_hours_minutes_thirty_minute_break() assert_int_equal(breaktime, 1800); } -void five_and_one_minute_hours_minutes_thirty_minute_break() +void five_hours_and_one_minute_hours_minutes_thirty_minute_break() { long worktime = 18060; @@ -96,6 +96,51 @@ void five_and_one_minute_hours_minutes_thirty_minute_break() assert_int_equal(breaktime, 1800); } +void six_hours_and_thirty_minute_hours_minutes_thirty_minute_break() +{ + long worktime = 23400; + + int breaktime = get_break_time(worktime); + + assert_int_equal(breaktime, 1800); +} + +void six_hours_and_thirty_one_minute_hours_minutes_thirty_one_minute_break() +{ + long worktime = 23460; + + int breaktime = get_break_time(worktime); + + assert_int_equal(breaktime, 1860); +} + +void six_hours_and_thirty_two_minute_hours_minutes_thirty_two_minute_break() +{ + long worktime = 23520; + + int breaktime = get_break_time(worktime); + + assert_int_equal(breaktime, 1920); +} + +void six_hours_and_fouty_five_minute_hours_minutes_fourty_five_minute_break() +{ + long worktime = 24300; + + int breaktime = get_break_time(worktime); + + assert_int_equal(breaktime, 2700); +} + +void six_hours_and_fouty_six_minute_hours_minutes_fourty_five_minute_break() +{ + long worktime = 24360; + + int breaktime = get_break_time(worktime); + + assert_int_equal(breaktime, 2700); +} + int main() { const struct CMUnitTest tests[] = { @@ -108,7 +153,12 @@ int main() cmocka_unit_test(four_hours_and_fourty_six_minutes_sixteen_minute_break), cmocka_unit_test(four_hours_and_fourty_seven_minutes_seventeen_minute_break), cmocka_unit_test(five_hours_minutes_thirty_minute_break), - cmocka_unit_test(five_and_one_minute_hours_minutes_thirty_minute_break), + cmocka_unit_test(five_hours_and_one_minute_hours_minutes_thirty_minute_break), + cmocka_unit_test(six_hours_and_thirty_minute_hours_minutes_thirty_minute_break), + cmocka_unit_test(six_hours_and_thirty_one_minute_hours_minutes_thirty_one_minute_break), + cmocka_unit_test(six_hours_and_thirty_two_minute_hours_minutes_thirty_two_minute_break), + cmocka_unit_test(six_hours_and_fouty_five_minute_hours_minutes_fourty_five_minute_break), + cmocka_unit_test(six_hours_and_fouty_six_minute_hours_minutes_fourty_five_minute_break), }; return cmocka_run_group_tests(tests, NULL, NULL);