[UTC][capi-system-sensor][ACR-1481][Add batch events APIs and Deprecate event APIs] 50/222750/1
authorBoram Bae <boram21.bae@samsung.com>
Wed, 15 Jan 2020 01:50:30 +0000 (10:50 +0900)
committerBoram Bae <boram21.bae@samsung.com>
Mon, 20 Jan 2020 01:08:21 +0000 (10:08 +0900)
Change-Id: I30215c3d332ec41a3d65af896c0ff641a5dc58a1
Signed-off-by: Boram Bae <boram21.bae@samsung.com>
src/utc/sensor/public.list
src/utc/sensor/tct-sensor-core_mobile.h
src/utc/sensor/tct-sensor-core_tizeniot.h
src/utc/sensor/tct-sensor-core_wearable.h
src/utc/sensor/utc-system-sensor-basic.c
src/utc/sensor/utc-system-sensor-provider.c

index 6a25c957d2e255fbf66899370fa513144d888c71..0d2d94f0f675dbc00cf208e63756bfac7a1b92de 100755 (executable)
@@ -27,6 +27,7 @@ sensor_remove_provider
 sensor_listener_read_data
 sensor_listener_set_accuracy_cb
 sensor_listener_set_event_cb
+sensor_listener_set_events_cb
 sensor_listener_set_interval
 sensor_listener_set_max_batch_latency
 sensor_listener_set_option
@@ -34,6 +35,7 @@ sensor_listener_start
 sensor_listener_stop
 sensor_listener_unset_accuracy_cb
 sensor_listener_unset_event_cb
+sensor_listener_unset_events_cb
 sensor_provider_set_name
 sensor_provider_set_vendor
 sensor_provider_set_range
@@ -42,6 +44,7 @@ sensor_provider_set_start_cb
 sensor_provider_set_stop_cb
 sensor_provider_set_interval_changed_cb
 sensor_provider_publish
+sensor_provider_publish_events
 sensor_recorder_is_supported
 sensor_recorder_start
 sensor_recorder_stop
index c3254d8b0a5e6711328c00a0cf66be6f1de28d4e..9812aa9ac8cd0dfe9c283d5e656eff1e9209ec61 100755 (executable)
@@ -49,6 +49,10 @@ extern int utc_system_sensor_listener_set_event_cb_p(void);
 extern int utc_system_sensor_listener_set_event_cb_n(void);
 extern int utc_system_sensor_listener_unset_event_cb_p(void);
 extern int utc_system_sensor_listener_unset_event_cb_n(void);
+extern int utc_system_sensor_listener_set_events_cb_p(void);
+extern int utc_system_sensor_listener_set_events_cb_n(void);
+extern int utc_system_sensor_listener_unset_events_cb_p(void);
+extern int utc_system_sensor_listener_unset_events_cb_n(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_p(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_n(void);
 extern int utc_system_sensor_listener_unset_accuracy_cb_p(void);
@@ -149,6 +153,8 @@ extern int utc_system_sensor_provider_set_interval_changed_cb_p(void);
 extern int utc_system_sensor_provider_set_interval_changed_cb_n(void);
 extern int utc_system_sensor_provider_publish_p(void);
 extern int utc_system_sensor_provider_publish_n(void);
+extern int utc_system_sensor_provider_publish_events_p(void);
+extern int utc_system_sensor_provider_publish_events_n(void);
 extern int utc_system_sensor_util_get_angle_change_p(void);
 extern int utc_system_sensor_util_get_angle_change_n(void);
 extern int utc_system_sensor_util_get_declination_p(void);
@@ -189,6 +195,10 @@ testcase tc_array[] = {
        {"utc_system_sensor_listener_set_event_cb_n",utc_system_sensor_listener_set_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_p",utc_system_sensor_listener_unset_event_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_n",utc_system_sensor_listener_unset_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_p",utc_system_sensor_listener_set_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_n",utc_system_sensor_listener_set_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_p",utc_system_sensor_listener_unset_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_n",utc_system_sensor_listener_unset_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_p",utc_system_sensor_listener_set_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_n",utc_system_sensor_listener_set_accuracy_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_accuracy_cb_p",utc_system_sensor_listener_unset_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
@@ -289,6 +299,8 @@ testcase tc_array[] = {
        {"utc_system_sensor_provider_set_interval_changed_cb_n",utc_system_sensor_provider_set_interval_changed_cb_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_p",utc_system_sensor_provider_publish_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_n",utc_system_sensor_provider_publish_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_p",utc_system_sensor_provider_publish_events_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_n",utc_system_sensor_provider_publish_events_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_util_get_angle_change_p",utc_system_sensor_util_get_angle_change_p,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_angle_change_n",utc_system_sensor_util_get_angle_change_n,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_declination_p",utc_system_sensor_util_get_declination_p,utc_system_sensor_util_startup,NULL},
index c3254d8b0a5e6711328c00a0cf66be6f1de28d4e..9812aa9ac8cd0dfe9c283d5e656eff1e9209ec61 100755 (executable)
@@ -49,6 +49,10 @@ extern int utc_system_sensor_listener_set_event_cb_p(void);
 extern int utc_system_sensor_listener_set_event_cb_n(void);
 extern int utc_system_sensor_listener_unset_event_cb_p(void);
 extern int utc_system_sensor_listener_unset_event_cb_n(void);
+extern int utc_system_sensor_listener_set_events_cb_p(void);
+extern int utc_system_sensor_listener_set_events_cb_n(void);
+extern int utc_system_sensor_listener_unset_events_cb_p(void);
+extern int utc_system_sensor_listener_unset_events_cb_n(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_p(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_n(void);
 extern int utc_system_sensor_listener_unset_accuracy_cb_p(void);
@@ -149,6 +153,8 @@ extern int utc_system_sensor_provider_set_interval_changed_cb_p(void);
 extern int utc_system_sensor_provider_set_interval_changed_cb_n(void);
 extern int utc_system_sensor_provider_publish_p(void);
 extern int utc_system_sensor_provider_publish_n(void);
+extern int utc_system_sensor_provider_publish_events_p(void);
+extern int utc_system_sensor_provider_publish_events_n(void);
 extern int utc_system_sensor_util_get_angle_change_p(void);
 extern int utc_system_sensor_util_get_angle_change_n(void);
 extern int utc_system_sensor_util_get_declination_p(void);
@@ -189,6 +195,10 @@ testcase tc_array[] = {
        {"utc_system_sensor_listener_set_event_cb_n",utc_system_sensor_listener_set_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_p",utc_system_sensor_listener_unset_event_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_n",utc_system_sensor_listener_unset_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_p",utc_system_sensor_listener_set_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_n",utc_system_sensor_listener_set_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_p",utc_system_sensor_listener_unset_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_n",utc_system_sensor_listener_unset_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_p",utc_system_sensor_listener_set_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_n",utc_system_sensor_listener_set_accuracy_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_accuracy_cb_p",utc_system_sensor_listener_unset_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
@@ -289,6 +299,8 @@ testcase tc_array[] = {
        {"utc_system_sensor_provider_set_interval_changed_cb_n",utc_system_sensor_provider_set_interval_changed_cb_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_p",utc_system_sensor_provider_publish_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_n",utc_system_sensor_provider_publish_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_p",utc_system_sensor_provider_publish_events_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_n",utc_system_sensor_provider_publish_events_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_util_get_angle_change_p",utc_system_sensor_util_get_angle_change_p,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_angle_change_n",utc_system_sensor_util_get_angle_change_n,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_declination_p",utc_system_sensor_util_get_declination_p,utc_system_sensor_util_startup,NULL},
index 3116f3aa060d29a8851c8a9db67f12e1cd0f86d9..4c60a4385a7bd3050fffa79c2a2cdbc99898843a 100755 (executable)
@@ -49,6 +49,10 @@ extern int utc_system_sensor_listener_set_event_cb_p(void);
 extern int utc_system_sensor_listener_set_event_cb_n(void);
 extern int utc_system_sensor_listener_unset_event_cb_p(void);
 extern int utc_system_sensor_listener_unset_event_cb_n(void);
+extern int utc_system_sensor_listener_set_events_cb_p(void);
+extern int utc_system_sensor_listener_set_events_cb_n(void);
+extern int utc_system_sensor_listener_unset_events_cb_p(void);
+extern int utc_system_sensor_listener_unset_events_cb_n(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_p(void);
 extern int utc_system_sensor_listener_set_accuracy_cb_n(void);
 extern int utc_system_sensor_listener_unset_accuracy_cb_p(void);
@@ -149,6 +153,8 @@ extern int utc_system_sensor_provider_set_interval_changed_cb_p(void);
 extern int utc_system_sensor_provider_set_interval_changed_cb_n(void);
 extern int utc_system_sensor_provider_publish_p(void);
 extern int utc_system_sensor_provider_publish_n(void);
+extern int utc_system_sensor_provider_publish_events_p(void);
+extern int utc_system_sensor_provider_publish_events_n(void);
 extern int utc_system_sensor_util_get_angle_change_p(void);
 extern int utc_system_sensor_util_get_angle_change_n(void);
 extern int utc_system_sensor_util_get_declination_p(void);
@@ -187,6 +193,10 @@ testcase tc_array[] = {
        {"utc_system_sensor_listener_set_event_cb_n",utc_system_sensor_listener_set_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_p",utc_system_sensor_listener_unset_event_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_event_cb_n",utc_system_sensor_listener_unset_event_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_p",utc_system_sensor_listener_set_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_set_events_cb_n",utc_system_sensor_listener_set_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_p",utc_system_sensor_listener_unset_events_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
+       {"utc_system_sensor_listener_unset_events_cb_n",utc_system_sensor_listener_unset_events_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_p",utc_system_sensor_listener_set_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_set_accuracy_cb_n",utc_system_sensor_listener_set_accuracy_cb_n,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
        {"utc_system_sensor_listener_unset_accuracy_cb_p",utc_system_sensor_listener_unset_accuracy_cb_p,utc_system_sensor_basic_startup,utc_system_sensor_basic_cleanup},
@@ -287,6 +297,8 @@ testcase tc_array[] = {
        {"utc_system_sensor_provider_set_interval_changed_cb_n",utc_system_sensor_provider_set_interval_changed_cb_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_p",utc_system_sensor_provider_publish_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_provider_publish_n",utc_system_sensor_provider_publish_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_p",utc_system_sensor_provider_publish_events_p,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
+       {"utc_system_sensor_provider_publish_events_n",utc_system_sensor_provider_publish_events_n,utc_system_sensor_provider_startup,utc_system_sensor_provider_cleanup},
        {"utc_system_sensor_util_get_angle_change_p",utc_system_sensor_util_get_angle_change_p,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_angle_change_n",utc_system_sensor_util_get_angle_change_n,utc_system_sensor_util_startup,NULL},
        {"utc_system_sensor_util_get_declination_p",utc_system_sensor_util_get_declination_p,utc_system_sensor_util_startup,NULL},
index fb8e767df5340d18e51a1484305d237e3ad99acd..1ed6d8ded44a304e47ab005d2c43a4e5fe18082d 100755 (executable)
@@ -169,6 +169,19 @@ static void test_callback(sensor_h sensor, sensor_event_s *event, void* user_dat
                g_main_loop_quit(g_mainloop);
 }
 
+static void test_events_callback(sensor_h sensor, sensor_event_s events[], int events_count, void *user_data)
+{
+       fprintf(stderr, "test_callback was called\n");
+
+       char* ud = (char*) user_data;
+       if(strcmp(ud, TEST_STRING) == 0) {
+               g_called = true;
+       }
+
+       if (g_main_loop_is_running(g_mainloop))
+               g_main_loop_quit(g_mainloop);
+}
+
 /**
  * @function           utc_system_sensor_basic_startup
  * @description                Called before each test
@@ -791,6 +804,148 @@ int utc_system_sensor_listener_unset_event_cb_n(void)
        return 0;
 }
 
+/**
+ * @testcase           utc_system_sensor_listener_set_events_cb_p
+ * @since_tizen                5.5
+ * @description                Registers a callback function to be invoked when a sensor events occurs.
+ */
+int utc_system_sensor_listener_set_events_cb_p(void)
+{
+       int i = 0;
+       int type_count;
+
+       type_count = sizeof(types) / sizeof(sensor_type_e);
+       for (i = 0; i < type_count; i++) {
+               int error = SENSOR_ERROR_NONE;
+               sensor_listener_h listener;
+               sensor_h sensor;
+               g_called = false;
+
+               error = sensor_get_default_sensor(types[i], &sensor);
+
+               if(!sensor_supported[i]){
+                       assert_eq(error,SENSOR_ERROR_NOT_SUPPORTED);
+               }
+               else{
+                       error = sensor_create_listener(sensor, &listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_listener_set_events_cb(listener, test_events_callback, TEST_STRING);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_listener_start(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       sensor_listener_set_option(listener, SENSOR_OPTION_ALWAYS_ON);
+
+                       wait_callback(types[i]);
+
+                       error = sensor_listener_stop(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_listener_unset_events_cb(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_destroy_listener(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       assert(g_called);
+               }
+       }
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_system_sensor_listener_set_events_cb_n
+ * @since_tizen                5.5
+ * @description                Registers a callback function to be invoked when a sensor event occurs with invalid parameter.
+ */
+int utc_system_sensor_listener_set_events_cb_n(void)
+{
+       int error = SENSOR_ERROR_NONE;
+
+       error = sensor_listener_set_events_cb(NULL, test_events_callback, TEST_STRING);
+
+       assert_eq(error, SENSOR_ERROR_INVALID_PARAMETER);
+
+       sensor_listener_h listener;
+       sensor_h sensor;
+
+       if (!sensor_supported[SENSOR_ACCELEROMETER])
+               return 0;
+
+       sensor_get_default_sensor(SENSOR_ACCELEROMETER, &sensor);
+
+       sensor_create_listener(sensor, &listener);
+
+       *(int *)listener = WRONG_HANDLE;
+
+       error = sensor_listener_set_events_cb(listener, test_events_callback, TEST_STRING);
+
+       assert_eq(error, SENSOR_ERROR_OPERATION_FAILED);
+
+       return 0;
+}
+
+
+/**
+ * @testcase           utc_system_sensor_listener_unset_events_cb_p
+ * @since_tizen                5.5
+ * @description                Unregisters the sensor callback function.
+ */
+int utc_system_sensor_listener_unset_events_cb_p(void)
+{
+       int i = 0;
+       int type_count;
+
+       type_count = sizeof(types) / sizeof(sensor_type_e);
+
+       for (i = 0; i < type_count; i++) {
+               int error = SENSOR_ERROR_NONE;
+               sensor_listener_h listener;
+               sensor_h sensor;
+               g_called = false;
+
+               error = sensor_get_default_sensor(types[i], &sensor);
+               if(!sensor_supported[i]){
+                       assert_eq(error,SENSOR_ERROR_NOT_SUPPORTED);
+               }
+               else{
+                       error = sensor_create_listener(sensor, &listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_listener_set_events_cb(listener, test_events_callback, TEST_STRING);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_listener_unset_events_cb(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+                       error = sensor_destroy_listener(listener);
+                       assert_eq(error, SENSOR_ERROR_NONE);
+
+               }
+       }
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_system_sensor_listener_unset_events_cb_n
+ * @since_tizen                5.5
+ * @description                Unregisters the sensor callback function with invalid parameter.
+ */
+int utc_system_sensor_listener_unset_events_cb_n(void)
+{
+       int error = SENSOR_ERROR_NONE;
+
+       error = sensor_listener_unset_events_cb(NULL);
+
+       assert_eq(error, SENSOR_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
 /**
  * @testcase           utc_system_sensor_listener_set_accuracy_cb_p
  * @since_tizen                2.3
index b96e146d34bda57fcc832079c10ff138cedfff10..ed70b5d6fb0b47173f0c2470565e6c18652f081a 100755 (executable)
@@ -896,3 +896,79 @@ int utc_system_sensor_provider_publish_n(void)
 
        return 0;
 }
+
+static gboolean test_publish_events(gpointer gdata)
+{
+       fprintf(stderr, "test_callback was called\n");
+
+       if (g_called) return FALSE;
+
+       sensor_provider_h provider = (sensor_provider_h)(gdata);
+       const int NUMBER_OF_EVENT = 100;
+       sensor_event_s data[NUMBER_OF_EVENT];
+
+       for (int i = 0 ; i < NUMBER_OF_EVENT; i++) {
+               data[i].accuracy = 3;
+               data[i].timestamp = 1000 + i;
+               data[i].value_count = 3;
+               data[i].values[0] = i;
+               data[i].values[1] = i;
+               data[i].values[2] = i;
+       }
+
+       sensor_provider_publish_events(provider, data, NUMBER_OF_EVENT);
+       return TRUE;
+}
+
+/**
+ * @testcase           utc_system_sensor_provider_publish_events_p
+ * @since_tizen                5.5
+ * @description                Publishes sensor events to it's listeners
+ */
+int utc_system_sensor_provider_publish_events_p(void)
+{
+       int error = SENSOR_ERROR_NONE;
+       sensor_listener_h listener;
+       sensor_provider_h provider;
+       g_called = false;
+
+       error = sensor_create_provider(TEST_SENSOR_URI, &provider);
+       assert_eq(error, SENSOR_ERROR_NONE);
+
+       error = sensor_add_provider(provider);
+       assert_eq(error, SENSOR_ERROR_NONE);
+
+       g_timeout_add(100, test_publish_events, provider);
+
+       start_mysensor(&listener, TEST_STRING);
+
+       wait_callback();
+       assert_eq(g_called, true);
+
+       stop_mysensor(listener);
+
+       error = sensor_remove_provider(provider);
+       assert_eq(error, SENSOR_ERROR_NONE);
+
+       error = sensor_destroy_provider(provider);
+       assert_eq(error, SENSOR_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_system_sensor_provider_publish_events_n
+ * @since_tizen                5.5
+ * @description                Publishes sensor events to it's listeners with invalid parameter
+ */
+int utc_system_sensor_provider_publish_events_n(void)
+{
+       int error = SENSOR_ERROR_NONE;
+       sensor_event_s event[10];
+
+       error = sensor_provider_publish_events(NULL, event, 10);
+       assert_eq(error, SENSOR_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+