diff --git a/test/test_timers.c b/test/test_timers.c index a563cd4..d0e81aa 100644 --- a/test/test_timers.c +++ b/test/test_timers.c @@ -160,6 +160,47 @@ START_TEST (test_timers_remove_from_callback) END_TEST +START_TEST (test_timers_add_remove) + struct UCoreSettableClock clk; + struct TimerTest tt; + struct UCTimers timers; + struct UCTimer timer1; + struct UCTimer timer2; + struct UCTimer timer3; + struct UCTimer timer4; + struct timeval first; + + common_init(&clk, &tt, &timers, &timer1); + memset(&timer2, 0, sizeof timer2); + memset(&timer3, 0, sizeof timer2); + memset(&timer4, 0, sizeof timer2); + + timer1.callback = timer_test_cb_add; + timer2.callback = timer_test_cb_add; + timer3.callback = timer_test_cb_add; + timer4.callback = timer_test_cb_add; + + uc_timers_add(&timers, &timer1, 10, 0); + uc_timers_add(&timers, &timer2, 5 , 0); + uc_timers_add(&timers, &timer3, 15, 1); + uc_timers_add(&timers, &timer4, 15, 1); + + fail_if(uc_timers_first(&timers, &first) != 0); + fail_if(first.tv_sec != TEST_TIMER_START + 5); + fail_if(first.tv_usec != 0); + + fail_if(uc_timers_count(&timers) != 4); + + uc_timers_remove(&timers, &timer1); + uc_timers_remove(&timers, &timer2); + uc_timers_remove(&timers, &timer3); + uc_timers_remove(&timers, &timer4); + + fail_if(uc_timers_count(&timers) != 0); + fail_if(uc_timers_first(&timers, &first) == 0); + +END_TEST + Suite *timers_suite(void) { @@ -168,6 +209,7 @@ Suite *timers_suite(void) tcase_add_test(tc, test_timers_simple); tcase_add_test(tc, test_timers_add_from_callback); tcase_add_test(tc, test_timers_remove_from_callback); + tcase_add_test(tc, test_timers_add_remove); suite_add_tcase(s, tc);