test: add tests for epoll_wait() failure modes

This commit is contained in:
Bert Belder 2017-12-04 23:22:03 +01:00
parent a2f6609d57
commit af9a6eb40f

View File

@ -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);