test: Add context reference counting test
authorJonas Ådahl <jadahl@gmail.com>
Tue, 24 Jun 2014 22:06:59 +0000 (00:06 +0200)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 25 Jun 2014 00:27:03 +0000 (10:27 +1000)
This test relies on valgrind detecting the leak and use-after-free.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
test/misc.c

index ad2e1f66e7d693dee769bd08fc377406d9e2608e..bea7e889e5d2fa85904e58e35e2fa5a30a06fb30 100644 (file)
@@ -371,12 +371,32 @@ START_TEST(event_conversion_touch)
 }
 END_TEST
 
+START_TEST(context_ref_counting)
+{
+       struct libinput *li;
+
+       /* These tests rely on valgrind to detect memory leak and use after
+        * free errors. */
+
+       li = libinput_path_create_context(&simple_interface, NULL);
+       ck_assert_notnull(li);
+       ck_assert_ptr_eq(libinput_unref(li), NULL);
+
+       li = libinput_path_create_context(&simple_interface, NULL);
+       ck_assert_notnull(li);
+       ck_assert_ptr_eq(libinput_ref(li), li);
+       ck_assert_ptr_eq(libinput_unref(li), li);
+       ck_assert_ptr_eq(libinput_unref(li), NULL);
+}
+END_TEST
+
 int main (int argc, char **argv) {
        litest_add_no_device("events:conversion", event_conversion_device_notify);
        litest_add_no_device("events:conversion", event_conversion_pointer);
        litest_add_no_device("events:conversion", event_conversion_pointer_abs);
        litest_add_no_device("events:conversion", event_conversion_key);
        litest_add_no_device("events:conversion", event_conversion_touch);
+       litest_add_no_device("context:refcount", context_ref_counting);
 
        return litest_run(argc, argv);
 }