From: Nick Mathewson Date: Tue, 21 Jul 2009 19:20:44 +0000 (+0000) Subject: Push coverage of event.c a little higher X-Git-Tag: release-2.0.3-alpha~161 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49de08ef35c77d44cbf7fb4698d0d91612f616ad;p=libevent Push coverage of event.c a little higher svn:r1373 --- diff --git a/test/regress.c b/test/regress.c index 8bc5d756..4ffc3a2c 100644 --- a/test/regress.c +++ b/test/regress.c @@ -796,13 +796,16 @@ test_signal_switchbase(void) exit(1); } + tt_ptr_op(event_get_base(&ev1), ==, base1); + tt_ptr_op(event_get_base(&ev2), ==, base2); + test_ok = 0; /* can handle signal before loop is called */ raise(SIGUSR1); event_base_loop(base2, EVLOOP_NONBLOCK); if (is_kqueue) { if (!test_ok) - goto done; + goto end; test_ok = 0; } event_base_loop(base1, EVLOOP_NONBLOCK); @@ -815,7 +818,7 @@ test_signal_switchbase(void) event_base_loop(base1, EVLOOP_NONBLOCK); event_base_loop(base2, EVLOOP_NONBLOCK); } - done: +end: event_base_free(base1); event_base_free(base2); cleanup_test(); @@ -964,6 +967,29 @@ end: ; } +static void +test_manipulate_active_events(void *ptr) +{ + struct basic_test_data *data = ptr; + struct event_base *base = data->base; + struct event ev1; + + event_assign(&ev1, base, -1, EV_TIMEOUT, dummy_read_cb, NULL); + + /* Make sure an active event is pending. */ + event_active(&ev1, EV_READ, 1); + tt_int_op(event_pending(&ev1, EV_READ|EV_TIMEOUT|EV_WRITE, NULL), + ==, EV_READ); + + /* Make sure that activating an event twice works. */ + event_active(&ev1, EV_WRITE, 1); + tt_int_op(event_pending(&ev1, EV_READ|EV_TIMEOUT|EV_WRITE, NULL), + ==, EV_READ|EV_WRITE); + +end: + event_del(&ev1); +} + static void test_event_base_new(void *ptr) { @@ -1759,6 +1785,8 @@ struct testcase_t main_testcases[] = { BASIC(event_base_new, TT_FORK|TT_NEED_SOCKETPAIR), BASIC(free_active_base, TT_FORK|TT_NEED_SOCKETPAIR), + BASIC(manipulate_active_events, TT_FORK|TT_NEED_BASE), + /* These are still using the old API */ LEGACY(persistent_timeout, TT_FORK|TT_NEED_BASE), LEGACY(priorities, TT_FORK|TT_NEED_BASE),