4 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include <sensor_internal.h>
23 #include <sensor_utils.h>
25 #include <client/sensor_manager.h>
26 #include <client/sensor_listener.h>
30 #include "test_bench.h"
32 static bool called = false;
35 static void event_cb(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data)
37 _I("[%llu] %f %f %f\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
43 TESTCASE(sensor_listener, get_default_sensor_p_1)
48 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
54 TESTCASE(sensor_listener, get_sensors_p_1)
60 err = sensord_get_sensors(ACCELEROMETER_SENSOR, &sensors, &count);
69 TESTCASE(sensor_listener, connect_p_1)
75 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
78 handle = sensord_connect(sensor);
81 err = sensord_disconnect(handle);
87 TESTCASE(sensor_listener, all_api_p_1)
98 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
101 err = sensord_get_sensors(ALL_SENSOR, &list, &count);
104 handle = sensord_connect(sensor);
107 ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
110 ret = sensord_start(handle, 0);
113 ret = sensord_change_event_interval(handle, 0, 100);
116 ret = sensord_change_event_max_batch_latency(handle, 0, 100);
121 ret = sensord_stop(handle);
124 ret = sensord_unregister_event(handle, 1);
127 ret = sensord_disconnect(handle);
135 TESTCASE(sensor_listener, bad_unregister_stop_order_p_1)
144 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
147 handle = sensord_connect(sensor);
148 ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
149 ret = sensord_start(handle, 0);
150 ret = sensord_change_event_interval(handle, 0, 100);
154 /* [TEST] Unregister event before stop */
155 ret = sensord_unregister_event(handle, 1);
158 ret = sensord_stop(handle);
161 ret = sensord_disconnect(handle);
167 TESTCASE(sensor_listener, bad_disconnect_p_1)
176 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
179 handle = sensord_connect(sensor);
180 ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
181 ret = sensord_start(handle, 0);
182 ret = sensord_change_event_interval(handle, 0, 100);
186 /* [TEST] Unregistering event is not called */
188 ret = sensord_stop(handle);
191 ret = sensord_disconnect(handle);
197 TESTCASE(sensor_listener, bad_disconnect_p_2)
206 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
209 handle = sensord_connect(sensor);
210 ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
211 ret = sensord_start(handle, 0);
212 ret = sensord_change_event_interval(handle, 0, 100);
216 ret = sensord_unregister_event(handle, 1);
219 /* [TEST] stopping sensor is not called */
221 ret = sensord_disconnect(handle);
227 TESTCASE(sensor_listener, set_get_attribute_int_1)
232 sensor_t sensor = NULL;
236 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
239 handle = sensord_connect(sensor);
240 err = sensord_set_attribute_int(handle, attr, 1);
243 err = sensord_get_attribute_int(handle, attr, &value);
248 ret = sensord_disconnect(handle);
254 TESTCASE(sensor_listener, set_get_attribute_int_2)
259 sensor_t sensor = NULL;
263 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
266 handle = sensord_connect(sensor);
267 err = sensord_set_attribute_int(handle, attr, 1);
270 err = sensord_get_attribute_int(handle, attr, &value);
275 ret = sensord_disconnect(handle);
281 TESTCASE(sensor_listener, get_attribute_int_1)
286 sensor_t sensor = NULL;
290 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
293 handle = sensord_connect(sensor);
295 // attr 100 value is never set in these tests.
296 err = sensord_get_attribute_int(handle, attr, &value);
299 ret = sensord_disconnect(handle);
305 #define TEST_STRING "TESTTESTTEST"
306 #define TEST_STRING_LEN 13
308 TESTCASE(sensor_listener, set_attribute_string_1)
313 sensor_t sensor = NULL;
316 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
319 handle = sensord_connect(sensor);
320 err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
323 ret = sensord_disconnect(handle);
329 TESTCASE(sensor_listener, set_get_attribute_string_1)
336 sensor_t sensor = NULL;
339 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
342 handle = sensord_connect(sensor);
343 err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
346 err = sensord_get_attribute_str(handle, attr, &value, &len);
348 ASSERT_EQ(len, TEST_STRING_LEN);
349 ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
351 ret = sensord_disconnect(handle);
358 #define BUF_SIZE 4000
359 TESTCASE(sensor_listener, set_get_attribute_string_2)
366 sensor_t sensor = NULL;
368 char attr_value[BUF_SIZE] = {1, };
369 attr_value[BUF_SIZE - 1] = 1;
371 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
374 handle = sensord_connect(sensor);
375 err = sensord_set_attribute_str(handle, attr, attr_value, BUF_SIZE);
378 err = sensord_get_attribute_str(handle, attr, &value, &len);
380 ASSERT_EQ(len, BUF_SIZE);
382 ret = sensord_disconnect(handle);
389 TESTCASE(sensor_listener, set_get_get_attribute_string_1)
399 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
402 handle = sensord_connect(sensor);
403 err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
406 err = sensord_get_attribute_str(handle, attr, &value, &len);
408 ASSERT_EQ(len, TEST_STRING_LEN);
409 ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
411 ret = sensord_disconnect(handle);
419 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
422 handle = sensord_connect(sensor);
424 err = sensord_get_attribute_str(handle, attr, &value, &len);
426 ASSERT_EQ(len, TEST_STRING_LEN);
427 ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
429 ret = sensord_disconnect(handle);
436 TESTCASE(sensor_listener, get_attribute_string_2)
446 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
449 handle = sensord_connect(sensor);
451 // attr 100 value is never set in these tests.
452 err = sensord_get_attribute_str(handle, attr, &value, &len);
453 ASSERT_EQ(err, -EIO);
455 ret = sensord_disconnect(handle);
461 #define SENSOR_SHIFT_TYPE 16
462 TESTCASE(sensor_listener, get_data_list)
472 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
475 handle = sensord_connect(sensor);
477 sensord_get_type(sensor, &type);
480 ret = sensord_start(handle, 0);
483 sensor_data_t* data_list = NULL;
485 unsigned int data_id = type << SENSOR_SHIFT_TYPE | 0x1;
487 ret = sensord_get_data_list(handle, data_id, &data_list, &count);
491 for (int i = 0 ; i < count; i++) {
492 _I("[%llu]", data_list[i].timestamp);
493 for (int j = 0; j < data_list[i].value_count; j++)
494 _I(" %f", data_list[i].values[j]);
499 ret = sensord_stop(handle);
502 ret = sensord_unregister_events(handle, 1);
505 ret = sensord_disconnect(handle);
511 void sensor_attribute_int_changed_callback(sensor_t sensor, int attribute, int value, void *data)
513 _I("[ATTRIBUTE INT CHANGED] attribute : %d, value : %d\n", attribute, value);
516 TESTCASE(skip_sensor_listener, register_attribute_int_changed)
525 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
528 handle = sensord_connect(sensor);
531 ret = sensord_register_attribute_int_changed_cb(handle, sensor_attribute_int_changed_callback, NULL);
534 ret = sensord_start(handle, 0);
539 ret = sensord_stop(handle);
542 ret = sensord_unregister_attribute_int_changed_cb(handle);
545 ret = sensord_disconnect(handle);
551 static int attribute = 1; // 1 is SENSOR_ATTRIBUTE_AXIS_ORIENTATION of sensor_attribute_e in sensor.h
552 static int attribute_value = 0;
554 static gboolean change_attribute_int(gpointer gdata)
556 int *handle = reinterpret_cast<int *>(gdata);
558 sensord_set_attribute_int(*handle, attribute, attribute_value);
560 _N("[ SET ATTRIBUTE INT ] attribute %d, value : %d\n", attribute, attribute_value);
562 g_timeout_add_seconds(1, change_attribute_int, handle);
564 attribute_value ? attribute_value = 0 : attribute_value = 1;
569 TESTCASE(skip_sensor_listener, attribute_int_changer)
578 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
581 handle = sensord_connect(sensor);
584 ret = sensord_start(handle, 0);
587 g_timeout_add_seconds(1, change_attribute_int, &handle);
590 ret = sensord_stop(handle);
593 ret = sensord_disconnect(handle);
599 void sensor_attribute_str_changed_callback(sensor_t sensor, int attribute, const char *value, int len, void *data)
601 _I("[ATTRIBUTE STR CHANGED] attribute : %d, value : %s, len : %d\n", attribute, value, len);
604 TESTCASE(skip_sensor_listener, register_attribute_str_changed)
613 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
616 handle = sensord_connect(sensor);
619 ret = sensord_register_attribute_str_changed_cb(handle, sensor_attribute_str_changed_callback, NULL);
622 ret = sensord_start(handle, 0);
627 ret = sensord_stop(handle);
630 ret = sensord_unregister_attribute_int_changed_cb(handle);
633 ret = sensord_disconnect(handle);
639 static const char *attribute_value_str1 = "test_str_1";
640 static const char *attribute_value_str2 = "test_str_2";
641 static const char *attribute_value_str = attribute_value_str1;
643 static gboolean change_attribute_str(gpointer gdata)
645 int *handle = reinterpret_cast<int *>(gdata);
646 int len = strlen(attribute_value_str) + 1;
647 sensord_set_attribute_str(*handle, attribute, attribute_value_str, len);
649 _N("[ SET ATTRIBUTE STR ] attribute %d, value : %s, len : %d\n", attribute, attribute_value_str, len);
651 g_timeout_add_seconds(1, change_attribute_str, handle);
653 if (attribute_value_str == attribute_value_str1) {
654 attribute_value_str = attribute_value_str2;
656 attribute_value_str = attribute_value_str1;
662 TESTCASE(skip_sensor_listener, attribute_str_changer)
671 err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
674 handle = sensord_connect(sensor);
677 ret = sensord_start(handle, 0);
680 g_timeout_add_seconds(1, change_attribute_str, &handle);
683 ret = sensord_stop(handle);
686 ret = sensord_disconnect(handle);