extern int utc_nnstreamer_scenario_protobuf_n3 (void);
extern int utc_nnstreamer_scenario_protobuf_n4 (void);
extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
testcase tc_array[] = {
{"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
{"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+ {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
{NULL, NULL}
};
extern int utc_nnstreamer_scenario_protobuf_n3 (void);
extern int utc_nnstreamer_scenario_protobuf_n4 (void);
extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
testcase tc_array[] = {
{"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
{"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+ {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
{NULL, NULL}
};
extern int utc_nnstreamer_scenario_protobuf_n3 (void);
extern int utc_nnstreamer_scenario_protobuf_n4 (void);
extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
testcase tc_array[] = {
{"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
{"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+ {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
{NULL, NULL}
};
extern int utc_nnstreamer_scenario_protobuf_n3 (void);
extern int utc_nnstreamer_scenario_protobuf_n4 (void);
extern int utc_nnstreamer_scenario_protobuf_n5 (void);
+extern int utc_nnstreamer_scenario_tizensensor_p (void);
+extern int utc_nnstreamer_scenario_tizensensor_n1 (void);
+
+extern int utc_nnstreamer_scenario_tizensensor_n2 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n3 (void);
+extern int utc_nnstreamer_scenario_tizensensor_n4 (void);
testcase tc_array[] = {
{"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
{"utc_nnstreamer_scenario_protobuf_n3", utc_nnstreamer_scenario_protobuf_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n4", utc_nnstreamer_scenario_protobuf_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
{"utc_nnstreamer_scenario_protobuf_n5", utc_nnstreamer_scenario_protobuf_n5, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_p", utc_nnstreamer_scenario_tizensensor_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n1", utc_nnstreamer_scenario_tizensensor_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+ {"utc_nnstreamer_scenario_tizensensor_n2", utc_nnstreamer_scenario_tizensensor_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n3", utc_nnstreamer_scenario_tizensensor_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+ {"utc_nnstreamer_scenario_tizensensor_n4", utc_nnstreamer_scenario_tizensensor_n4, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
{NULL, NULL}
};
return 0;
}
+
+/**
+ * @testcase utc_nnstreamer_scenario_tizensensor_p
+ * @since_tizen 6.0
+ * @description Test the tensor_src_tizensensor (accelerometer sensor) to work
+ */
+int utc_nnstreamer_scenario_tizensensor_p (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_pipeline_h handle;
+ ml_pipeline_state_e state;
+ int status;
+
+ bool accelerometer_is_supported = false;
+ int ret = system_info_get_platform_bool (
+ "http://tizen.org/feature/sensor.accelerometer",
+ &accelerometer_is_supported);
+ if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+ FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+ return 0;
+ }
+
+ gchar * pipeline = g_strdup_printf (
+ "tensor_src_tizensensor type=accelerometer ! tensor_sink sync=true");
+
+ status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+ assert_eq (status, ML_ERROR_NONE);
+
+ status = ml_pipeline_start (handle);
+ assert_eq (status, ML_ERROR_NONE);
+
+ status = ml_pipeline_get_state (handle, &state);
+ assert_eq (status, ML_ERROR_NONE); /* At this moment, it can be READY, PAUSED, or PLAYING */
+ assert_neq (state, ML_PIPELINE_STATE_UNKNOWN);
+ assert_neq (state, ML_PIPELINE_STATE_NULL);
+
+ g_usleep (SLEEP_TIME); /* SLEEP_TIME is good for general systems, but not enough for emulators to start gst pipeline. Let a few frames flow. */
+
+ wait_for_start (handle, state, status);
+
+ assert_eq (state, ML_PIPELINE_STATE_PLAYING);
+
+ status = ml_pipeline_stop (handle);
+ assert_eq (status, ML_ERROR_NONE);
+ g_usleep (SLEEP_TIME); /* Let a few frames flow. */
+
+ status = ml_pipeline_get_state (handle, &state);
+ assert_eq (status, ML_ERROR_NONE);
+ assert_eq (state, ML_PIPELINE_STATE_PAUSED);
+
+ status = ml_pipeline_destroy (handle);
+ assert_eq (status, ML_ERROR_NONE);
+
+ g_free (pipeline);
+
+ return 0;
+}
+
+/**
+ * @testcase utc_nnstreamer_scenario_tizensensor_n1
+ * @since_tizen 6.0
+ * @description Negative test case to construct pipeline with invalid sensor type
+ */
+int utc_nnstreamer_scenario_tizensensor_n1 (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_pipeline_h handle;
+ ml_pipeline_state_e state;
+ int status;
+
+ /* there is no sensor type named "invalid_sensor" */
+ gchar * pipeline = g_strdup_printf (
+ "tensor_src_tizensensor type=invalid_sensor ! tensor_sink sync=true");
+
+ status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+ assert_eq (status, ML_ERROR_STREAMS_PIPE);
+
+ g_free (pipeline);
+
+ return 0;
+}
+
+/**
+ * @testcase utc_nnstreamer_scenario_tizensensor_n2
+ * @since_tizen 6.0
+ * @description Negative test case to use pipeline with invalid tensor type
+ */
+int utc_nnstreamer_scenario_tizensensor_n2 (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_pipeline_h handle;
+ ml_pipeline_state_e state;
+ int status;
+
+ bool accelerometer_is_supported = false;
+ int ret = system_info_get_platform_bool (
+ "http://tizen.org/feature/sensor.accelerometer",
+ &accelerometer_is_supported);
+ if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+ FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+ return 0;
+ }
+
+ /* accelerometer produces float32 data but the capsfilter set to uint8 */
+ gchar * pipeline = g_strdup_printf (
+ "tensor_src_tizensensor type=accelerometer ! "
+ "other/tensor,dimension=(string)3:1:1:1,type=(string)uint8 ! "
+ "tensor_sink sync=true");
+
+ /*
+ * Because the source is a live-source, the pipeline construction
+ * and start success. Negotiation failure occurs after the start of pipeline
+ */
+ status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+ assert_eq (status, ML_ERROR_NONE);
+
+ wait_for_start (handle, state, status);
+
+ g_usleep (SLEEP_TIME);
+
+ status = ml_pipeline_get_state (handle, &state);
+ assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+ g_free (pipeline);
+
+ return 0;
+}
+
+/**
+ * @testcase utc_nnstreamer_scenario_tizensensor_n3
+ * @since_tizen 6.0
+ * @description Negative test case to use pipeline with invalid tensor dimension
+ */
+int utc_nnstreamer_scenario_tizensensor_n3 (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_pipeline_h handle;
+ ml_pipeline_state_e state;
+ int status;
+
+ bool accelerometer_is_supported = false;
+ int ret = system_info_get_platform_bool (
+ "http://tizen.org/feature/sensor.accelerometer",
+ &accelerometer_is_supported);
+ if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+ FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+ return 0;
+ }
+
+ /* accelerometer produces 3:1:1:1 data but the capsfilter set to 1:1:1:1 */
+ gchar * pipeline = g_strdup_printf (
+ "tensor_src_tizensensor type=accelerometer ! "
+ "other/tensor,dimension=(string)1:1:1:1,type=(string)float32 ! "
+ "tensor_sink sync=true");
+
+
+ /*
+ * Because the source is a live-source, the pipeline construction
+ * and start success. Negotiation failure occurs after the start of pipeline
+ */
+ status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+ assert_eq (status, ML_ERROR_NONE); /* The pipeline does not preroll because the source is a live-source */
+
+ wait_for_start (handle, state, status);
+
+ g_usleep (SLEEP_TIME);
+
+ status = ml_pipeline_get_state (handle, &state);
+ assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+ g_free (pipeline);
+
+ return 0;
+}
+
+/**
+ * @testcase utc_nnstreamer_scenario_tizensensor_n4
+ * @since_tizen 6.0
+ * @description Negative test case to use pipeline with invalid framerate
+ */
+int utc_nnstreamer_scenario_tizensensor_n4 (void)
+{
+ IS_SUPPORT_FEATURE;
+ ml_pipeline_h handle;
+ ml_pipeline_state_e state;
+ int status;
+
+ bool accelerometer_is_supported = false;
+ int ret = system_info_get_platform_bool (
+ "http://tizen.org/feature/sensor.accelerometer",
+ &accelerometer_is_supported);
+ if (ret != SYSTEM_INFO_ERROR_NONE || !accelerometer_is_supported) {
+ FPRINTF("[%s][%d][%s] feature sensor.accelerometer is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
+ return 0;
+ }
+
+ /* accelerometer produces @ 10/1 framerate but the capsfilter set to 1/1 framerate */
+ gchar * pipeline = g_strdup_printf (
+ "tensor_src_tizensensor type=accelerometer framerate=10/1 ! "
+ "other/tensor,dimension=(string)3:1:1:1,type=(string)float32,framerate=1/1 ! "
+ "tensor_sink sync=true");
+
+ /*
+ * Because the source is a live-source, the pipeline construction
+ * and start success. Negotiation failure occurs after the start of pipeline
+ */
+ status = ml_pipeline_construct (pipeline, NULL, NULL, &handle);
+ assert_eq (status, ML_ERROR_NONE); /* The pipeline does not preroll because the source is a live-source */
+
+ wait_for_start (handle, state, status);
+
+ g_usleep (SLEEP_TIME);
+
+ status = ml_pipeline_get_state (handle, &state);
+ assert_eq (status, ML_ERROR_STREAMS_PIPE); /* negotiation failed */
+
+ g_free (pipeline);
+
+ return 0;
+}
\ No newline at end of file