diff options
Diffstat (limited to 'tests/event-loop-test.c')
| -rw-r--r-- | tests/event-loop-test.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/tests/event-loop-test.c b/tests/event-loop-test.c index 3002e6d..e9e636c 100644 --- a/tests/event-loop-test.c +++ b/tests/event-loop-test.c @@ -230,18 +230,33 @@ timer_callback(void *data) TEST(event_loop_timer) { struct wl_event_loop *loop = wl_event_loop_create(); - struct wl_event_source *source; + struct wl_event_source *source1, *source2; int got_it = 0; - source = wl_event_loop_add_timer(loop, timer_callback, &got_it); - assert(source); - wl_event_source_timer_update(source, 10); + source1 = wl_event_loop_add_timer(loop, timer_callback, &got_it); + assert(source1); + wl_event_source_timer_update(source1, 20); + + source2 = wl_event_loop_add_timer(loop, timer_callback, &got_it); + assert(source2); + wl_event_source_timer_update(source2, 100); + + /* Check that the timer marked for 20 msec from now fires within 30 + * msec, and that the timer marked for 100 msec is expected to fire + * within an additional 90 msec. (Some extra wait time is provided to + * account for reasonable code execution / thread preemption delays.) */ + wl_event_loop_dispatch(loop, 0); - assert(!got_it); - wl_event_loop_dispatch(loop, 20); + assert(got_it == 0); + wl_event_loop_dispatch(loop, 30); assert(got_it == 1); + wl_event_loop_dispatch(loop, 0); + assert(got_it == 1); + wl_event_loop_dispatch(loop, 90); + assert(got_it == 2); - wl_event_source_remove(source); + wl_event_source_remove(source1); + wl_event_source_remove(source2); wl_event_loop_destroy(loop); } |
