From af9a6eb40f109b839647edc0064c7686824db828 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Mon, 4 Dec 2017 23:22:03 +0100 Subject: [PATCH] test: add tests for epoll_wait() failure modes --- test/test-error.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/test/test-error.c b/test/test-error.c index 9096516..3bb5c4e 100644 --- a/test/test-error.c +++ b/test/test-error.c @@ -58,7 +58,49 @@ int main(void) { { /* Test epoll_wait() errors. */ - /* TODO. */ + HANDLE valid_ephnd; + struct epoll_event evs[1]; + int r; + + valid_ephnd = epoll_create1(0); + check(valid_ephnd != NULL); + + /* Invalid `ephnd` */ + r = epoll_wait(NULL, evs, 1, 0); + check_error(r == -1, EBADF, ERROR_INVALID_HANDLE); + r = epoll_wait(INVALID_HANDLE_VALUE, evs, 1, 0); + check_error(r == -1, EBADF, ERROR_INVALID_HANDLE); + r = epoll_wait(bad_value, evs, 1, 0); + check_error(r == -1, EBADF, ERROR_INVALID_HANDLE); + r = epoll_wait(bad_type, evs, 1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + + /* Zero `maxevents` */ + r = epoll_wait(valid_ephnd, evs, 0, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(NULL, evs, 0, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(INVALID_HANDLE_VALUE, evs, 0, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(bad_value, evs, 0, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(bad_type, evs, 0, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + + /* Negative `maxevents` */ + r = epoll_wait(valid_ephnd, evs, -1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(NULL, evs, -1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(INVALID_HANDLE_VALUE, evs, -1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(bad_value, evs, -1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + r = epoll_wait(bad_type, evs, -1, 0); + check_error(r == -1, EINVAL, ERROR_INVALID_PARAMETER); + + r = epoll_close(valid_ephnd); + check(r == 0); } CloseHandle(bad_type);