Files
libucore/test/test_clock.c
T
2013-03-02 18:39:52 +01:00

79 lines
1.6 KiB
C

#include <check.h>
#include <unistd.h>
#include <ucore/ucore_clock.h>
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;
}