From ba3186c8bea21cf5027a26103b44523a969cffa3 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 9 Jun 2024 17:34:12 +0200 Subject: [PATCH] add weekday tests --- src/time_format.c | 34 ++++++++++++ src/time_format.h | 1 + tests/time_format_tests.c | 109 +++++++++++++++++++++++++++++++++++++- 3 files changed, 143 insertions(+), 1 deletion(-) diff --git a/src/time_format.c b/src/time_format.c index 1e2ad72..7480426 100644 --- a/src/time_format.c +++ b/src/time_format.c @@ -13,4 +13,38 @@ void get_time_str(time_t time, char* timestr) gmtime_r(&time, &time_cal); sprintf(timestr, "%02d:%02d", time_cal.tm_hour, time_cal.tm_min); +} + +void get_weekday(time_t time, char* weekday) +{ + struct tm weekday_num; + localtime_r(&time, &weekday_num); + + + switch (weekday_num.tm_wday) { + case 0: + sprintf(weekday, "%s", "Sonntag"); + break; + case 1: + sprintf(weekday, "%s", "Montag"); + break; + case 2: + sprintf(weekday, "%s", "Dienstag"); + break; + case 3: + sprintf(weekday, "%s", "Mittwoch"); + break; + case 4: + sprintf(weekday, "%s", "Donnerstag"); + break; + case 5: + sprintf(weekday, "%s", "Freitag"); + break; + case 6: + sprintf(weekday, "%s", "Samstag"); + break; + default: + sprintf(weekday, "%s", "Unknown"); + break; + } } \ No newline at end of file diff --git a/src/time_format.h b/src/time_format.h index cae614e..8cf0e7d 100644 --- a/src/time_format.h +++ b/src/time_format.h @@ -3,5 +3,6 @@ #include void get_time_str(time_t time, char* timestr); +void get_weekday(time_t time, char* weekday); #endif \ No newline at end of file diff --git a/tests/time_format_tests.c b/tests/time_format_tests.c index 4096397..2c7d664 100644 --- a/tests/time_format_tests.c +++ b/tests/time_format_tests.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "../src/time_format.h" void get_zero_hour_and_fifteen_minutes() @@ -48,12 +49,118 @@ void get_minus_five_minutes() timestring = NULL; } +void get_thursday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 0; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Donnerstag"); + + free(weekday); + weekday = NULL; +} + +void get_friday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 86400; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Freitag"); + + free(weekday); + weekday = NULL; +} + +void get_saturday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 172800; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Samstag"); + + free(weekday); + weekday = NULL; +} + +void get_sunday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 259200; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Sonntag"); + + free(weekday); + weekday = NULL; +} + +void get_monday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 345600; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Montag"); + + free(weekday); + weekday = NULL; +} + +void get_thuesday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 432000; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Dienstag"); + + free(weekday); + weekday = NULL; +} + +void get_wednesday() +{ + char* weekday = malloc(sizeof(char) * 11); + memset(weekday, 0, 11); + time_t day = 518400; + + get_weekday(day, weekday); + + assert_string_equal(weekday, "Mittwoch"); + + free(weekday); + weekday = NULL; +} + int main() { const struct CMUnitTest tests[] = { 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_minus_five_minutes), + cmocka_unit_test(get_thursday), + cmocka_unit_test(get_friday), + cmocka_unit_test(get_saturday), + cmocka_unit_test(get_sunday), + cmocka_unit_test(get_monday), + cmocka_unit_test(get_thuesday), + cmocka_unit_test(get_wednesday), + }; return cmocka_run_group_tests(tests, NULL, NULL); -- 2.39.5