]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
add max break time
authorBastian Dehn <hhaalo@arcor.de>
Sun, 9 Jun 2024 08:55:00 +0000 (10:55 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 9 Jun 2024 08:55:00 +0000 (10:55 +0200)
src/break.c
tests/main.c

index 3e9b7acdeeaab60044c5bff79d39fa8c8f5b0983..25e32afeee4e59475facb36b9fdce3373b5fd746 100644 (file)
@@ -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;
 
index efa67cf5da1a24240e10a9eb2218ab3496f594a7..4c2d2f5ca476c3f48ec9acd09cc36edcb2c94d36 100644 (file)
@@ -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);