From 5ef8ff19ae391625a3cdaf79dab5d295c653ddbe Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 23 Jun 2024 14:25:22 +0200 Subject: [PATCH] add test for correct saldo seconds --- src/time_format.c | 11 ++++++++++- tests/time_format_tests.c | 13 ++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/time_format.c b/src/time_format.c index eec05ed..66f74d3 100644 --- a/src/time_format.c +++ b/src/time_format.c @@ -45,11 +45,20 @@ void get_seconds_from_string(const char* timestr, time_t* seconds) memset(str, 0, 7); strncpy(str, timestr, 7); first_str_pos = str; + int minus = 0; + + if (str[0] == '-') + minus = 1; str = strtok(str, ":"); *seconds = atol(str) * ONE_HOUR; str = strtok(NULL, ":"); - *seconds += atol(str) * 60; + + if (minus) + *seconds += atol(str) * 60 * -1; + else + *seconds += atol(str) * 60; + free(first_str_pos); first_str_pos = NULL; diff --git a/tests/time_format_tests.c b/tests/time_format_tests.c index 011df3b..ee159e8 100644 --- a/tests/time_format_tests.c +++ b/tests/time_format_tests.c @@ -290,6 +290,16 @@ void get_seconds_from_str() assert_int_equal(seconds, 15300); } +void get_seconds_from_str_minus() +{ + const char* timestr = "-04:15"; + time_t seconds = 0; + + get_seconds_from_string(timestr, &seconds); + + assert_int_equal(seconds, -15300); +} + int main() { const struct CMUnitTest tests[] = { @@ -314,7 +324,8 @@ int main() cmocka_unit_test(get_short_thursday), cmocka_unit_test(get_short_friday), cmocka_unit_test(get_short_saturday), - cmocka_unit_test(get_seconds_from_str) + cmocka_unit_test(get_seconds_from_str), + cmocka_unit_test(get_seconds_from_str_minus) }; return cmocka_run_group_tests(tests, NULL, NULL); -- 2.39.5