]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
calc time to next day
authorBastian Dehn <hhaalo@arcor.de>
Sun, 19 Oct 2025 08:51:35 +0000 (10:51 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 19 Oct 2025 08:53:22 +0000 (10:53 +0200)
src/worktime.c
tests/worktime_tests.c

index 0506f62aaa1f90500b5325afedfe10c8a5133c70..8e812e49f5d3a2c79728a9ebd05e5b88a52383d1 100644 (file)
@@ -2,12 +2,14 @@
 #include "break.h"
 
 #define TEN_HOURS 36000
+#define ONE_DAY 86400
 
 time_t get_brutto_worktime(time_t begin, time_t now)
 {
-       time_t worktime = difftime(now, begin);
+       if (begin > now)
+               return difftime(now + ONE_DAY, begin);
 
-       return worktime;
+       return difftime(now, begin);
 }
 
 time_t get_current_worktime(time_t begin, time_t now)
index e12764d3b0555dd0ea8435086bfb5d3959ced8c3..bf0472b32803671d71ef9a380427129eff1c4a05 100644 (file)
@@ -44,6 +44,16 @@ void get_brutto_worktime_four_hours_fourty_five_test()
        assert_int_equal(result, 15180);
 }
 
+void get_brutto_worktime_diff_twenty_three_to_six_thirdy()
+{
+       time_t begin = 82800;
+       time_t now = 23400;
+
+       time_t result = get_brutto_worktime(begin, now);
+
+       assert_int_equal(result, 27000);
+}
+
 void get_diff_to_end_eight_hour_end_test()
 {
        time_t begin = 23400;
@@ -71,6 +81,7 @@ int main()
                cmocka_unit_test(get_ten_hour_end_time_test),
                cmocka_unit_test(get_current_worktime_four_hours_thirteen_test),
                cmocka_unit_test(get_brutto_worktime_four_hours_fourty_five_test),
+               cmocka_unit_test(get_brutto_worktime_diff_twenty_three_to_six_thirdy),
                cmocka_unit_test(get_diff_to_end_eight_hour_end_test),
                cmocka_unit_test(get_diff_to_end_ten_hour_end_test),
        };