]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
add method for overtime hours
authorBastian Dehn <hhaalo@arcor.de>
Sat, 22 Jun 2024 08:03:57 +0000 (10:03 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 22 Jun 2024 08:03:57 +0000 (10:03 +0200)
src/time_format.c
src/time_format.h
tests/time_format_tests.c

index e8eccc0753cc1aa995e692c1785ac6e11a7e0ca4..1a6d060fcfcc25fe0cc7c263d4e11840e4d76d00 100644 (file)
@@ -20,6 +20,22 @@ void get_time_str(time_t timediff, char* timestr)
        sprintf(timestr, "%02d:%02d", hour, minutes);
 }
 
+void get_time_str_overtime(time_t timediff, char* timestr)
+{
+       int hour = timediff / ONE_HOUR;
+       int rest_minutes = timediff % ONE_HOUR;
+       int minutes = rest_minutes / MINUTE;
+
+       if (timediff < 0) {
+               hour *= -1;
+               minutes *= -1;
+               sprintf(timestr, "%02d:%02d", hour, minutes);
+               return;
+       }
+
+       sprintf(timestr, "-%02d:%02d", hour, minutes);
+}
+
 void get_weekday(int wday, char* weekday)
 {
        switch (wday) {
index d4e53ec0f199848ee3117942840f8d2cc35c91f6..8dcaa02f0d5ad35c74efc0fd48fc70b5a5835cb5 100644 (file)
@@ -2,7 +2,8 @@
 #define TIME_FORMAT_H
 #include <time.h>
 
-void get_time_str(time_t time, char* timestr);
+void get_time_str(time_t timediff, char* timestr);
+void get_time_str_overtime(time_t timediff, char* timestr);
 void get_weekday(int wday, char* weekday);
 void get_short_weekday(int wday, char* weekday);
 
index 1dee4cf62a89b87f9701d9d9fc20afd9156b4f4b..17ef5892f5d63f07594a2637020e175856d11bea 100644 (file)
@@ -49,6 +49,48 @@ void get_minus_five_minutes()
        timestring = NULL;
 }
 
+void get_zero_hour_and_fifteen_minutes_overtime()
+{
+       time_t time = 900;
+       char* timestring = malloc(sizeof(char) * 7);
+       memset(timestring, 0, 7);
+
+       get_time_str_overtime(time, timestring);
+
+       assert_string_equal(timestring, "-00:15");
+
+       free(timestring);
+       timestring = NULL;
+}
+
+void get_five_hour_fourty_five_overtime()
+{
+       time_t time = 20700;
+       char* timestring = malloc(sizeof(char) * 7);
+       memset(timestring, 0, 7);
+
+       get_time_str_overtime(time, timestring);
+
+       assert_string_equal(timestring, "-05:45");
+
+       free(timestring);
+       timestring = NULL;
+}
+
+void get_minus_five_minutes_overtime()
+{
+       time_t time = -300;
+       char* timestring = malloc(sizeof(char) * 7);
+       memset(timestring, 0, 7);
+
+       get_time_str_overtime(time, timestring);
+
+       assert_string_equal(timestring, "00:05");
+
+       free(timestring);
+       timestring = NULL;
+}
+
 void get_thursday()
 {
        char* weekday = malloc(sizeof(char) * 11);
@@ -230,6 +272,9 @@ int main()
                cmocka_unit_test(get_zero_hour_and_fifteen_minutes),
                cmocka_unit_test(get_five_hour_fourty_five),
                cmocka_unit_test(get_minus_five_minutes),
+               cmocka_unit_test(get_zero_hour_and_fifteen_minutes_overtime),
+               cmocka_unit_test(get_five_hour_fourty_five_overtime),
+               cmocka_unit_test(get_minus_five_minutes_overtime),
                cmocka_unit_test(get_thursday),
                cmocka_unit_test(get_friday),
                cmocka_unit_test(get_saturday),