Test rework #7: Eeze
authorVincent Torri <vincent dot torri at gmail dot com>
Thu, 4 Feb 2016 13:35:53 +0000 (14:35 +0100)
committerTom Hacohen <tom@stosb.com>
Tue, 16 Feb 2016 12:41:06 +0000 (12:41 +0000)
eeze_suite.c has also been splitted

src/Makefile_Eeze.am
src/tests/eeze/eeze_suite.c
src/tests/eeze/eeze_suite.h [new file with mode: 0644]
src/tests/eeze/eeze_test_init.c [new file with mode: 0644]
src/tests/eeze/eeze_test_net.c [new file with mode: 0644]
src/tests/eeze/eeze_test_sensor.c [new file with mode: 0644]
src/tests/eeze/eeze_test_udev.c [new file with mode: 0644]

index 31b0cfb..0852d87 100644 (file)
@@ -162,7 +162,13 @@ if EFL_ENABLE_TESTS
 check_PROGRAMS += tests/eeze/eeze_suite
 TESTS += tests/eeze/eeze_suite
 
-tests_eeze_eeze_suite_SOURCES = tests/eeze/eeze_suite.c
+tests_eeze_eeze_suite_SOURCES = \
+tests/eeze/eeze_suite.c \
+tests/eeze/eeze_test_init.c \
+tests/eeze/eeze_test_net.c \
+tests/eeze/eeze_test_sensor.c \
+tests/eeze/eeze_test_udev.c \
+tests/eeze/eeze_suite.h
 tests_eeze_eeze_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
 @EEZE_CFLAGS@ \
 -DTESTS_SRC_DIR=\"$(top_srcdir)/src/tests/eeze\" \
index c1b496c..48884dc 100644 (file)
 # include <config.h>
 #endif /* ifdef HAVE_CONFIG_H */
 
-#include <stdlib.h>
-#include <stdio.h>
+#include "ecore_suite.h"
+#include "../efl_check.h"
 
-#include <Eina.h>
-
-#include <check.h>
-
-#include <Eeze.h>
-#include <Eeze_Sensor.h>
-#include <Eeze_Net.h>
-
-#include "eeze_udev_private.h"
-#include "eeze_sensor_private.h"
-
-START_TEST(eeze_test_init)
-{
-   int ret;
-
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-static void
-catch_events(const char *device EINA_UNUSED, Eeze_Udev_Event  event EINA_UNUSED,
-             void *data EINA_UNUSED, Eeze_Udev_Watch *watch EINA_UNUSED)
-{
-}
-
-#if 0
-// FIXME split udev tests into pieces here
-START_TEST(eeze_test_udev_types)
-{
-   Eina_List *type;
-
-   eeze_init();
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NONE, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_KEYBOARD, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_MOUSE, NULL);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_TOUCHPAD, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_MOUNTABLE, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_REMOVABLE, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_CDROM, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_AC, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_BAT, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NET, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_V4L, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_BLUETOOTH, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_JOYSTICK, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   type = eeze_udev_find_by_type(0, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-
-   eeze_shutdown();
-}
-END_TEST
-#endif
-
-START_TEST(eeze_test_udev_watch)
-{
-   Eeze_Udev_Watch *watch;
-
-   ecore_init();
-   eeze_init();
-
-   /* watch never gets triggered as this is run without user interaction */
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_KEYBOARD, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_DRIVE_INTERNAL, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_POWER_AC, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_NET, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_V4L, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_BLUETOOTH, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_NONE, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
-   eeze_udev_watch_del(watch);
-
-   eeze_shutdown();
-   ecore_shutdown();
-}
-END_TEST
-
-START_TEST(eeze_test_udev_syspath)
-{
-   Eina_List *type, *l;
-   const char *name;
-   Eina_Bool r;
-
-   eeze_init();
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_KEYBOARD, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FOREACH(type, l, name)
-     {
-         eeze_udev_syspath_get_devpath(name);
-         eeze_udev_find_similar_from_syspath(name);
-         eeze_udev_find_similar_from_syspath(NULL);
-         eeze_udev_syspath_get_parent(name);
-         eeze_udev_syspath_get_parent(NULL);
-         eeze_udev_syspath_get_parents(name);
-         eeze_udev_syspath_get_parents(NULL);
-         eeze_udev_syspath_get_devname(name);
-         eeze_udev_syspath_get_devname(NULL);
-         eeze_udev_syspath_get_subsystem(name);
-         eeze_udev_syspath_get_sysattr(name, "manufacturer");
-         eeze_udev_syspath_is_mouse(name);
-         eeze_udev_syspath_is_kbd(name);
-         eeze_udev_syspath_is_touchpad(name);
-         eeze_udev_syspath_is_joystick(name);
-         eeze_udev_walk_get_sysattr(name, "manufacturer");
-         eeze_udev_find_by_sysattr("manufacturer", NULL);
-         eeze_udev_find_by_sysattr(NULL, NULL);
-         eeze_udev_walk_check_sysattr(name, "manufacturer", NULL);
-         eeze_udev_walk_check_sysattr(name, "manufacturer", "foo");
-         eeze_udev_walk_get_sysattr(NULL, "manufacturer");
-         eeze_udev_walk_get_sysattr(name, NULL);
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_MOUSE, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FOREACH(type, l, name)
-     {
-        r = eeze_udev_syspath_is_mouse(name);
-        fail_unless(r);
-
-        eeze_udev_syspath_is_touchpad(name);
-        eeze_udev_syspath_is_joystick(name);
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_TOUCHPAD, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FOREACH(type, l, name)
-     {
-        r = eeze_udev_syspath_is_touchpad(name);
-        fail_unless(r);
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_JOYSTICK, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FOREACH(type, l, name)
-     {
-        r = eeze_udev_syspath_is_joystick(name);
-        fail_unless(r);
-     }
-
-   eeze_udev_devpath_get_syspath("/dev/null");
-
-   eeze_shutdown();
-}
-END_TEST
-
-START_TEST(eeze_test_udev_attr)
-{
-   Eina_List *type;
-   const char *name, *check, *check2;
-
-   eeze_init();
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   eeze_udev_find_by_filter("backlight", NULL, NULL);
-
-   eeze_udev_find_by_filter(NULL, NULL, NULL);
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NET, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FREE(type, name)
-     {
-        check = eeze_udev_syspath_get_property(name, "INTERFACE");
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FREE(type, name)
-     {
-        check = eeze_udev_syspath_get_property(name, "ID_SERIAL");
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_REMOVABLE, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FREE(type, name)
-     {
-        if ((check = eeze_udev_syspath_get_sysattr(name, "model")))
-          {
-             check2 = eeze_udev_syspath_get_subsystem(name);
-          }
-     }
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_V4L, NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   EINA_LIST_FREE(type, name)
-     {
-       if ((check = eeze_udev_syspath_get_property(name, "DEVNAME")))
-        {
-          if ((check2 = eeze_udev_syspath_get_sysattr(name, "name")))
-            {
-              eina_stringshare_del(check2);
-            }
-          eina_stringshare_del(check);
-        }
-       eina_stringshare_del(name);
-     }
-
-   eeze_shutdown();
-}
-END_TEST
-
-/*
-START_TEST(eeze_test_udev_device)
-{
-   Eina_List *type, *l;
-   _udev_device *device, *device2;
-   const char *name;
-
-   eeze_init();
-
-   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
-   fail_if(type == NULL);
-   type = eeze_udev_find_unlisted_similar(type);
-   fail_if(type == NULL);
-   EINA_LIST_FOREACH(type, l, name)
-     {
-         device = _new_device(name);
-         fail_if(device == NULL);
-         _walk_parents_get_attr(device, "FOO", EINA_FALSE);
-         _walk_parents_get_attr(device, "FOO", EINA_TRUE);
-         _walk_children_get_attr(name, "FOO", "BAR", EINA_FALSE);
-         _walk_children_get_attr(name, "FOO", "BAR", EINA_TRUE);
-     }
-
-   device = _new_device("Wrong path");
-   fail_if(device != NULL);
-
-   device2 = _copy_device(device);
-   fail_if(device2 != NULL);
-
-   eeze_shutdown();
-}
-END_TEST
-*/
-
-START_TEST(eeze_test_net_list)
-{
-   int ret;
-   Eina_List *list = NULL;
-
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   list = eeze_net_list();
-   fail_if(list == NULL);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-START_TEST(eeze_test_net_attr)
-{
-   int ret;
-   int idx = 0;
-   Eeze_Net *net = NULL;
-   const char *tmp = NULL;
-
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   net = eeze_net_new("lo");
-   fail_if(net == NULL);
-
-   tmp = eeze_net_mac_get(net);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   idx = eeze_net_idx_get(net);
-   fail_if(!idx);
-
-   eeze_net_scan(net);
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_IP);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_BROADCAST);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_NETMASK);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_attribute_get(net, "carrier");
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_syspath_get(net);
-   fail_if(tmp == NULL);
-
-   eeze_net_free(net);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-/*
-#ifdef HAVE_IPV6
-START_TEST(eeze_test_net_attr_ipv6)
-{
-   int ret;
-   Eeze_Net *net = NULL;
-   const char *tmp = NULL;
-
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   net = eeze_net_new("lo");
-   fail_if(net == NULL);
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_IP6);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_BROADCAST6);
-   fail_if(tmp == NULL);
-   tmp = NULL;
-
-   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_NETMASK6);
-   fail_if(tmp == NULL);
-
-   eeze_net_free(net);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-#endif
-*/
-
-START_TEST(eeze_test_sensor_read)
-{
-   Eeze_Sensor_Obj *sens = NULL;
-   int ret = 0;
-   float x, y, z;
-   int acc;
-   double timestamp;
-   Eina_Bool rc = EINA_FALSE;
-
-   ecore_init();
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ACCELEROMETER);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
-   fail_if(rc == EINA_FALSE);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_MAGNETIC);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
-   fail_if(rc == EINA_FALSE);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ORIENTATION);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
-   fail_if(rc == EINA_FALSE);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
-   fail_if(rc == EINA_FALSE);
-
-   /* Use gyro with xy here even if it offers xzy */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_xy_get(sens, &x, &y);
-   fail_if(rc == EINA_FALSE);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_PROXIMITY);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_x_get(sens, &x);
-   fail_if(rc == EINA_FALSE);
-
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_read(sens);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_x_get(sens, &x);
-   fail_if(rc == EINA_FALSE);
-
-   /* Call non existing type */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LAST + 1);
-   fail_if(sens != NULL);
-
-   /* Give NULL as sensor object */
-   rc = eeze_sensor_read(NULL);
-   fail_if(rc != EINA_FALSE);
-
-   /* Change sensor type after creation but before read */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   sens->type = EEZE_SENSOR_TYPE_LAST + 1;
-   rc = eeze_sensor_read(sens);
-   fail_if(rc != EINA_FALSE);
-
-   /* Try to read from a type you can't read from */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   sens->type = EEZE_SENSOR_TYPE_LAST;
-   rc = eeze_sensor_read(sens);
-   fail_if(rc != EINA_FALSE);
-
-   /* Try all getter functions with a NULL sensor object */
-   rc = eeze_sensor_xyz_get(NULL, &x, &y, &z);
-   fail_if(rc != EINA_FALSE);
-   rc = eeze_sensor_xy_get(NULL, &x, &y);
-   fail_if(rc != EINA_FALSE);
-   rc = eeze_sensor_x_get(NULL, &x);
-   fail_if(rc != EINA_FALSE);
-   rc = eeze_sensor_accuracy_get(NULL, &acc);
-   fail_if(rc != EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(NULL, &timestamp);
-   fail_if(rc != EINA_FALSE);
-
-   eeze_sensor_free(sens);
-
-   /* Try free on NULL */
-   eeze_sensor_free(NULL);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-static int cb_count = 0;
-
-static Eina_Bool
-event_cb(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *event)
-{
-   Eeze_Sensor_Obj *sens = NULL;
-   int acc;
-   double timestamp;
-   Eina_Bool rc = EINA_FALSE;
-
-   sens = event;
-   fail_if(sens == NULL);
-   rc = eeze_sensor_accuracy_get(sens, &acc);
-   fail_if(rc == EINA_FALSE);
-   rc = eeze_sensor_timestamp_get(sens, &timestamp);
-   fail_if(rc == EINA_FALSE);
-
-   /* We expect 5 callbacks from async reads right now */
-   if (++cb_count == 5)
-     ecore_main_loop_quit();
-
-   return ECORE_CALLBACK_DONE;
-}
-
-START_TEST(eeze_test_sensor_async_read)
-{
-   Ecore_Event_Handler *handler;
-
-   Eeze_Sensor_Obj *sens = NULL;
-   int ret = 0;
-   Eina_Bool rc = EINA_FALSE;
-
-   ecore_init();
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   handler = ecore_event_handler_add(EEZE_SENSOR_EVENT_ACCELEROMETER, event_cb, NULL);
-   fail_if(handler == NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ACCELEROMETER);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   ecore_event_handler_add(EEZE_SENSOR_EVENT_MAGNETIC, event_cb, NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_MAGNETIC);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   ecore_event_handler_add(EEZE_SENSOR_EVENT_ORIENTATION, event_cb, NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ORIENTATION);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   ecore_event_handler_add(EEZE_SENSOR_EVENT_GYROSCOPE, event_cb, NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   ecore_event_handler_add(EEZE_SENSOR_EVENT_PROXIMITY, event_cb, NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_PROXIMITY);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   ecore_event_handler_add(EEZE_SENSOR_EVENT_LIGHT, event_cb, NULL);
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc == EINA_FALSE);
-
-   /* Error case */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LAST + 1);
-   fail_if(sens != NULL);
-   rc = eeze_sensor_async_read(NULL, NULL);
-   fail_if(rc != EINA_FALSE);
-
-   /* Change sensor type after creation but before read */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   sens->type = EEZE_SENSOR_TYPE_LAST + 1;
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc != EINA_FALSE);
-
-   /* Try to read from a type you can't read from */
-   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
-   fail_if(sens == NULL);
-   sens->type = EEZE_SENSOR_TYPE_LAST;
-   rc = eeze_sensor_async_read(sens, NULL);
-   fail_if(rc != EINA_FALSE);
-
-   ecore_main_loop_begin();
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-START_TEST(eeze_test_sensor_obj_get)
-{
-   Eeze_Sensor_Obj *obj = NULL, *obj_tmp = NULL;
-   int ret = 0;
-
-   ecore_init();
-   ret = eeze_init();
-   fail_if(ret != 1);
-
-   obj = calloc(1, sizeof(Eeze_Sensor_Obj));
-   fail_if(obj == NULL);
-
-   obj_tmp = obj;
-
-   obj = eeze_sensor_obj_get(EEZE_SENSOR_TYPE_ACCELEROMETER);
-   fail_if(obj == obj_tmp);
-
-   free(obj);
-
-   /* Try to get non existing obj */
-   obj_tmp = eeze_sensor_obj_get(EEZE_SENSOR_TYPE_LAST + 1);
-   fail_if(obj_tmp != NULL);
-
-   ret = eeze_shutdown();
-   fail_if(ret != 0);
-}
-END_TEST
-
-Suite *
-eeze_suite(void)
-{
-   Suite *s;
-   TCase *tc;
-
-   s = suite_create("Eeze");
-
-   tc = tcase_create("Eeze_Init");
-   tcase_add_test(tc, eeze_test_init);
-   suite_add_tcase(s, tc);
-
-   tc = tcase_create("Eeze_Udev");
-   //FIXME This also fails all the time. Enable this once we verify it's not completely useless
-   //tcase_add_test(tc, eeze_test_udev_types);
-   tcase_add_test(tc, eeze_test_udev_watch);
-   tcase_add_test(tc, eeze_test_udev_syspath);
-   tcase_add_test(tc, eeze_test_udev_attr);
-   //FIXME  Tested functions here are hidden (not EAPI) and thus can not be tested like this with
-   //-fvisibility=hidden turned on.
-   //tcase_add_test(tc, eeze_test_udev_device);
-   suite_add_tcase(s, tc);
-
-   tc = tcase_create("Eeze_Net");
-   tcase_add_test(tc, eeze_test_net_list);
-   tcase_add_test(tc, eeze_test_net_attr);
-#ifdef HAVE_IPV6
-   //FIXME Figure out why we fail for the ipv6 tests here (code or test)
-   //tcase_add_test(tc, eeze_test_net_attr_ipv6);
-#endif
-   suite_add_tcase(s, tc);
-
-   tc = tcase_create("Eeze Sensor");
-   tcase_add_test(tc, eeze_test_sensor_read);
-   tcase_add_test(tc, eeze_test_sensor_async_read);
-   tcase_add_test(tc, eeze_test_sensor_obj_get);
-   suite_add_tcase(s, tc);
-
-   tcase_set_timeout(tc, 0);
-
-   return s;
-}
+static const Efl_Test_Case etc[] = {
+  { "Init", eeze_test_init },
+  { "UDev", eeze_test_udev },
+  { "Net", eeze_test_net },
+  { "Sensor", eeze_test_sensor },
+  { NULL, NULL }
+};
 
 int
 main(void)
 {
-   Suite *s;
-   SRunner *sr;
    int failed_count;
 
+   if (!_efl_test_option_disp(argc, argv, etc))
+     return 0;
+
    putenv("EFL_RUN_IN_TREE=1");
 
-   s = eeze_suite();
-   sr = srunner_create(s);
-   srunner_set_xml(sr, TESTS_BUILD_DIR "/check-results.xml");
-   srunner_run_all(sr, CK_ENV);
-   failed_count = srunner_ntests_failed(sr);
-   srunner_free(sr);
+   failed_count = _efl_suite_build_and_run(argc - 1, (const char **)argv + 1,
+                                           "Eeze", etc);
 
    return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }
diff --git a/src/tests/eeze/eeze_suite.h b/src/tests/eeze/eeze_suite.h
new file mode 100644 (file)
index 0000000..d8fcfb3
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _EEZE_SUITE_H
+#define _EEZE_SUITE_H
+
+#include <check.h>
+
+void eeze_test_init(TCase *tc);
+void eeze_test_udev(TCase *tc);
+void eeze_test_net(TCase *tc);
+void eeze_test_sensor(TCase *tc);
+
+#endif /* _EEZE_SUITE_H */
diff --git a/src/tests/eeze/eeze_test_init.c b/src/tests/eeze/eeze_test_init.c
new file mode 100644 (file)
index 0000000..6c72acb
--- /dev/null
@@ -0,0 +1,24 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <Eeze.h>
+
+#include "eeze_suite.h"
+
+START_TEST(eeze_test_eeze_init)
+{
+   int ret;
+
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+void eeze_test_init(TCase *tc)
+{
+   tcase_add_test(tc, eeze_test_eeze_init);
+}
diff --git a/src/tests/eeze/eeze_test_net.c b/src/tests/eeze/eeze_test_net.c
new file mode 100644 (file)
index 0000000..6d9f858
--- /dev/null
@@ -0,0 +1,116 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <Eeze.h>
+#include <Eeze_Net.h>
+
+#include "eeze_suite.h"
+
+START_TEST(eeze_test_net_list)
+{
+   int ret;
+   Eina_List *list = NULL;
+
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   list = eeze_net_list();
+   fail_if(list == NULL);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+START_TEST(eeze_test_net_attr)
+{
+   int ret;
+   int idx = 0;
+   Eeze_Net *net = NULL;
+   const char *tmp = NULL;
+
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   net = eeze_net_new("lo");
+   fail_if(net == NULL);
+
+   tmp = eeze_net_mac_get(net);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   idx = eeze_net_idx_get(net);
+   fail_if(!idx);
+
+   eeze_net_scan(net);
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_IP);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_BROADCAST);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_NETMASK);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_attribute_get(net, "carrier");
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_syspath_get(net);
+   fail_if(tmp == NULL);
+
+   eeze_net_free(net);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+/*
+#ifdef HAVE_IPV6
+START_TEST(eeze_test_net_attr_ipv6)
+{
+   int ret;
+   Eeze_Net *net = NULL;
+   const char *tmp = NULL;
+
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   net = eeze_net_new("lo");
+   fail_if(net == NULL);
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_IP6);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_BROADCAST6);
+   fail_if(tmp == NULL);
+   tmp = NULL;
+
+   tmp = eeze_net_addr_get(net, EEZE_NET_ADDR_TYPE_NETMASK6);
+   fail_if(tmp == NULL);
+
+   eeze_net_free(net);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+#endif
+*/
+
+void eeze_test_net(TCase *tc)
+{
+   tcase_add_test(tc, eeze_test_net_list);
+   tcase_add_test(tc, eeze_test_net_attr);
+#ifdef HAVE_IPV6
+   //FIXME Figure out why we fail for the ipv6 tests here (code or test)
+   //tcase_add_test(tc, eeze_test_net_attr_ipv6);
+#endif
+}
diff --git a/src/tests/eeze/eeze_test_sensor.c b/src/tests/eeze/eeze_test_sensor.c
new file mode 100644 (file)
index 0000000..7cd415e
--- /dev/null
@@ -0,0 +1,280 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <Ecore.h>
+#include <Eeze.h>
+#include <Eeze_Sensor.h>
+
+#include "eeze_suite.h"
+#include "eeze_sensor_private.h"
+
+static int cb_count = 0;
+
+static Eina_Bool
+event_cb(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *event)
+{
+   Eeze_Sensor_Obj *sens = NULL;
+   int acc;
+   double timestamp;
+   Eina_Bool rc = EINA_FALSE;
+
+   sens = event;
+   fail_if(sens == NULL);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+
+   /* We expect 5 callbacks from async reads right now */
+   if (++cb_count == 5)
+     ecore_main_loop_quit();
+
+   return ECORE_CALLBACK_DONE;
+}
+
+START_TEST(eeze_test_sensor_read)
+{
+   Eeze_Sensor_Obj *sens = NULL;
+   int ret = 0;
+   float x, y, z;
+   int acc;
+   double timestamp;
+   Eina_Bool rc = EINA_FALSE;
+
+   ecore_init();
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ACCELEROMETER);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
+   fail_if(rc == EINA_FALSE);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_MAGNETIC);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
+   fail_if(rc == EINA_FALSE);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ORIENTATION);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
+   fail_if(rc == EINA_FALSE);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_xyz_get(sens, &x, &y, &z);
+   fail_if(rc == EINA_FALSE);
+
+   /* Use gyro with xy here even if it offers xzy */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_xy_get(sens, &x, &y);
+   fail_if(rc == EINA_FALSE);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_PROXIMITY);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_x_get(sens, &x);
+   fail_if(rc == EINA_FALSE);
+
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_read(sens);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(sens, &acc);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(sens, &timestamp);
+   fail_if(rc == EINA_FALSE);
+   rc = eeze_sensor_x_get(sens, &x);
+   fail_if(rc == EINA_FALSE);
+
+   /* Call non existing type */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LAST + 1);
+   fail_if(sens != NULL);
+
+   /* Give NULL as sensor object */
+   rc = eeze_sensor_read(NULL);
+   fail_if(rc != EINA_FALSE);
+
+   /* Change sensor type after creation but before read */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   sens->type = EEZE_SENSOR_TYPE_LAST + 1;
+   rc = eeze_sensor_read(sens);
+   fail_if(rc != EINA_FALSE);
+
+   /* Try to read from a type you can't read from */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   sens->type = EEZE_SENSOR_TYPE_LAST;
+   rc = eeze_sensor_read(sens);
+   fail_if(rc != EINA_FALSE);
+
+   /* Try all getter functions with a NULL sensor object */
+   rc = eeze_sensor_xyz_get(NULL, &x, &y, &z);
+   fail_if(rc != EINA_FALSE);
+   rc = eeze_sensor_xy_get(NULL, &x, &y);
+   fail_if(rc != EINA_FALSE);
+   rc = eeze_sensor_x_get(NULL, &x);
+   fail_if(rc != EINA_FALSE);
+   rc = eeze_sensor_accuracy_get(NULL, &acc);
+   fail_if(rc != EINA_FALSE);
+   rc = eeze_sensor_timestamp_get(NULL, &timestamp);
+   fail_if(rc != EINA_FALSE);
+
+   eeze_sensor_free(sens);
+
+   /* Try free on NULL */
+   eeze_sensor_free(NULL);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+START_TEST(eeze_test_sensor_async_read)
+{
+   Ecore_Event_Handler *handler;
+
+   Eeze_Sensor_Obj *sens = NULL;
+   int ret = 0;
+   Eina_Bool rc = EINA_FALSE;
+
+   ecore_init();
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   handler = ecore_event_handler_add(EEZE_SENSOR_EVENT_ACCELEROMETER, event_cb, NULL);
+   fail_if(handler == NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ACCELEROMETER);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   ecore_event_handler_add(EEZE_SENSOR_EVENT_MAGNETIC, event_cb, NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_MAGNETIC);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   ecore_event_handler_add(EEZE_SENSOR_EVENT_ORIENTATION, event_cb, NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_ORIENTATION);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   ecore_event_handler_add(EEZE_SENSOR_EVENT_GYROSCOPE, event_cb, NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_GYROSCOPE);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   ecore_event_handler_add(EEZE_SENSOR_EVENT_PROXIMITY, event_cb, NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_PROXIMITY);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   ecore_event_handler_add(EEZE_SENSOR_EVENT_LIGHT, event_cb, NULL);
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc == EINA_FALSE);
+
+   /* Error case */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LAST + 1);
+   fail_if(sens != NULL);
+   rc = eeze_sensor_async_read(NULL, NULL);
+   fail_if(rc != EINA_FALSE);
+
+   /* Change sensor type after creation but before read */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   sens->type = EEZE_SENSOR_TYPE_LAST + 1;
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc != EINA_FALSE);
+
+   /* Try to read from a type you can't read from */
+   sens = eeze_sensor_new(EEZE_SENSOR_TYPE_LIGHT);
+   fail_if(sens == NULL);
+   sens->type = EEZE_SENSOR_TYPE_LAST;
+   rc = eeze_sensor_async_read(sens, NULL);
+   fail_if(rc != EINA_FALSE);
+
+   ecore_main_loop_begin();
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+START_TEST(eeze_test_sensor_obj_get)
+{
+   Eeze_Sensor_Obj *obj = NULL, *obj_tmp = NULL;
+   int ret = 0;
+
+   ecore_init();
+   ret = eeze_init();
+   fail_if(ret != 1);
+
+   obj = calloc(1, sizeof(Eeze_Sensor_Obj));
+   fail_if(obj == NULL);
+
+   obj_tmp = obj;
+
+   obj = eeze_sensor_obj_get(EEZE_SENSOR_TYPE_ACCELEROMETER);
+   fail_if(obj == obj_tmp);
+
+   free(obj);
+
+   /* Try to get non existing obj */
+   obj_tmp = eeze_sensor_obj_get(EEZE_SENSOR_TYPE_LAST + 1);
+   fail_if(obj_tmp != NULL);
+
+   ret = eeze_shutdown();
+   fail_if(ret != 0);
+}
+END_TEST
+
+void eeze_test_sensor(TCase *tc)
+{
+   tcase_add_test(tc, eeze_test_sensor_read);
+   tcase_add_test(tc, eeze_test_sensor_async_read);
+   tcase_add_test(tc, eeze_test_sensor_obj_get);
+}
diff --git a/src/tests/eeze/eeze_test_udev.c b/src/tests/eeze/eeze_test_udev.c
new file mode 100644 (file)
index 0000000..1e8b3c8
--- /dev/null
@@ -0,0 +1,254 @@
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <Ecore.h>
+#include <Eeze.h>
+
+#include "eeze_suite.h"
+/* #include "eeze_udev_private.h" */
+
+static void
+catch_events(const char *device EINA_UNUSED, Eeze_Udev_Event  event EINA_UNUSED,
+             void *data EINA_UNUSED, Eeze_Udev_Watch *watch EINA_UNUSED)
+{
+}
+
+#if 0
+// FIXME split udev tests into pieces here
+START_TEST(eeze_test_udev_types)
+{
+   Eina_List *type;
+
+   eeze_init();
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NONE, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_KEYBOARD, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_MOUSE, NULL);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_TOUCHPAD, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_MOUNTABLE, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_REMOVABLE, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_CDROM, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_AC, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_POWER_BAT, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NET, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_V4L, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_BLUETOOTH, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_JOYSTICK, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   type = eeze_udev_find_by_type(0, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+
+   eeze_shutdown();
+}
+END_TEST
+#endif
+
+START_TEST(eeze_test_udev_watch)
+{
+   Eeze_Udev_Watch *watch;
+
+   ecore_init();
+   eeze_init();
+
+   /* watch never gets triggered as this is run without user interaction */
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_KEYBOARD, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_DRIVE_INTERNAL, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_POWER_AC, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_NET, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_IS_IT_HOT_OR_IS_IT_COLD_SENSOR, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_V4L, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_BLUETOOTH, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   watch = eeze_udev_watch_add(EEZE_UDEV_TYPE_NONE, (EEZE_UDEV_EVENT_ADD | EEZE_UDEV_EVENT_REMOVE), catch_events, NULL);
+   eeze_udev_watch_del(watch);
+
+   eeze_shutdown();
+   ecore_shutdown();
+}
+END_TEST
+
+START_TEST(eeze_test_udev_syspath)
+{
+   Eina_List *type, *l;
+   const char *name;
+   Eina_Bool r;
+
+   eeze_init();
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_KEYBOARD, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FOREACH(type, l, name)
+     {
+         eeze_udev_syspath_get_devpath(name);
+         eeze_udev_find_similar_from_syspath(name);
+         eeze_udev_find_similar_from_syspath(NULL);
+         eeze_udev_syspath_get_parent(name);
+         eeze_udev_syspath_get_parent(NULL);
+         eeze_udev_syspath_get_parents(name);
+         eeze_udev_syspath_get_parents(NULL);
+         eeze_udev_syspath_get_devname(name);
+         eeze_udev_syspath_get_devname(NULL);
+         eeze_udev_syspath_get_subsystem(name);
+         eeze_udev_syspath_get_sysattr(name, "manufacturer");
+         eeze_udev_syspath_is_mouse(name);
+         eeze_udev_syspath_is_kbd(name);
+         eeze_udev_syspath_is_touchpad(name);
+         eeze_udev_syspath_is_joystick(name);
+         eeze_udev_walk_get_sysattr(name, "manufacturer");
+         eeze_udev_find_by_sysattr("manufacturer", NULL);
+         eeze_udev_find_by_sysattr(NULL, NULL);
+         eeze_udev_walk_check_sysattr(name, "manufacturer", NULL);
+         eeze_udev_walk_check_sysattr(name, "manufacturer", "foo");
+         eeze_udev_walk_get_sysattr(NULL, "manufacturer");
+         eeze_udev_walk_get_sysattr(name, NULL);
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_MOUSE, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FOREACH(type, l, name)
+     {
+        r = eeze_udev_syspath_is_mouse(name);
+        fail_unless(r);
+
+        eeze_udev_syspath_is_touchpad(name);
+        eeze_udev_syspath_is_joystick(name);
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_TOUCHPAD, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FOREACH(type, l, name)
+     {
+        r = eeze_udev_syspath_is_touchpad(name);
+        fail_unless(r);
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_JOYSTICK, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FOREACH(type, l, name)
+     {
+        r = eeze_udev_syspath_is_joystick(name);
+        fail_unless(r);
+     }
+
+   eeze_udev_devpath_get_syspath("/dev/null");
+
+   eeze_shutdown();
+}
+END_TEST
+
+START_TEST(eeze_test_udev_attr)
+{
+   Eina_List *type;
+   const char *name, *check, *check2;
+
+   eeze_init();
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   eeze_udev_find_by_filter("backlight", NULL, NULL);
+
+   eeze_udev_find_by_filter(NULL, NULL, NULL);
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_NET, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FREE(type, name)
+     {
+        check = eeze_udev_syspath_get_property(name, "INTERFACE");
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FREE(type, name)
+     {
+        check = eeze_udev_syspath_get_property(name, "ID_SERIAL");
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_REMOVABLE, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FREE(type, name)
+     {
+        if ((check = eeze_udev_syspath_get_sysattr(name, "model")))
+          {
+             check2 = eeze_udev_syspath_get_subsystem(name);
+          }
+     }
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_V4L, NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   EINA_LIST_FREE(type, name)
+     {
+       if ((check = eeze_udev_syspath_get_property(name, "DEVNAME")))
+        {
+          if ((check2 = eeze_udev_syspath_get_sysattr(name, "name")))
+            {
+              eina_stringshare_del(check2);
+            }
+          eina_stringshare_del(check);
+        }
+       eina_stringshare_del(name);
+     }
+
+   eeze_shutdown();
+}
+END_TEST
+
+/*
+START_TEST(eeze_test_udev_device)
+{
+   Eina_List *type, *l;
+   _udev_device *device, *device2;
+   const char *name;
+
+   eeze_init();
+
+   type = eeze_udev_find_by_type(EEZE_UDEV_TYPE_DRIVE_INTERNAL, NULL);
+   fail_if(type == NULL);
+   type = eeze_udev_find_unlisted_similar(type);
+   fail_if(type == NULL);
+   EINA_LIST_FOREACH(type, l, name)
+     {
+         device = _new_device(name);
+         fail_if(device == NULL);
+         _walk_parents_get_attr(device, "FOO", EINA_FALSE);
+         _walk_parents_get_attr(device, "FOO", EINA_TRUE);
+         _walk_children_get_attr(name, "FOO", "BAR", EINA_FALSE);
+         _walk_children_get_attr(name, "FOO", "BAR", EINA_TRUE);
+     }
+
+   device = _new_device("Wrong path");
+   fail_if(device != NULL);
+
+   device2 = _copy_device(device);
+   fail_if(device2 != NULL);
+
+   eeze_shutdown();
+}
+END_TEST
+*/
+
+void eeze_test_udev(TCase *tc)
+{
+   //FIXME This also fails all the time. Enable this once we verify it's not completely useless
+   //tcase_add_test(tc, eeze_test_udev_types);
+   tcase_add_test(tc, eeze_test_udev_watch);
+   tcase_add_test(tc, eeze_test_udev_syspath);
+   tcase_add_test(tc, eeze_test_udev_attr);
+   //FIXME  Tested functions here are hidden (not EAPI) and thus can not be tested like this with
+   //-fvisibility=hidden turned on.
+   //tcase_add_test(tc, eeze_test_udev_device);
+}