test: Add ability to add test devices to existing libinput context
authorJonas Ådahl <jadahl@gmail.com>
Sat, 22 Feb 2014 14:06:34 +0000 (15:06 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Tue, 22 Apr 2014 22:07:40 +0000 (00:07 +0200)
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
test/litest.c
test/litest.h

index 8eebf6eb63fad4b9f26f10ca6bf7f58aa7d5de82..f329312ea5333f93ba0a7823c393dbca7d7ed783 100644 (file)
@@ -451,12 +451,22 @@ litest_create(enum litest_device_type which,
 
 }
 
+struct libinput *
+litest_create_context(void)
+{
+       struct libinput *libinput =
+               libinput_path_create_context(&interface, NULL);
+       ck_assert_notnull(libinput);
+       return libinput;
+}
+
 struct litest_device *
-litest_create_device_with_overrides(enum litest_device_type which,
-                                   const char *name_override,
-                                   struct input_id *id_override,
-                                   const struct input_absinfo *abs_override,
-                                   const int *events_override)
+litest_add_device_with_overrides(struct libinput *libinput,
+                                enum litest_device_type which,
+                                const char *name_override,
+                                struct input_id *id_override,
+                                const struct input_absinfo *abs_override,
+                                const int *events_override)
 {
        struct litest_device *d;
        int fd;
@@ -477,9 +487,7 @@ litest_create_device_with_overrides(enum litest_device_type which,
        rc = libevdev_new_from_fd(fd, &d->evdev);
        ck_assert_int_eq(rc, 0);
 
-       d->libinput = libinput_path_create_context(&interface, NULL);
-       ck_assert(d->libinput != NULL);
-
+       d->libinput = libinput;
        d->libinput_device = libinput_path_add_device(d->libinput, path);
        ck_assert(d->libinput_device != NULL);
        libinput_device_ref(d->libinput_device);
@@ -493,6 +501,24 @@ litest_create_device_with_overrides(enum litest_device_type which,
        return d;
 }
 
+struct litest_device *
+litest_create_device_with_overrides(enum litest_device_type which,
+                                   const char *name_override,
+                                   struct input_id *id_override,
+                                   const struct input_absinfo *abs_override,
+                                   const int *events_override)
+{
+       struct litest_device *dev =
+               litest_add_device_with_overrides(litest_create_context(),
+                                                which,
+                                                name_override,
+                                                id_override,
+                                                abs_override,
+                                                events_override);
+       dev->owns_context = true;
+       return dev;
+}
+
 struct litest_device *
 litest_create_device(enum litest_device_type which)
 {
@@ -520,7 +546,8 @@ litest_delete_device(struct litest_device *d)
                return;
 
        libinput_device_unref(d->libinput_device);
-       libinput_destroy(d->libinput);
+       if (d->owns_context)
+               libinput_destroy(d->libinput);
        libevdev_free(d->evdev);
        libevdev_uinput_destroy(d->uinput);
        memset(d,0, sizeof(*d));
index 85748ccc9415d02c74bf2ce5d569d72a386b79e8..dbe878ba809c7efb908fcd820a03087ac491945f 100644 (file)
@@ -61,10 +61,13 @@ struct litest_device {
        struct libevdev *evdev;
        struct libevdev_uinput *uinput;
        struct libinput *libinput;
+       bool owns_context;
        struct libinput_device *libinput_device;
        struct litest_device_interface *interface;
 };
 
+struct libinput *litest_create_context(void);
+
 void litest_add(const char *name, void *func,
                enum litest_device_feature required_feature,
                enum litest_device_feature excluded_feature);
@@ -83,6 +86,14 @@ litest_create_device_with_overrides(enum litest_device_type which,
                                    struct input_id *id_override,
                                    const struct input_absinfo *abs_override,
                                    const int *events_override);
+struct litest_device *
+litest_add_device_with_overrides(struct libinput *libinput,
+                                enum litest_device_type which,
+                                const char *name_override,
+                                struct input_id *id_override,
+                                const struct input_absinfo *abs_override,
+                                const int *events_override);
+
 struct litest_device *litest_current_device(void);
 void litest_delete_device(struct litest_device *d);
 int litest_handle_events(struct litest_device *d);
@@ -118,4 +129,8 @@ struct libevdev_uinput * litest_create_uinput_abs_device(const char *name,
                                                         const struct input_absinfo *abs,
                                                         ...);
 
+#ifndef ck_assert_notnull
+#define ck_assert_notnull(ptr) ck_assert_ptr_ne(ptr, NULL)
+#endif
+
 #endif /* LITEST_H */