X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftimer%2Ftest%2Frun.c;h=51648fb1c7978a5ba51aeb33d03c6b5ea0fb4d74;hp=cebc99ce7e5f69544ce89c7f4dedebfa677ea170;hb=a9d42b8d3bf2b37f47caa428e869fceb4bb33082;hpb=daf9ee7d8e2b683ff05283beb1843611ad8c9e8a diff --git a/ccan/timer/test/run.c b/ccan/timer/test/run.c index cebc99ce..51648fb1 100644 --- a/ccan/timer/test/run.c +++ b/ccan/timer/test/run.c @@ -13,7 +13,6 @@ int main(void) { struct timers timers; struct timer t[64]; - struct list_head expired; struct timeabs earliest; uint64_t i; struct timeabs epoch = { { 0, 0 } }; @@ -25,6 +24,10 @@ int main(void) ok1(timers_check(&timers, NULL)); ok1(!timer_earliest(&timers, &earliest)); + timer_init(&t[0]); + /* timer_del can be called immediately after init. */ + timer_del(&timers, &t[0]); + timer_add(&timers, &t[0], timeabs_from_nsec(1)); ok1(timers_check(&timers, NULL)); ok1(timer_earliest(&timers, &earliest)); @@ -33,10 +36,15 @@ int main(void) ok1(timers_check(&timers, NULL)); ok1(!timer_earliest(&timers, &earliest)); + /* timer_del can be called twice, no problems. */ + timer_del(&timers, &t[0]); + /* Check timer ordering. */ for (i = 0; i < 32; i++) { + timer_init(&t[i*2]); timer_add(&timers, &t[i*2], timeabs_from_nsec(1ULL << i)); ok1(timers_check(&timers, NULL)); + timer_init(&t[i*2+1]); timer_add(&timers, &t[i*2+1], timeabs_from_nsec((1ULL << i) + 1)); ok1(timers_check(&timers, NULL)); } @@ -69,13 +77,11 @@ int main(void) struct timer *t1, *t2; ok1(timer_earliest(&timers, &earliest)); - timers_expire(&timers, earliest, &expired); - - t1 = list_pop(&expired, struct timer, list); + t1 = timers_expire(&timers, earliest); ok1(t1); - t2 = list_pop(&expired, struct timer, list); + t2 = timers_expire(&timers, earliest); ok1(t2); - ok1(list_empty(&expired)); + ok1(!timers_expire(&timers, earliest)); ok1(t1 == &t[i*2] || t1 == &t[i*2+1]); ok1(t2 != t1 && (t2 == &t[i*2] || t2 == &t[i*2+1]));