From 92ff735c110abac6fcb5cc9089d5c960d843888f Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Thu, 4 Feb 2016 14:35:53 +0100 Subject: [PATCH] Test rework #7: Eeze eeze_suite.c has also been splitted --- src/Makefile_Eeze.am | 8 +- src/tests/eeze/eeze_suite.c | 685 +----------------------------- src/tests/eeze/eeze_suite.h | 11 + src/tests/eeze/eeze_test_init.c | 24 ++ src/tests/eeze/eeze_test_net.c | 116 +++++ src/tests/eeze/eeze_test_sensor.c | 280 ++++++++++++ src/tests/eeze/eeze_test_udev.c | 254 +++++++++++ 7 files changed, 707 insertions(+), 671 deletions(-) create mode 100644 src/tests/eeze/eeze_suite.h create mode 100644 src/tests/eeze/eeze_test_init.c create mode 100644 src/tests/eeze/eeze_test_net.c create mode 100644 src/tests/eeze/eeze_test_sensor.c create mode 100644 src/tests/eeze/eeze_test_udev.c diff --git a/src/Makefile_Eeze.am b/src/Makefile_Eeze.am index 31b0cfb5b5..0852d8737b 100644 --- a/src/Makefile_Eeze.am +++ b/src/Makefile_Eeze.am @@ -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\" \ diff --git a/src/tests/eeze/eeze_suite.c b/src/tests/eeze/eeze_suite.c index c1b496cf85..48884dc59e 100644 --- a/src/tests/eeze/eeze_suite.c +++ b/src/tests/eeze/eeze_suite.c @@ -2,684 +2,29 @@ # include #endif /* ifdef HAVE_CONFIG_H */ -#include -#include - -#include - -#include - -#include -#include -#include - -#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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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, ×tamp); - 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; -} +#include "ecore_suite.h" +#include "../efl_check.h" + +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 index 0000000000..d8fcfb3d57 --- /dev/null +++ b/src/tests/eeze/eeze_suite.h @@ -0,0 +1,11 @@ +#ifndef _EEZE_SUITE_H +#define _EEZE_SUITE_H + +#include + +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 index 0000000000..6c72acbd19 --- /dev/null +++ b/src/tests/eeze/eeze_test_init.c @@ -0,0 +1,24 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#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 index 0000000000..6d9f8589d6 --- /dev/null +++ b/src/tests/eeze/eeze_test_net.c @@ -0,0 +1,116 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#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 index 0000000000..7cd415e65d --- /dev/null +++ b/src/tests/eeze/eeze_test_sensor.c @@ -0,0 +1,280 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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, ×tamp); + 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 index 0000000000..1e8b3c821a --- /dev/null +++ b/src/tests/eeze/eeze_test_udev.c @@ -0,0 +1,254 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#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); +}