forked from enlightenment/efl
257 lines
7.5 KiB
C
257 lines
7.5 KiB
C
#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, ×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;
|
|
}
|
|
|
|
EFL_START_TEST(eeze_test_sensor_read)
|
|
{
|
|
Eeze_Sensor_Obj *sens = NULL;
|
|
float x, y, z;
|
|
int acc;
|
|
double timestamp;
|
|
Eina_Bool rc = EINA_FALSE;
|
|
|
|
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);
|
|
}
|
|
EFL_END_TEST
|
|
|
|
EFL_START_TEST(eeze_test_sensor_async_read)
|
|
{
|
|
Ecore_Event_Handler *handler;
|
|
|
|
Eeze_Sensor_Obj *sens = NULL;
|
|
Eina_Bool rc = EINA_FALSE;
|
|
|
|
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();
|
|
}
|
|
EFL_END_TEST
|
|
|
|
EFL_START_TEST(eeze_test_sensor_obj_get)
|
|
{
|
|
Eeze_Sensor_Obj *obj = NULL, *obj_tmp = NULL;
|
|
|
|
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);
|
|
}
|
|
EFL_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);
|
|
}
|