e6465945371e18e8a65d542fe867d67a8fa3c8af
[platform/core/system/sensord.git] / src / sensorctl / testcase / sensor_listener.cpp
1 /*
2  * sensorctl
3  *
4  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  */
19
20 #include <unistd.h>
21 #include <string.h>
22 #include <sensor_internal.h>
23 #include <sensor_utils.h>
24
25 #include <client/sensor_manager.h>
26 #include <client/sensor_listener.h>
27
28 #include "log.h"
29 #include "mainloop.h"
30 #include "test_bench.h"
31
32 static bool called = false;
33 static int count = 0;
34
35 static void event_cb(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data)
36 {
37         _I("[%llu] %f %f %f\n", data->timestamp, data->values[0], data->values[1], data->values[2]);
38
39         if (count++ > 3)
40                 mainloop::stop();
41 }
42
43 TESTCASE(sensor_listener, get_default_sensor_p_1)
44 {
45         int err;
46         sensor_t sensor;
47
48         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
49         ASSERT_EQ(err, 0);
50
51         return true;
52 }
53
54 TESTCASE(sensor_listener, get_sensors_p_1)
55 {
56         int err;
57         int count;
58         sensor_t *sensors = nullptr;
59
60         err = sensord_get_sensors(ACCELEROMETER_SENSOR, &sensors, &count);
61         ASSERT_EQ(err, 0);
62         ASSERT_FREE((count < 0), sensors);
63         ASSERT_GT(count, 0);
64
65         free(sensors);
66
67         return true;
68 }
69
70 TESTCASE(sensor_listener, connect_p_1)
71 {
72         int err;
73         int handle;
74         sensor_t sensor;
75
76         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
77         ASSERT_EQ(err, 0);
78
79         handle = sensord_connect(sensor);
80         ASSERT_GT(handle, 0);
81
82         err = sensord_disconnect(handle);
83         ASSERT_EQ(err, 1);
84
85         return true;
86 }
87
88 TESTCASE(sensor_listener, all_api_p_1)
89 {
90         int err;
91         bool ret;
92         int handle;
93         sensor_t sensor;
94         sensor_t *list;
95         int count;
96
97         called = false;
98
99         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
100         ASSERT_EQ(err, 0);
101
102         err = sensord_get_sensors(ALL_SENSOR, &list, &count);
103         ASSERT_EQ(err, 0);
104
105         handle = sensord_connect(sensor);
106         ASSERT_EQ(err, 0);
107
108         ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
109         ASSERT_FREE(((ret != true) && list), list);
110         ASSERT_TRUE(ret);
111
112         ret = sensord_start(handle, 0);
113         ASSERT_FREE(((ret != true) && list), list);
114         ASSERT_TRUE(ret);
115
116         ret = sensord_change_event_interval(handle, 0, 100);
117         ASSERT_FREE(((ret != true) && list), list);
118         ASSERT_TRUE(ret);
119
120         ret = sensord_change_event_max_batch_latency(handle, 0, 100);
121         ASSERT_FREE(((ret != true) && list), list);
122         ASSERT_TRUE(ret);
123
124         mainloop::run();
125
126         ret = sensord_stop(handle);
127         ASSERT_FREE(((ret != true) && list), list);
128         ASSERT_TRUE(ret);
129
130         ret = sensord_unregister_event(handle, 1);
131         ASSERT_FREE(((ret != true) && list), list);
132         ASSERT_TRUE(ret);
133
134         ret = sensord_disconnect(handle);
135         ASSERT_FREE(((ret != true) && list), list);
136         ASSERT_TRUE(ret);
137
138         free(list);
139
140         return true;
141 }
142
143 TESTCASE(sensor_listener, bad_unregister_stop_order_p_1)
144 {
145         int err;
146         bool ret;
147         int handle;
148         sensor_t sensor;
149
150         called = false;
151
152         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
153         ASSERT_EQ(err, 0);
154
155         handle = sensord_connect(sensor);
156         ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
157         ret = sensord_start(handle, 0);
158         ret = sensord_change_event_interval(handle, 0, 100);
159
160         mainloop::run();
161
162         /* [TEST] Unregister event before stop */
163         ret = sensord_unregister_event(handle, 1);
164         ASSERT_TRUE(ret);
165
166         ret = sensord_stop(handle);
167         ASSERT_TRUE(ret);
168
169         ret = sensord_disconnect(handle);
170         ASSERT_TRUE(ret);
171
172         return true;
173 }
174
175 TESTCASE(sensor_listener, bad_disconnect_p_1)
176 {
177         int err;
178         bool ret;
179         int handle;
180         sensor_t sensor;
181
182         called = false;
183
184         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
185         ASSERT_EQ(err, 0);
186
187         handle = sensord_connect(sensor);
188         ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
189         ret = sensord_start(handle, 0);
190         ret = sensord_change_event_interval(handle, 0, 100);
191
192         mainloop::run();
193
194         /* [TEST] Unregistering event is not called */
195
196         ret = sensord_stop(handle);
197         ASSERT_TRUE(ret);
198
199         ret = sensord_disconnect(handle);
200         ASSERT_TRUE(ret);
201
202         return true;
203 }
204
205 TESTCASE(sensor_listener, bad_disconnect_p_2)
206 {
207         int err;
208         bool ret;
209         int handle;
210         sensor_t sensor;
211
212         called = false;
213
214         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
215         ASSERT_EQ(err, 0);
216
217         handle = sensord_connect(sensor);
218         ret = sensord_register_event(handle, 1, 100, 100, event_cb, NULL);
219         ret = sensord_start(handle, 0);
220         ret = sensord_change_event_interval(handle, 0, 100);
221
222         mainloop::run();
223
224         ret = sensord_unregister_event(handle, 1);
225         ASSERT_TRUE(ret);
226
227         /* [TEST] stopping sensor is not called */
228
229         ret = sensord_disconnect(handle);
230         ASSERT_TRUE(ret);
231
232         return true;
233 }
234
235 TESTCASE(sensor_listener, set_get_attribute_int_1)
236 {
237         int err = 0;
238         bool ret = true;
239         int handle = 0;
240         sensor_t sensor = NULL;
241         int attr = 1;
242         int value = -1;
243
244         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
245         ASSERT_EQ(err, 0);
246
247         handle = sensord_connect(sensor);
248         err = sensord_set_attribute_int(handle, attr, 1);
249         ASSERT_EQ(err, 0);
250
251         err = sensord_get_attribute_int(handle, attr, &value);
252         ASSERT_EQ(err, 0);
253
254         ASSERT_EQ(value, 1);
255
256         ret = sensord_disconnect(handle);
257         ASSERT_TRUE(ret);
258
259         return true;
260 }
261
262 TESTCASE(sensor_listener, set_get_attribute_int_2)
263 {
264         int err = 0;
265         bool ret = true;
266         int handle = 0;
267         sensor_t sensor = NULL;
268         int attr = 20;
269         int value = -1;
270
271         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
272         ASSERT_EQ(err, 0);
273
274         handle = sensord_connect(sensor);
275         err = sensord_set_attribute_int(handle, attr, 1);
276         ASSERT_EQ(err, 0);
277
278         err = sensord_get_attribute_int(handle, attr, &value);
279         ASSERT_EQ(err, 0);
280
281         ASSERT_EQ(value, 1);
282
283         ret = sensord_disconnect(handle);
284         ASSERT_TRUE(ret);
285
286         return true;
287 }
288
289 TESTCASE(sensor_listener, set_get_attribute_int_3)
290 {
291         int err = 0;
292         bool ret = true;
293         int handle = 0;
294         sensor_t sensor = NULL;
295         int attr = 20;
296         int value = -1;
297
298         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
299         ASSERT_EQ(err, 0);
300
301         handle = sensord_connect(sensor);
302
303         err = sensord_set_attribute_int(handle, attr, 1);
304         ASSERT_EQ(err, 0);
305
306         for (int i = 0 ; i < 10; i ++) {
307                 err = sensord_get_attribute_int(handle, attr, &value);
308                 ASSERT_EQ(err, 0);
309         }
310
311         ASSERT_EQ(value, 1);
312
313         ret = sensord_disconnect(handle);
314         ASSERT_TRUE(ret);
315
316         return true;
317 }
318
319 TESTCASE(sensor_listener, get_attribute_int_1)
320 {
321         int err = 0;
322         bool ret = true;
323         int handle = 0;
324         sensor_t sensor = NULL;
325         int attr = 100;
326         int value = -1;
327
328         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
329         ASSERT_EQ(err, 0);
330
331         handle = sensord_connect(sensor);
332
333         // attr 100 value is never set in these tests.
334         err = sensord_get_attribute_int(handle, attr, &value);
335         ASSERT_EQ(err, -5);
336
337         ret = sensord_disconnect(handle);
338         ASSERT_TRUE(ret);
339
340         return true;
341 }
342
343 #define TEST_STRING "TESTTESTTEST"
344 #define TEST_STRING_LEN 13
345
346 TESTCASE(sensor_listener, set_attribute_string_1)
347 {
348         int err = 0;
349         bool ret = true;
350         int handle = 0;
351         sensor_t sensor = NULL;
352         int attr = 1;
353
354         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
355         ASSERT_EQ(err, 0);
356
357         handle = sensord_connect(sensor);
358         err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
359         ASSERT_EQ(err, 0);
360
361         ret = sensord_disconnect(handle);
362         ASSERT_TRUE(ret);
363
364         return true;
365 }
366
367 TESTCASE(sensor_listener, set_get_attribute_string_1)
368 {
369         int err = 0;
370         bool ret = true;
371         int handle = 0;
372         char *value = NULL;
373         int len = 0;
374         sensor_t sensor = NULL;
375         int attr = 1;
376
377         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
378         ASSERT_EQ(err, 0);
379
380         handle = sensord_connect(sensor);
381         err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
382         ASSERT_EQ(err, 0);
383
384         err = sensord_get_attribute_str(handle, attr, &value, &len);
385         ASSERT_EQ(err, 0);
386         ASSERT_EQ(len, TEST_STRING_LEN);
387         ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
388
389         ret = sensord_disconnect(handle);
390         ASSERT_TRUE(ret);
391
392         free(value);
393         return true;
394 }
395
396 #define BUF_SIZE 4000
397 TESTCASE(sensor_listener, set_get_attribute_string_2)
398 {
399         int err = 0;
400         bool ret = true;
401         int handle = 0;
402         char *value = NULL;
403         int len = 0;
404         sensor_t sensor = NULL;
405         int attr = 1;
406         char attr_value[BUF_SIZE] = {1, };
407         attr_value[BUF_SIZE - 1] = 1;
408
409         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
410         ASSERT_EQ(err, 0);
411
412         handle = sensord_connect(sensor);
413         err = sensord_set_attribute_str(handle, attr, attr_value, BUF_SIZE);
414         ASSERT_EQ(err, 0);
415
416         err = sensord_get_attribute_str(handle, attr, &value, &len);
417         ASSERT_EQ(err, 0);
418         ASSERT_EQ(len, BUF_SIZE);
419
420         ret = sensord_disconnect(handle);
421         ASSERT_TRUE(ret);
422
423         free(value);
424         return true;
425 }
426
427 TESTCASE(sensor_listener, set_get_attribute_string_3)
428 {
429         int err = 0;
430         bool ret = true;
431         int handle = 0;
432         char *value = NULL;
433         int len = 0;
434         sensor_t sensor = NULL;
435         int attr = 1;
436
437         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
438         ASSERT_EQ(err, 0);
439
440         handle = sensord_connect(sensor);
441         err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
442         ASSERT_EQ(err, 0);
443
444         for (int i = 0; i < 10; i++) {
445                 err = sensord_get_attribute_str(handle, attr, &value, &len);
446                 ASSERT_EQ(err, 0);
447                 ASSERT_EQ(len, TEST_STRING_LEN);
448                 ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
449         }
450
451         ret = sensord_disconnect(handle);
452         ASSERT_TRUE(ret);
453
454         free(value);
455         return true;
456 }
457
458 TESTCASE(sensor_listener, set_get_get_attribute_string_1)
459 {
460         int err;
461         bool ret;
462         int handle;
463         char *value = NULL;
464         int len = 0;
465         sensor_t sensor;
466         int attr = 1;
467
468         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
469         ASSERT_EQ(err, 0);
470
471         handle = sensord_connect(sensor);
472         err = sensord_set_attribute_str(handle, attr, TEST_STRING, TEST_STRING_LEN);
473         ASSERT_EQ(err, 0);
474
475         err = sensord_get_attribute_str(handle, attr, &value, &len);
476         ASSERT_EQ(err, 0);
477         ASSERT_EQ(len, TEST_STRING_LEN);
478         ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
479
480         ret = sensord_disconnect(handle);
481         ASSERT_TRUE(ret);
482
483         free(value);
484
485         value = NULL;
486         len = 0;
487
488         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
489         ASSERT_EQ(err, 0);
490
491         handle = sensord_connect(sensor);
492
493         err = sensord_get_attribute_str(handle, attr, &value, &len);
494         ASSERT_EQ(err, 0);
495         ASSERT_EQ(len, TEST_STRING_LEN);
496         ASSERT_EQ(strncmp(value, TEST_STRING, len), 0);
497
498         ret = sensord_disconnect(handle);
499         ASSERT_TRUE(ret);
500
501         free(value);
502         return true;
503 }
504
505 TESTCASE(sensor_listener, get_attribute_string_2)
506 {
507         int err;
508         bool ret;
509         int handle;
510         char *value;
511         int len;
512         sensor_t sensor;
513         int attr = 100;
514
515         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
516         ASSERT_EQ(err, 0);
517
518         handle = sensord_connect(sensor);
519
520         // attr 100 value is never set in these tests.
521         err = sensord_get_attribute_str(handle, attr, &value, &len);
522         ASSERT_EQ(err, -EIO);
523
524         ret = sensord_disconnect(handle);
525         ASSERT_TRUE(ret);
526
527         return true;
528 }
529
530 #define SENSOR_SHIFT_TYPE 16
531 TESTCASE(sensor_listener, get_data_list)
532 {
533         int err;
534         bool ret;
535         int handle;
536         sensor_t sensor;
537         sensor_type_t type;
538
539         called = false;
540
541         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
542         ASSERT_EQ(err, 0);
543
544         handle = sensord_connect(sensor);
545
546         sensord_get_type(sensor, &type);
547         ASSERT_EQ(err, 0);
548
549         ret = sensord_start(handle, 0);
550         ASSERT_TRUE(ret);
551
552         sensor_data_t* data_list = NULL;
553         int count = 0;
554         unsigned int data_id = type << SENSOR_SHIFT_TYPE | 0x1;
555
556         ret = sensord_get_data_list(handle, data_id, &data_list, &count);
557         ASSERT_TRUE(ret);
558
559         for (int i = 0 ; i < count; i++) {
560                 _I("[%llu]", data_list[i].timestamp);
561                 for (int j = 0; j < data_list[i].value_count; j++)
562                         _I(" %f", data_list[i].values[j]);
563                 _I("\n");
564         }
565         free(data_list);
566
567         ret = sensord_stop(handle);
568         ASSERT_TRUE(ret);
569
570         ret = sensord_unregister_events(handle, 1);
571         ASSERT_TRUE(ret);
572
573         ret = sensord_disconnect(handle);
574         ASSERT_TRUE(ret);
575
576         return true;
577 }
578
579 void sensor_attribute_int_changed_callback(sensor_t sensor, int attribute, int value, void *data)
580 {
581         _I("[ATTRIBUTE INT CHANGED] attribute : %d, value : %d\n", attribute, value);
582 }
583
584 TESTCASE(skip_sensor_listener, register_attribute_int_changed)
585 {
586         int err;
587         bool ret;
588         int handle;
589         sensor_t sensor;
590
591         called = false;
592
593         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
594         ASSERT_EQ(err, 0);
595
596         handle = sensord_connect(sensor);
597         ASSERT_EQ(err, 0);
598
599         ret = sensord_register_attribute_int_changed_cb(handle, sensor_attribute_int_changed_callback, NULL);
600         ASSERT_TRUE(ret);
601
602         ret = sensord_start(handle, 0);
603         ASSERT_TRUE(ret);
604
605         mainloop::run();
606
607         ret = sensord_stop(handle);
608         ASSERT_TRUE(ret);
609
610         ret = sensord_unregister_attribute_int_changed_cb(handle);
611         ASSERT_TRUE(ret);
612
613         ret = sensord_disconnect(handle);
614         ASSERT_TRUE(ret);
615
616         return true;
617 }
618
619 static int attribute = 1; // 1 is SENSOR_ATTRIBUTE_AXIS_ORIENTATION of sensor_attribute_e in sensor.h
620 static int attribute_value = 0;
621
622 static gboolean change_attribute_int(gpointer gdata)
623 {
624         int *handle = reinterpret_cast<int *>(gdata);
625
626         sensord_set_attribute_int(*handle, attribute, attribute_value);
627
628         _N("[ SET ATTRIBUTE INT ] attribute %d, value : %d\n", attribute, attribute_value);
629
630         g_timeout_add_seconds(1, change_attribute_int, handle);
631
632         attribute_value ? attribute_value = 0 : attribute_value = 1;
633
634         return FALSE;
635 }
636
637 TESTCASE(skip_sensor_listener, attribute_int_changer)
638 {
639         int err;
640         bool ret;
641         int handle;
642         sensor_t sensor;
643
644         called = false;
645
646         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
647         ASSERT_EQ(err, 0);
648
649         handle = sensord_connect(sensor);
650         ASSERT_EQ(err, 0);
651
652         ret = sensord_start(handle, 0);
653         ASSERT_TRUE(ret);
654
655         g_timeout_add_seconds(1, change_attribute_int, &handle);
656         mainloop::run();
657
658         ret = sensord_stop(handle);
659         ASSERT_TRUE(ret);
660
661         ret = sensord_disconnect(handle);
662         ASSERT_TRUE(ret);
663
664         return true;
665 }
666
667 void sensor_attribute_str_changed_callback(sensor_t sensor, int attribute, const char *value, int len, void *data)
668 {
669         _I("[ATTRIBUTE STR CHANGED] attribute : %d, value : %s, len : %d\n", attribute, value, len);
670 }
671
672 TESTCASE(skip_sensor_listener, register_attribute_str_changed)
673 {
674         int err;
675         bool ret;
676         int handle;
677         sensor_t sensor;
678
679         called = false;
680
681         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
682         ASSERT_EQ(err, 0);
683
684         handle = sensord_connect(sensor);
685         ASSERT_EQ(err, 0);
686
687         ret = sensord_register_attribute_str_changed_cb(handle, sensor_attribute_str_changed_callback, NULL);
688         ASSERT_TRUE(ret);
689
690         ret = sensord_start(handle, 0);
691         ASSERT_TRUE(ret);
692
693         mainloop::run();
694
695         ret = sensord_stop(handle);
696         ASSERT_TRUE(ret);
697
698         ret = sensord_unregister_attribute_str_changed_cb(handle);
699         ASSERT_TRUE(ret);
700
701         ret = sensord_disconnect(handle);
702         ASSERT_TRUE(ret);
703
704         return true;
705 }
706
707 static const char *attribute_value_str1 = "test_str_1";
708 static const char *attribute_value_str2 = "test_str_2";
709 static const char *attribute_value_str = attribute_value_str1;
710
711 static gboolean change_attribute_str(gpointer gdata)
712 {
713         int *handle = reinterpret_cast<int *>(gdata);
714         int len = strlen(attribute_value_str) + 1;
715         sensord_set_attribute_str(*handle, attribute, attribute_value_str, len);
716
717         _N("[ SET ATTRIBUTE STR ] attribute %d, value : %s, len : %d\n", attribute, attribute_value_str, len);
718
719         g_timeout_add_seconds(1, change_attribute_str, handle);
720
721         if (attribute_value_str == attribute_value_str1) {
722                 attribute_value_str = attribute_value_str2;
723         } else {
724                 attribute_value_str = attribute_value_str1;
725         }
726
727         return FALSE;
728 }
729
730 TESTCASE(skip_sensor_listener, attribute_str_changer)
731 {
732         int err;
733         bool ret;
734         int handle;
735         sensor_t sensor;
736
737         called = false;
738
739         err = sensord_get_default_sensor(ACCELEROMETER_SENSOR, &sensor);
740         ASSERT_EQ(err, 0);
741
742         handle = sensord_connect(sensor);
743         ASSERT_EQ(err, 0);
744
745         ret = sensord_start(handle, 0);
746         ASSERT_TRUE(ret);
747
748         g_timeout_add_seconds(1, change_attribute_str, &handle);
749         mainloop::run();
750
751         ret = sensord_stop(handle);
752         ASSERT_TRUE(ret);
753
754         ret = sensord_disconnect(handle);
755         ASSERT_TRUE(ret);
756
757         return true;
758 }
759
760 TESTCASE(skip_sensor_listener, light_sensor_set_attribute_int_1)
761 {
762         int err = 0;
763         bool ret = true;
764         int handle = 0;
765         sensor_t sensor = NULL;
766         int attr = 2;
767         int value = 0;
768
769         err = sensord_get_default_sensor(LIGHT_SENSOR, &sensor);
770         ASSERT_EQ(err, 0);
771
772         handle = sensord_connect(sensor);
773         err = sensord_set_attribute_int(handle, attr, 2);
774         ASSERT_EQ(err, 0);
775
776         err = sensord_get_attribute_int(handle, attr, &value);
777         ASSERT_EQ(err, 0);
778         ASSERT_EQ(value, 2);
779
780         ret = sensord_disconnect(handle);
781         ASSERT_TRUE(ret);
782
783         return true;
784 }
785
786 TESTCASE(skip_sensor_listener, light_sensor_get_attribute_int_1)
787 {
788         int err = 0;
789         bool ret = true;
790         int handle = 0;
791         sensor_t sensor = NULL;
792         int attr = 2;
793         int value = 0;
794
795         err = sensord_get_default_sensor(LIGHT_SENSOR, &sensor);
796         ASSERT_EQ(err, 0);
797
798         handle = sensord_connect(sensor);
799         err = sensord_get_attribute_int(handle, attr, &value);
800         ASSERT_EQ(err, 0);
801         ASSERT_EQ(value, 2);
802
803         ret = sensord_disconnect(handle);
804         ASSERT_TRUE(ret);
805
806         return true;
807 }