From a6d8d56052ee416dfcfde51811d7870388265434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Sat, 2 Mar 2013 18:39:52 +0100 Subject: [PATCH] Add clock test, and fix ucore_clock.h header --- include/ucore/ucore_clock.h | 4 +- test/test_clock.c | 78 +++++++++++++++++++++++++++++++++++++ test/test_runner.c | 4 +- 3 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 test/test_clock.c diff --git a/include/ucore/ucore_clock.h b/include/ucore/ucore_clock.h index 67d2c24..b3e6cf2 100644 --- a/include/ucore/ucore_clock.h +++ b/include/ucore/ucore_clock.h @@ -84,7 +84,7 @@ void ucore_settable_clock_init(struct ucore_settable_clock *clock); /** * Set the new timeval this clock will return **/ -void ucore_cached_clock_set_tv(struct ucore_settable_clock *clock, +void ucore_settable_clock_set_tv(struct ucore_settable_clock *clock, const struct timeval *tv); /** @@ -92,7 +92,7 @@ void ucore_cached_clock_set_tv(struct ucore_settable_clock *clock, * Convenience function that takes seconds/microseconds as arguments * instead of a struct timeval. **/ -void ucore_cached_clock_set(struct ucore_settable_clock *clock, +void ucore_settable_clock_set(struct ucore_settable_clock *clock, time_t secs, suseconds_t usecs); #endif diff --git a/test/test_clock.c b/test/test_clock.c new file mode 100644 index 0000000..b83e31a --- /dev/null +++ b/test/test_clock.c @@ -0,0 +1,78 @@ +#include +#include +#include + + +START_TEST (test_settable_clock) + struct ucore_settable_clock my_clock; + struct timeval tv; + struct timeval tv_tmp; + + ucore_settable_clock_init(&my_clock); + + my_clock.clock.now(&my_clock.clock, &tv); + + fail_if(tv.tv_sec != 0); + fail_if(tv.tv_usec != 0); + + ucore_settable_clock_set(&my_clock, 10001, 1002); + + my_clock.clock.now(&my_clock.clock, &tv); + + fail_if(tv.tv_sec != 10001); + fail_if(tv.tv_usec != 1002); + + my_clock.clock.now(&my_clock.clock, &tv); + + tv_tmp.tv_sec = 123456789; + tv_tmp.tv_usec = 44; + + ucore_settable_clock_set_tv(&my_clock, &tv_tmp); + + my_clock.clock.now(&my_clock.clock, &tv); + + fail_if(tv.tv_sec != 123456789); + fail_if(tv.tv_usec != 44); + +END_TEST + +START_TEST (test_cached_clock) + struct ucore_cached_clock my_clock; + struct timeval tv1,tv2; + + ucore_cached_clock_init(&my_clock, &ucore_timeofday_clock); + + my_clock.clock.now(&my_clock.clock, &tv1); + + fail_if(tv1.tv_sec == 0); + fail_if(tv1.tv_usec == 0); + + my_clock.clock.now(&my_clock.clock, &tv1); + usleep(100); + my_clock.clock.now(&my_clock.clock, &tv2); + + fail_if(timercmp(&tv1, &tv2, !=)); + + usleep(100); + ucore_cached_clock_update(&my_clock); + my_clock.clock.now(&my_clock.clock, &tv1); + + fail_if(!timercmp(&tv1, &tv2, !=)); + + +END_TEST + + +Suite *clock_suite(void) +{ + Suite *s = suite_create("clock"); + TCase *tc = tcase_create("clock tests"); + + tcase_add_test(tc, test_settable_clock); + tcase_add_test(tc, test_cached_clock); + + suite_add_tcase(s, tc); + + return s; +} + diff --git a/test/test_runner.c b/test/test_runner.c index 16efadb..e99966b 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -15,6 +15,7 @@ extern Suite *pack_suite(void); extern Suite *logging_suite(void); extern Suite *threadqueue_suite(void); extern Suite *buffer_suite(void); +extern Suite *clock_suite(void); static suite_func suites[] = { bitvec_suite, @@ -25,7 +26,8 @@ static suite_func suites[] = { pack_suite, logging_suite, threadqueue_suite, - buffer_suite + buffer_suite, + clock_suite, }; int