Blame test/test-common.c

Packit Service b8eee4
/*
Packit Service b8eee4
 * Copyright © 2013 Red Hat, Inc.
Packit Service b8eee4
 *
Packit Service b8eee4
 * Permission to use, copy, modify, distribute, and sell this software and its
Packit Service b8eee4
 * documentation for any purpose is hereby granted without fee, provided that
Packit Service b8eee4
 * the above copyright notice appear in all copies and that both that copyright
Packit Service b8eee4
 * notice and this permission notice appear in supporting documentation, and
Packit Service b8eee4
 * that the name of the copyright holders not be used in advertising or
Packit Service b8eee4
 * publicity pertaining to distribution of the software without specific,
Packit Service b8eee4
 * written prior permission.  The copyright holders make no representations
Packit Service b8eee4
 * about the suitability of this software for any purpose.  It is provided "as
Packit Service b8eee4
 * is" without express or implied warranty.
Packit Service b8eee4
 *
Packit Service b8eee4
 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
Packit Service b8eee4
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
Packit Service b8eee4
 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
Packit Service b8eee4
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
Packit Service b8eee4
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
Packit Service b8eee4
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
Packit Service b8eee4
 * OF THIS SOFTWARE.
Packit Service b8eee4
 */
Packit Service b8eee4
Packit Service b8eee4
#include <config.h>
Packit Service b8eee4
#include <check.h>
Packit Service b8eee4
#include <errno.h>
Packit Service b8eee4
#include <fcntl.h>
Packit Service b8eee4
#include <stdio.h>
Packit Service b8eee4
Packit Service b8eee4
#include "test-common.h"
Packit Service b8eee4
Packit Service b8eee4
void test_logfunc_abort_on_error(enum libevdev_log_priority priority,
Packit Service b8eee4
				 void *data,
Packit Service b8eee4
				 const char *file, int line,
Packit Service b8eee4
				 const char *func,
Packit Service b8eee4
				 const char *format, va_list args)
Packit Service b8eee4
{
Packit Service b8eee4
	vprintf(format, args);
Packit Service b8eee4
	ck_abort();
Packit Service b8eee4
}
Packit Service b8eee4
Packit Service b8eee4
void test_logfunc_ignore_error(enum libevdev_log_priority priority,
Packit Service b8eee4
			       void *data,
Packit Service b8eee4
			       const char *file, int line,
Packit Service b8eee4
			       const char *func,
Packit Service b8eee4
			       const char *format, va_list args)
Packit Service b8eee4
{
Packit Service b8eee4
}
Packit Service b8eee4
Packit Service b8eee4
void test_create_device(struct uinput_device **uidev_return,
Packit Service b8eee4
			struct libevdev **dev_return,
Packit Service b8eee4
			...)
Packit Service b8eee4
{
Packit Service b8eee4
	int rc, fd;
Packit Service b8eee4
	struct uinput_device *uidev;
Packit Service b8eee4
	struct libevdev *dev;
Packit Service b8eee4
	va_list args;
Packit Service b8eee4
Packit Service b8eee4
	va_start(args, dev_return);
Packit Service b8eee4
Packit Service b8eee4
	rc = uinput_device_new_with_events_v(&uidev, TEST_DEVICE_NAME, DEFAULT_IDS, args);
Packit Service b8eee4
	va_end(args);
Packit Service b8eee4
Packit Service b8eee4
	ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc));
Packit Service b8eee4
Packit Service b8eee4
	fd = uinput_device_get_fd(uidev);
Packit Service b8eee4
Packit Service b8eee4
	rc = libevdev_new_from_fd(fd, &dev;;
Packit Service b8eee4
	ck_assert_msg(rc == 0, "Failed to init device device: %s", strerror(-rc));
Packit Service b8eee4
	rc = fcntl(fd, F_SETFL, O_NONBLOCK);
Packit Service b8eee4
	ck_assert_msg(rc == 0, "fcntl failed: %s", strerror(errno));
Packit Service b8eee4
Packit Service b8eee4
	*uidev_return = uidev;
Packit Service b8eee4
	*dev_return = dev;
Packit Service b8eee4
}
Packit Service b8eee4
Packit Service b8eee4
void test_create_abs_device(struct uinput_device **uidev_return,
Packit Service b8eee4
			    struct libevdev **dev_return,
Packit Service b8eee4
			    int nabs,
Packit Service b8eee4
			    const struct input_absinfo *abs,
Packit Service b8eee4
			    ...)
Packit Service b8eee4
{
Packit Service b8eee4
	int rc, fd;
Packit Service b8eee4
	struct uinput_device *uidev;
Packit Service b8eee4
	struct libevdev *dev;
Packit Service b8eee4
	va_list args;
Packit Service b8eee4
Packit Service b8eee4
	uidev = uinput_device_new(TEST_DEVICE_NAME);
Packit Service b8eee4
	ck_assert(uidev != NULL);
Packit Service b8eee4
Packit Service b8eee4
	va_start(args, abs);
Packit Service b8eee4
	rc = uinput_device_set_event_bits_v(uidev, args);
Packit Service b8eee4
	va_end(args);
Packit Service b8eee4
Packit Service b8eee4
	while (--nabs >= 0) {
Packit Service b8eee4
		int code;
Packit Service b8eee4
		struct input_absinfo a;
Packit Service b8eee4
Packit Service b8eee4
		code = abs[nabs].value;
Packit Service b8eee4
		a = abs[nabs];
Packit Service b8eee4
		a.value = 0;
Packit Service b8eee4
Packit Service b8eee4
		rc = uinput_device_set_abs_bit(uidev, code, &a);
Packit Service b8eee4
		ck_assert_msg(rc == 0, "for abs field %d\n", nabs);
Packit Service b8eee4
	}
Packit Service b8eee4
Packit Service b8eee4
	rc = uinput_device_create(uidev);
Packit Service b8eee4
	ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc));
Packit Service b8eee4
Packit Service b8eee4
	fd = uinput_device_get_fd(uidev);
Packit Service b8eee4
Packit Service b8eee4
	rc = libevdev_new_from_fd(fd, &dev;;
Packit Service b8eee4
	ck_assert_msg(rc == 0, "Failed to init device device: %s", strerror(-rc));
Packit Service b8eee4
	rc = fcntl(fd, F_SETFL, O_NONBLOCK);
Packit Service b8eee4
	ck_assert_msg(rc == 0, "fcntl failed: %s", strerror(errno));
Packit Service b8eee4
Packit Service b8eee4
	*uidev_return = uidev;
Packit Service b8eee4
	*dev_return = dev;
Packit Service b8eee4
}