diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 636ea28eab..adbfa9920f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -25,6 +25,7 @@ macro_add_check_test(check_std_c_jhash std_tests/check_std_c_jhash.c ${TEST_TARG macro_add_check_test(check_std_c_path std_tests/check_std_c_path.c ${TEST_TARGET_LIBRARIES}) macro_add_check_test(check_std_c_rbtree std_tests/check_std_c_rbtree.c ${TEST_TARGET_LIBRARIES}) macro_add_check_test(check_std_c_str std_tests/check_std_c_str.c ${TEST_TARGET_LIBRARIES}) +macro_add_check_test(check_std_c_time std_tests/check_std_c_time.c ${TEST_TARGET_LIBRARIES}) # csync tests macro_add_check_test(check_logger log_tests/check_log.c ${TEST_TARGET_LIBRARIES}) diff --git a/tests/std_tests/check_std_c_time.c b/tests/std_tests/check_std_c_time.c new file mode 100644 index 0000000000..cf124a6b3a --- /dev/null +++ b/tests/std_tests/check_std_c_time.c @@ -0,0 +1,66 @@ +#include + +#include "support.h" + +#include "std/c_path.h" + +START_TEST (check_c_tspecdiff) +{ + struct timespec start, finish, diff; + + clock_gettime(CLOCK_REALTIME, &start); + clock_gettime(CLOCK_REALTIME, &finish); + + diff = c_tspecdiff(finish, start); + + fail_unless(diff.tv_sec == 0, NULL); + fail_unless(diff.tv_nsec > 0, NULL); +} +END_TEST + +START_TEST (check_c_secdiff) +{ + struct timespec start, finish; + double diff; + + clock_gettime(CLOCK_REALTIME, &start); + clock_gettime(CLOCK_REALTIME, &finish); + + diff = c_secdiff(finish, start); + + fail_unless(diff > 0.00 && diff < 1.00, NULL); +} +END_TEST + +static Suite *make_std_c_suite(void) { + Suite *s = suite_create("std:path:c_basename"); + + create_case(s, "check_c_tspecdiff", check_c_tspecdiff); + create_case(s, "check_c_secdiff", check_c_secdiff); + + return s; +} + +int main(int argc, char **argv) { + Suite *s = NULL; + SRunner *sr = NULL; + struct argument_s arguments; + int nf; + + ZERO_STRUCT(arguments); + + cmdline_parse(argc, argv, &arguments); + + s = make_std_c_suite(); + + sr = srunner_create(s); + if (arguments.nofork) { + srunner_set_fork_status(sr, CK_NOFORK); + } + srunner_run_all(sr, CK_VERBOSE); + nf = srunner_ntests_failed(sr); + srunner_free(sr); + + return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} +