[UTC][Machine Learning][ACR-1503][add testcases for the added functions and the added... 79/228079/11
authorHyoungJoo Ahn <hello.ahn@samsung.com>
Thu, 19 Mar 2020 02:36:47 +0000 (11:36 +0900)
committerHyoungJoo Ahn <hello.ahn@samsung.com>
Fri, 3 Apr 2020 08:19:25 +0000 (17:19 +0900)
Change-Id: I7224a6917fe332fa42d5c7da8bf39cab9bcfb54f
Signed-off-by: HyoungJoo Ahn <hello.ahn@samsung.com>
14 files changed:
src/utc/nnstreamer/res/add.tflite [new file with mode: 0644]
src/utc/nnstreamer/tct-nnstreamer-core_mobile.h
src/utc/nnstreamer/tct-nnstreamer-core_tizeniot.h
src/utc/nnstreamer/tct-nnstreamer-core_tv.h
src/utc/nnstreamer/tct-nnstreamer-core_wearable.h
src/utc/nnstreamer/utc-nnstreamer-pipeline-sink.c
src/utc/nnstreamer/utc-nnstreamer-pipeline-src.c
src/utc/nnstreamer/utc-nnstreamer-pipeline-switch.c
src/utc/nnstreamer/utc-nnstreamer-pipeline-tensor-data.c
src/utc/nnstreamer/utc-nnstreamer-pipeline-tensor-info.c
src/utc/nnstreamer/utc-nnstreamer-pipeline-valve.c
src/utc/nnstreamer/utc-nnstreamer-pipeline.c
src/utc/nnstreamer/utc-nnstreamer-scenario.c
src/utc/nnstreamer/utc-nnstreamer-single.c

diff --git a/src/utc/nnstreamer/res/add.tflite b/src/utc/nnstreamer/res/add.tflite
new file mode 100644 (file)
index 0000000..e748b68
Binary files /dev/null and b/src/utc/nnstreamer/res/add.tflite differ
index 3aa65b4c72c34eed7b32e8407c493cc49df34bc9..c3ec164242f1a839b3a1d795a77c871f4bc80898 100755 (executable)
@@ -138,34 +138,44 @@ extern int utc_ml_single_get_output_info_p (void);
 extern int utc_ml_single_get_output_info_n (void);
 extern int utc_ml_single_set_timeout_p (void);
 extern int utc_ml_single_set_timeout_n (void);
-extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
+extern int utc_ml_single_set_input_info_p (void);
+
+extern int utc_ml_single_set_input_info_n (void);
+extern int utc_ml_single_set_property_p (void);
+extern int utc_ml_single_set_property_n (void);
+extern int utc_ml_single_get_property_p (void);
+extern int utc_ml_single_get_property_n (void);
 
+extern int utc_ml_single_invoke_dynamic_p (void);
+extern int utc_ml_single_invoke_dynamic_n (void);
+extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p1 (void);
-
 extern int utc_nnstreamer_scenario_pipeline_state_test_p2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p3 (void);
+
 extern int utc_nnstreamer_scenario_valve_error_cases_n (void);
 extern int utc_nnstreamer_scenario_sink_p1 (void);
 extern int utc_nnstreamer_scenario_sink_p2 (void);
-
 extern int utc_nnstreamer_scenario_sink_error_cases_n (void);
 extern int utc_nnstreamer_scenario_src_p (void);
+
 extern int utc_nnstreamer_scenario_src_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n3 (void);
-
 extern int utc_nnstreamer_scenario_switch_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_switch_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_switch_pipeline_error_cases_n (void);
 extern int utc_nnstreamer_scenario_check_nnfw_availability_p (void);
 extern int utc_nnstreamer_scenario_check_tensor_info_utilities_p (void);
-
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p1 (void);
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p2 (void);
+
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_n (void);
 
 testcase tc_array[] = {
@@ -269,34 +279,44 @@ testcase tc_array[] = {
   {"utc_ml_single_get_output_info_n", utc_ml_single_get_output_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_p", utc_ml_single_set_timeout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_n", utc_ml_single_set_timeout_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
-  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_ml_single_set_input_info_p", utc_ml_single_set_input_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_set_input_info_n", utc_ml_single_set_input_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_p", utc_ml_single_set_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_n", utc_ml_single_set_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_p", utc_ml_single_get_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_n", utc_ml_single_get_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
 
+  {"utc_ml_single_invoke_dynamic_p", utc_ml_single_invoke_dynamic_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_dynamic_n", utc_ml_single_invoke_dynamic_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n1", utc_nnstreamer_scenario_construct_pipeline_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n2", utc_nnstreamer_scenario_construct_pipeline_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p1", utc_nnstreamer_scenario_pipeline_state_test_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_pipeline_state_test_p2", utc_nnstreamer_scenario_pipeline_state_test_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p3", utc_nnstreamer_scenario_pipeline_state_test_p3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_valve_error_cases_n", utc_nnstreamer_scenario_valve_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p1", utc_nnstreamer_scenario_sink_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p2", utc_nnstreamer_scenario_sink_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_sink_error_cases_n", utc_nnstreamer_scenario_sink_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_p", utc_nnstreamer_scenario_src_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_src_error_case_n1", utc_nnstreamer_scenario_src_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n2", utc_nnstreamer_scenario_src_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n3", utc_nnstreamer_scenario_src_error_case_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_switch_pipeline_p1", utc_nnstreamer_scenario_switch_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_switch_pipeline_p2", utc_nnstreamer_scenario_switch_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_switch_pipeline_error_cases_n", utc_nnstreamer_scenario_switch_pipeline_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_nnfw_availability_p", utc_nnstreamer_scenario_check_nnfw_availability_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_tensor_info_utilities_p", utc_nnstreamer_scenario_check_tensor_info_utilities_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p1", utc_nnstreamer_scenario_filter_tensorflow_lite_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p2", utc_nnstreamer_scenario_filter_tensorflow_lite_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_n", utc_nnstreamer_scenario_filter_tensorflow_lite_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {NULL, NULL}
 };
index 5c517b6e54d850344acbb887330eb20e7d38e5b1..c3ec164242f1a839b3a1d795a77c871f4bc80898 100755 (executable)
 #include "testcase.h"
 #include "tct_common.h"
 
+extern void utc_nnstreamer_single_startup (void);
+extern void utc_nnstreamer_single_cleanup (void);
+extern void utc_nnstreamer_pipeline_startup (void);
+extern void utc_nnstreamer_pipeline_cleanup (void);
+extern void utc_nnstreamer_pipeline_sink_startup (void);
+extern void utc_nnstreamer_pipeline_sink_cleanup (void);
+extern void utc_nnstreamer_pipeline_src_startup (void);
+extern void utc_nnstreamer_pipeline_src_cleanup (void);
+extern void utc_nnstreamer_pipeline_switch_startup (void);
+extern void utc_nnstreamer_pipeline_switch_cleanup (void);
+extern void utc_nnstreamer_pipeline_valve_startup (void);
+extern void utc_nnstreamer_pipeline_valve_cleanup (void);
+extern void utc_nnstreamer_pipeline_tensor_info_startup (void);
+extern void utc_nnstreamer_pipeline_tensor_info_cleanup (void);
+extern void utc_nnstreamer_pipeline_tensor_data_startup (void);
+extern void utc_nnstreamer_pipeline_tensor_data_cleanup (void);
+extern void utc_nnstreamer_scenario_startup (void);
+extern void utc_nnstreamer_scenario_cleanup (void);
+
+extern int utc_ml_pipeline_construct_p (void);
+extern int utc_ml_pipeline_construct_n (void);
+extern int utc_ml_pipeline_destroy_p (void);
+extern int utc_ml_pipeline_destroy_n (void);
+extern int utc_ml_pipeline_get_state_p (void);
+
+extern int utc_ml_pipeline_get_state_n (void);
+extern int utc_ml_pipeline_start_p (void);
+extern int utc_ml_pipeline_start_n (void);
+extern int utc_ml_pipeline_stop_p (void);
+extern int utc_ml_pipeline_stop_n (void);
+
+extern int utc_ml_check_nnfw_availability_p (void);
+extern int utc_ml_check_nnfw_availability_n (void);
+extern int utc_ml_pipeline_sink_register_p (void);
+extern int utc_ml_pipeline_sink_register_n (void);
+extern int utc_ml_pipeline_sink_unregister_p (void);
+
+extern int utc_ml_pipeline_sink_unregister_n (void);
+extern int utc_ml_pipeline_src_get_handle_p (void);
+extern int utc_ml_pipeline_src_get_handle_n (void);
+extern int utc_ml_pipeline_src_release_handle_p (void);
+extern int utc_ml_pipeline_src_release_handle_n (void);
+
+extern int utc_ml_pipeline_src_input_data_p (void);
+extern int utc_ml_pipeline_src_input_data_n (void);
+extern int utc_ml_pipeline_src_get_tensors_info_p (void);
+extern int utc_ml_pipeline_src_get_tensors_info_n (void);
+extern int utc_ml_pipeline_switch_get_handle_p (void);
+
+extern int utc_ml_pipeline_switch_get_handle_n (void);
+extern int utc_ml_pipeline_switch_release_handle_p (void);
+extern int utc_ml_pipeline_switch_release_handle_n (void);
+extern int utc_ml_pipeline_switch_select_p (void);
+extern int utc_ml_pipeline_switch_select_n (void);
+
+extern int utc_ml_pipeline_switch_get_pad_list_p (void);
+extern int utc_ml_pipeline_switch_get_pad_list_n (void);
+extern int utc_ml_pipeline_valve_get_handle_p (void);
+extern int utc_ml_pipeline_valve_get_handle_n (void);
+extern int utc_ml_pipeline_valve_release_handle_p (void);
+
+extern int utc_ml_pipeline_valve_release_handle_n (void);
+extern int utc_ml_pipeline_valve_set_open_p (void);
+extern int utc_ml_pipeline_valve_set_open_n (void);
+extern int utc_ml_tensors_info_create_p (void);
+extern int utc_ml_tensors_info_create_n (void);
+
+extern int utc_ml_tensors_info_destroy_p (void);
+extern int utc_ml_tensors_info_destroy_n (void);
+extern int utc_ml_tensors_info_validate_p (void);
+extern int utc_ml_tensors_info_validate_n (void);
+extern int utc_ml_tensors_info_clone_p (void);
+
+extern int utc_ml_tensors_info_clone_n (void);
+extern int utc_ml_tensors_info_set_count_p (void);
+extern int utc_ml_tensors_info_set_count_n (void);
+extern int utc_ml_tensors_info_get_count_p (void);
+extern int utc_ml_tensors_info_get_count_n (void);
+
+extern int utc_ml_tensors_info_set_tensor_name_p (void);
+extern int utc_ml_tensors_info_set_tensor_name_n (void);
+extern int utc_ml_tensors_info_get_tensor_name_p (void);
+extern int utc_ml_tensors_info_get_tensor_name_n (void);
+extern int utc_ml_tensors_info_set_tensor_type_p (void);
+
+extern int utc_ml_tensors_info_set_tensor_type_n (void);
+extern int utc_ml_tensors_info_get_tensor_type_p (void);
+extern int utc_ml_tensors_info_get_tensor_type_n (void);
+extern int utc_ml_tensors_info_set_tensor_dimension_p (void);
+extern int utc_ml_tensors_info_set_tensor_dimension_n (void);
+
+extern int utc_ml_tensors_info_get_tensor_dimension_p (void);
+extern int utc_ml_tensors_info_get_tensor_dimension_n (void);
+extern int utc_ml_tensors_info_get_tensor_size_p (void);
+extern int utc_ml_tensors_info_get_tensor_size_n (void);
+extern int utc_ml_tensors_data_create_p (void);
+
+extern int utc_ml_tensors_data_create_n (void);
+extern int utc_ml_tensors_data_destroy_p (void);
+extern int utc_ml_tensors_data_destroy_n (void);
+extern int utc_ml_tensors_data_get_tensor_data_p (void);
+extern int utc_ml_tensors_data_get_tensor_data_n (void);
+
+extern int utc_ml_tensors_data_set_tensor_data_p (void);
+extern int utc_ml_tensors_data_set_tensor_data_n (void);
+extern int utc_ml_single_open_p (void);
+extern int utc_ml_single_open_n (void);
+extern int utc_ml_single_close_p (void);
+
+extern int utc_ml_single_close_n (void);
+extern int utc_ml_single_invoke_p (void);
+extern int utc_ml_single_invoke_n (void);
+extern int utc_ml_single_get_input_info_p (void);
+extern int utc_ml_single_get_input_info_n (void);
+
+extern int utc_ml_single_get_output_info_p (void);
+extern int utc_ml_single_get_output_info_n (void);
+extern int utc_ml_single_set_timeout_p (void);
+extern int utc_ml_single_set_timeout_n (void);
+extern int utc_ml_single_set_input_info_p (void);
+
+extern int utc_ml_single_set_input_info_n (void);
+extern int utc_ml_single_set_property_p (void);
+extern int utc_ml_single_set_property_n (void);
+extern int utc_ml_single_get_property_p (void);
+extern int utc_ml_single_get_property_n (void);
+
+extern int utc_ml_single_invoke_dynamic_p (void);
+extern int utc_ml_single_invoke_dynamic_n (void);
+extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
+extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
+extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p2 (void);
+
+extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n1 (void);
+extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n2 (void);
+extern int utc_nnstreamer_scenario_pipeline_state_test_p1 (void);
+extern int utc_nnstreamer_scenario_pipeline_state_test_p2 (void);
+extern int utc_nnstreamer_scenario_pipeline_state_test_p3 (void);
+
+extern int utc_nnstreamer_scenario_valve_error_cases_n (void);
+extern int utc_nnstreamer_scenario_sink_p1 (void);
+extern int utc_nnstreamer_scenario_sink_p2 (void);
+extern int utc_nnstreamer_scenario_sink_error_cases_n (void);
+extern int utc_nnstreamer_scenario_src_p (void);
+
+extern int utc_nnstreamer_scenario_src_error_case_n1 (void);
+extern int utc_nnstreamer_scenario_src_error_case_n2 (void);
+extern int utc_nnstreamer_scenario_src_error_case_n3 (void);
+extern int utc_nnstreamer_scenario_switch_pipeline_p1 (void);
+extern int utc_nnstreamer_scenario_switch_pipeline_p2 (void);
+
+extern int utc_nnstreamer_scenario_switch_pipeline_error_cases_n (void);
+extern int utc_nnstreamer_scenario_check_nnfw_availability_p (void);
+extern int utc_nnstreamer_scenario_check_tensor_info_utilities_p (void);
+extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p1 (void);
+extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p2 (void);
+
+extern int utc_nnstreamer_scenario_filter_tensorflow_lite_n (void);
+
 testcase tc_array[] = {
-       {NULL, NULL}
+  {"utc_ml_pipeline_construct_p", utc_ml_pipeline_construct_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_construct_n", utc_ml_pipeline_construct_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_destroy_p", utc_ml_pipeline_destroy_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_destroy_n", utc_ml_pipeline_destroy_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_get_state_p", utc_ml_pipeline_get_state_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+
+  {"utc_ml_pipeline_get_state_n", utc_ml_pipeline_get_state_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_start_p", utc_ml_pipeline_start_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_start_n", utc_ml_pipeline_start_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_stop_p", utc_ml_pipeline_stop_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_stop_n", utc_ml_pipeline_stop_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+
+  {"utc_ml_check_nnfw_availability_p", utc_ml_check_nnfw_availability_p, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_check_nnfw_availability_n", utc_ml_check_nnfw_availability_n, utc_nnstreamer_pipeline_startup, utc_nnstreamer_pipeline_cleanup},
+  {"utc_ml_pipeline_sink_register_p", utc_ml_pipeline_sink_register_p, utc_nnstreamer_pipeline_sink_startup, utc_nnstreamer_pipeline_sink_cleanup},
+  {"utc_ml_pipeline_sink_register_n", utc_ml_pipeline_sink_register_n, utc_nnstreamer_pipeline_sink_startup, utc_nnstreamer_pipeline_sink_cleanup},
+  {"utc_ml_pipeline_sink_unregister_p", utc_ml_pipeline_sink_unregister_p, utc_nnstreamer_pipeline_sink_startup, utc_nnstreamer_pipeline_sink_cleanup},
+
+  {"utc_ml_pipeline_sink_unregister_n", utc_ml_pipeline_sink_unregister_n, utc_nnstreamer_pipeline_sink_startup, utc_nnstreamer_pipeline_sink_cleanup},
+  {"utc_ml_pipeline_src_get_handle_p", utc_ml_pipeline_src_get_handle_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_get_handle_n", utc_ml_pipeline_src_get_handle_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_release_handle_p", utc_ml_pipeline_src_release_handle_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_release_handle_n", utc_ml_pipeline_src_release_handle_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+
+  {"utc_ml_pipeline_src_input_data_p", utc_ml_pipeline_src_input_data_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_input_data_n", utc_ml_pipeline_src_input_data_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_get_tensors_info_p", utc_ml_pipeline_src_get_tensors_info_p, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_src_get_tensors_info_n", utc_ml_pipeline_src_get_tensors_info_n, utc_nnstreamer_pipeline_src_startup, utc_nnstreamer_pipeline_src_cleanup},
+  {"utc_ml_pipeline_switch_get_handle_p", utc_ml_pipeline_switch_get_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+
+  {"utc_ml_pipeline_switch_get_handle_n", utc_ml_pipeline_switch_get_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_switch_release_handle_p", utc_ml_pipeline_switch_release_handle_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_switch_release_handle_n", utc_ml_pipeline_switch_release_handle_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_switch_select_p", utc_ml_pipeline_switch_select_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_switch_select_n", utc_ml_pipeline_switch_select_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+
+  {"utc_ml_pipeline_switch_get_pad_list_p", utc_ml_pipeline_switch_get_pad_list_p, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_switch_get_pad_list_n", utc_ml_pipeline_switch_get_pad_list_n, utc_nnstreamer_pipeline_switch_startup, utc_nnstreamer_pipeline_switch_cleanup},
+  {"utc_ml_pipeline_valve_get_handle_p", utc_ml_pipeline_valve_get_handle_p, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+  {"utc_ml_pipeline_valve_get_handle_n", utc_ml_pipeline_valve_get_handle_n, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+  {"utc_ml_pipeline_valve_release_handle_p", utc_ml_pipeline_valve_release_handle_p, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+
+  {"utc_ml_pipeline_valve_release_handle_n", utc_ml_pipeline_valve_release_handle_n, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+  {"utc_ml_pipeline_valve_set_open_p", utc_ml_pipeline_valve_set_open_p, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+  {"utc_ml_pipeline_valve_set_open_n", utc_ml_pipeline_valve_set_open_n, utc_nnstreamer_pipeline_valve_startup, utc_nnstreamer_pipeline_valve_cleanup},
+  {"utc_ml_tensors_info_create_p", utc_ml_tensors_info_create_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_create_n", utc_ml_tensors_info_create_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
+  {"utc_ml_tensors_info_destroy_p", utc_ml_tensors_info_destroy_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_destroy_n", utc_ml_tensors_info_destroy_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_validate_p", utc_ml_tensors_info_validate_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_validate_n", utc_ml_tensors_info_validate_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_clone_p", utc_ml_tensors_info_clone_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
+  {"utc_ml_tensors_info_clone_n", utc_ml_tensors_info_clone_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_count_p", utc_ml_tensors_info_set_count_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_count_n", utc_ml_tensors_info_set_count_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_count_p", utc_ml_tensors_info_get_count_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_count_n", utc_ml_tensors_info_get_count_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
+  {"utc_ml_tensors_info_set_tensor_name_p", utc_ml_tensors_info_set_tensor_name_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_tensor_name_n", utc_ml_tensors_info_set_tensor_name_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_name_p", utc_ml_tensors_info_get_tensor_name_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_name_n", utc_ml_tensors_info_get_tensor_name_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_tensor_type_p", utc_ml_tensors_info_set_tensor_type_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
+  {"utc_ml_tensors_info_set_tensor_type_n", utc_ml_tensors_info_set_tensor_type_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_type_p", utc_ml_tensors_info_get_tensor_type_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_type_n", utc_ml_tensors_info_get_tensor_type_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_tensor_dimension_p", utc_ml_tensors_info_set_tensor_dimension_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_set_tensor_dimension_n", utc_ml_tensors_info_set_tensor_dimension_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+
+  {"utc_ml_tensors_info_get_tensor_dimension_p", utc_ml_tensors_info_get_tensor_dimension_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_dimension_n", utc_ml_tensors_info_get_tensor_dimension_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_size_p", utc_ml_tensors_info_get_tensor_size_p, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_info_get_tensor_size_n", utc_ml_tensors_info_get_tensor_size_n, utc_nnstreamer_pipeline_tensor_info_startup, utc_nnstreamer_pipeline_tensor_info_cleanup},
+  {"utc_ml_tensors_data_create_p", utc_ml_tensors_data_create_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+
+  {"utc_ml_tensors_data_create_n", utc_ml_tensors_data_create_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_tensors_data_destroy_p", utc_ml_tensors_data_destroy_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_tensors_data_destroy_n", utc_ml_tensors_data_destroy_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_tensors_data_get_tensor_data_p", utc_ml_tensors_data_get_tensor_data_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_tensors_data_get_tensor_data_n", utc_ml_tensors_data_get_tensor_data_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+
+  {"utc_ml_tensors_data_set_tensor_data_p", utc_ml_tensors_data_set_tensor_data_p, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_tensors_data_set_tensor_data_n", utc_ml_tensors_data_set_tensor_data_n, utc_nnstreamer_pipeline_tensor_data_startup, utc_nnstreamer_pipeline_tensor_data_cleanup},
+  {"utc_ml_single_open_p", utc_ml_single_open_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_open_n", utc_ml_single_open_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_close_p", utc_ml_single_close_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_close_n", utc_ml_single_close_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_p", utc_ml_single_invoke_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_n", utc_ml_single_invoke_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_input_info_p", utc_ml_single_get_input_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_input_info_n", utc_ml_single_get_input_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_get_output_info_p", utc_ml_single_get_output_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_output_info_n", utc_ml_single_get_output_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_timeout_p", utc_ml_single_set_timeout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_timeout_n", utc_ml_single_set_timeout_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_input_info_p", utc_ml_single_set_input_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_set_input_info_n", utc_ml_single_set_input_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_p", utc_ml_single_set_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_n", utc_ml_single_set_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_p", utc_ml_single_get_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_n", utc_ml_single_get_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_invoke_dynamic_p", utc_ml_single_invoke_dynamic_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_dynamic_n", utc_ml_single_invoke_dynamic_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_construct_pipeline_error_case_n1", utc_nnstreamer_scenario_construct_pipeline_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_construct_pipeline_error_case_n2", utc_nnstreamer_scenario_construct_pipeline_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_pipeline_state_test_p1", utc_nnstreamer_scenario_pipeline_state_test_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_pipeline_state_test_p2", utc_nnstreamer_scenario_pipeline_state_test_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_pipeline_state_test_p3", utc_nnstreamer_scenario_pipeline_state_test_p3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_valve_error_cases_n", utc_nnstreamer_scenario_valve_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_sink_p1", utc_nnstreamer_scenario_sink_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_sink_p2", utc_nnstreamer_scenario_sink_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_sink_error_cases_n", utc_nnstreamer_scenario_sink_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_src_p", utc_nnstreamer_scenario_src_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_src_error_case_n1", utc_nnstreamer_scenario_src_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_src_error_case_n2", utc_nnstreamer_scenario_src_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_src_error_case_n3", utc_nnstreamer_scenario_src_error_case_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_switch_pipeline_p1", utc_nnstreamer_scenario_switch_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_switch_pipeline_p2", utc_nnstreamer_scenario_switch_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_switch_pipeline_error_cases_n", utc_nnstreamer_scenario_switch_pipeline_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_check_nnfw_availability_p", utc_nnstreamer_scenario_check_nnfw_availability_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_check_tensor_info_utilities_p", utc_nnstreamer_scenario_check_tensor_info_utilities_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_filter_tensorflow_lite_p1", utc_nnstreamer_scenario_filter_tensorflow_lite_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_nnstreamer_scenario_filter_tensorflow_lite_p2", utc_nnstreamer_scenario_filter_tensorflow_lite_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
+  {"utc_nnstreamer_scenario_filter_tensorflow_lite_n", utc_nnstreamer_scenario_filter_tensorflow_lite_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {NULL, NULL}
 };
 
 #endif // __TCT_NNSTREAMER-NATIVE_H__
index 3aa65b4c72c34eed7b32e8407c493cc49df34bc9..c3ec164242f1a839b3a1d795a77c871f4bc80898 100755 (executable)
@@ -138,34 +138,44 @@ extern int utc_ml_single_get_output_info_p (void);
 extern int utc_ml_single_get_output_info_n (void);
 extern int utc_ml_single_set_timeout_p (void);
 extern int utc_ml_single_set_timeout_n (void);
-extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
+extern int utc_ml_single_set_input_info_p (void);
+
+extern int utc_ml_single_set_input_info_n (void);
+extern int utc_ml_single_set_property_p (void);
+extern int utc_ml_single_set_property_n (void);
+extern int utc_ml_single_get_property_p (void);
+extern int utc_ml_single_get_property_n (void);
 
+extern int utc_ml_single_invoke_dynamic_p (void);
+extern int utc_ml_single_invoke_dynamic_n (void);
+extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p1 (void);
-
 extern int utc_nnstreamer_scenario_pipeline_state_test_p2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p3 (void);
+
 extern int utc_nnstreamer_scenario_valve_error_cases_n (void);
 extern int utc_nnstreamer_scenario_sink_p1 (void);
 extern int utc_nnstreamer_scenario_sink_p2 (void);
-
 extern int utc_nnstreamer_scenario_sink_error_cases_n (void);
 extern int utc_nnstreamer_scenario_src_p (void);
+
 extern int utc_nnstreamer_scenario_src_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n3 (void);
-
 extern int utc_nnstreamer_scenario_switch_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_switch_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_switch_pipeline_error_cases_n (void);
 extern int utc_nnstreamer_scenario_check_nnfw_availability_p (void);
 extern int utc_nnstreamer_scenario_check_tensor_info_utilities_p (void);
-
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p1 (void);
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p2 (void);
+
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_n (void);
 
 testcase tc_array[] = {
@@ -269,34 +279,44 @@ testcase tc_array[] = {
   {"utc_ml_single_get_output_info_n", utc_ml_single_get_output_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_p", utc_ml_single_set_timeout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_n", utc_ml_single_set_timeout_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
-  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_ml_single_set_input_info_p", utc_ml_single_set_input_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_set_input_info_n", utc_ml_single_set_input_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_p", utc_ml_single_set_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_n", utc_ml_single_set_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_p", utc_ml_single_get_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_n", utc_ml_single_get_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
 
+  {"utc_ml_single_invoke_dynamic_p", utc_ml_single_invoke_dynamic_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_dynamic_n", utc_ml_single_invoke_dynamic_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n1", utc_nnstreamer_scenario_construct_pipeline_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n2", utc_nnstreamer_scenario_construct_pipeline_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p1", utc_nnstreamer_scenario_pipeline_state_test_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_pipeline_state_test_p2", utc_nnstreamer_scenario_pipeline_state_test_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p3", utc_nnstreamer_scenario_pipeline_state_test_p3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_valve_error_cases_n", utc_nnstreamer_scenario_valve_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p1", utc_nnstreamer_scenario_sink_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p2", utc_nnstreamer_scenario_sink_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_sink_error_cases_n", utc_nnstreamer_scenario_sink_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_p", utc_nnstreamer_scenario_src_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_src_error_case_n1", utc_nnstreamer_scenario_src_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n2", utc_nnstreamer_scenario_src_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n3", utc_nnstreamer_scenario_src_error_case_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_switch_pipeline_p1", utc_nnstreamer_scenario_switch_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_switch_pipeline_p2", utc_nnstreamer_scenario_switch_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_switch_pipeline_error_cases_n", utc_nnstreamer_scenario_switch_pipeline_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_nnfw_availability_p", utc_nnstreamer_scenario_check_nnfw_availability_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_tensor_info_utilities_p", utc_nnstreamer_scenario_check_tensor_info_utilities_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p1", utc_nnstreamer_scenario_filter_tensorflow_lite_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p2", utc_nnstreamer_scenario_filter_tensorflow_lite_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_n", utc_nnstreamer_scenario_filter_tensorflow_lite_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {NULL, NULL}
 };
index 3aa65b4c72c34eed7b32e8407c493cc49df34bc9..c3ec164242f1a839b3a1d795a77c871f4bc80898 100755 (executable)
@@ -138,34 +138,44 @@ extern int utc_ml_single_get_output_info_p (void);
 extern int utc_ml_single_get_output_info_n (void);
 extern int utc_ml_single_set_timeout_p (void);
 extern int utc_ml_single_set_timeout_n (void);
-extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
+extern int utc_ml_single_set_input_info_p (void);
+
+extern int utc_ml_single_set_input_info_n (void);
+extern int utc_ml_single_set_property_p (void);
+extern int utc_ml_single_set_property_n (void);
+extern int utc_ml_single_get_property_p (void);
+extern int utc_ml_single_get_property_n (void);
 
+extern int utc_ml_single_invoke_dynamic_p (void);
+extern int utc_ml_single_invoke_dynamic_n (void);
+extern int utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_construct_destruct_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_construct_pipeline_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p1 (void);
-
 extern int utc_nnstreamer_scenario_pipeline_state_test_p2 (void);
 extern int utc_nnstreamer_scenario_pipeline_state_test_p3 (void);
+
 extern int utc_nnstreamer_scenario_valve_error_cases_n (void);
 extern int utc_nnstreamer_scenario_sink_p1 (void);
 extern int utc_nnstreamer_scenario_sink_p2 (void);
-
 extern int utc_nnstreamer_scenario_sink_error_cases_n (void);
 extern int utc_nnstreamer_scenario_src_p (void);
+
 extern int utc_nnstreamer_scenario_src_error_case_n1 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n2 (void);
 extern int utc_nnstreamer_scenario_src_error_case_n3 (void);
-
 extern int utc_nnstreamer_scenario_switch_pipeline_p1 (void);
 extern int utc_nnstreamer_scenario_switch_pipeline_p2 (void);
+
 extern int utc_nnstreamer_scenario_switch_pipeline_error_cases_n (void);
 extern int utc_nnstreamer_scenario_check_nnfw_availability_p (void);
 extern int utc_nnstreamer_scenario_check_tensor_info_utilities_p (void);
-
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p1 (void);
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_p2 (void);
+
 extern int utc_nnstreamer_scenario_filter_tensorflow_lite_n (void);
 
 testcase tc_array[] = {
@@ -269,34 +279,44 @@ testcase tc_array[] = {
   {"utc_ml_single_get_output_info_n", utc_ml_single_get_output_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_p", utc_ml_single_set_timeout_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
   {"utc_ml_single_set_timeout_n", utc_ml_single_set_timeout_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
-  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+  {"utc_ml_single_set_input_info_p", utc_ml_single_set_input_info_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+
+  {"utc_ml_single_set_input_info_n", utc_ml_single_set_input_info_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_p", utc_ml_single_set_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_set_property_n", utc_ml_single_set_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_p", utc_ml_single_get_property_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_get_property_n", utc_ml_single_get_property_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
 
+  {"utc_ml_single_invoke_dynamic_p", utc_ml_single_invoke_dynamic_p, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_ml_single_invoke_dynamic_n", utc_ml_single_invoke_dynamic_n, utc_nnstreamer_single_startup, utc_nnstreamer_single_cleanup},
+  {"utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p", utc_nnstreamer_scenario_construct_destruct_empty_pipeline_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p1", utc_nnstreamer_scenario_construct_destruct_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_destruct_pipeline_p2", utc_nnstreamer_scenario_construct_destruct_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n1", utc_nnstreamer_scenario_construct_pipeline_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_construct_pipeline_error_case_n2", utc_nnstreamer_scenario_construct_pipeline_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p1", utc_nnstreamer_scenario_pipeline_state_test_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_pipeline_state_test_p2", utc_nnstreamer_scenario_pipeline_state_test_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_pipeline_state_test_p3", utc_nnstreamer_scenario_pipeline_state_test_p3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_valve_error_cases_n", utc_nnstreamer_scenario_valve_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p1", utc_nnstreamer_scenario_sink_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_sink_p2", utc_nnstreamer_scenario_sink_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_sink_error_cases_n", utc_nnstreamer_scenario_sink_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_p", utc_nnstreamer_scenario_src_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_src_error_case_n1", utc_nnstreamer_scenario_src_error_case_n1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n2", utc_nnstreamer_scenario_src_error_case_n2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_src_error_case_n3", utc_nnstreamer_scenario_src_error_case_n3, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_switch_pipeline_p1", utc_nnstreamer_scenario_switch_pipeline_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_switch_pipeline_p2", utc_nnstreamer_scenario_switch_pipeline_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_switch_pipeline_error_cases_n", utc_nnstreamer_scenario_switch_pipeline_error_cases_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_nnfw_availability_p", utc_nnstreamer_scenario_check_nnfw_availability_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_check_tensor_info_utilities_p", utc_nnstreamer_scenario_check_tensor_info_utilities_p, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
-
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p1", utc_nnstreamer_scenario_filter_tensorflow_lite_p1, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_p2", utc_nnstreamer_scenario_filter_tensorflow_lite_p2, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
+
   {"utc_nnstreamer_scenario_filter_tensorflow_lite_n", utc_nnstreamer_scenario_filter_tensorflow_lite_n, utc_nnstreamer_scenario_startup, utc_nnstreamer_scenario_cleanup},
   {NULL, NULL}
 };
index f2d1ad956519fdcf1a0f91d8926dd8e86e1a1b52..9dd4aa5235a53cd77a885497908941ceedaa6d5e 100644 (file)
@@ -30,12 +30,12 @@ static TestPipeState * pipe_state;
 void utc_nnstreamer_pipeline_sink_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -57,6 +57,10 @@ void utc_nnstreamer_pipeline_sink_startup(void)
  */
 void utc_nnstreamer_pipeline_sink_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
+
   status = ml_pipeline_destroy (handle);
 
   g_free (pipeline);
index 84830eedf61beec52446535c5053d0da0b8cb69c..c3dae49bfb74a248d26167ec39a3024c8f80a239 100644 (file)
@@ -34,12 +34,12 @@ static gchar * pipeline;
 void utc_nnstreamer_pipeline_src_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -57,6 +57,9 @@ void utc_nnstreamer_pipeline_src_startup(void)
  */
 void utc_nnstreamer_pipeline_src_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
   status = ml_pipeline_stop (handle);
   status = ml_pipeline_destroy (handle);
 
index ecf19c387a5dc4f4baa4f4e94b5583b595d4a88d..8c96ed9cbdb2a3e8c1291088db881a5124ef1113 100644 (file)
@@ -34,12 +34,12 @@ static ml_pipeline_switch_e type;
 void utc_nnstreamer_pipeline_switch_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -64,6 +64,9 @@ void utc_nnstreamer_pipeline_switch_startup(void)
  */
 void utc_nnstreamer_pipeline_switch_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
   status = ml_pipeline_destroy (handle);
 
   g_free (pipeline);
index fb90fcab4ab54ee763c5e5391bd3715579d2497a..38bf57ffda05585f78a926bede46559f037106c0 100644 (file)
@@ -31,12 +31,12 @@ static ml_tensors_info_h info;
 void utc_nnstreamer_pipeline_tensor_data_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -51,6 +51,9 @@ void utc_nnstreamer_pipeline_tensor_data_startup(void)
  */
 void utc_nnstreamer_pipeline_tensor_data_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
   g_free (pipeline);
 }
 
index f37ff0b0a937aa5599e27074309a844ab7bb7540..eed0329f97682036c15824bfa797b31f328aa3f4 100644 (file)
@@ -27,12 +27,12 @@ static ml_tensors_info_h info;
 void utc_nnstreamer_pipeline_tensor_info_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -45,6 +45,9 @@ void utc_nnstreamer_pipeline_tensor_info_startup(void)
  */
 void utc_nnstreamer_pipeline_tensor_info_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
 }
 
 /**
index 37cbfa7dbdd3ef9622fb2e4f1fb44cdb4dff85f7..69de8ae284fd89cf23750d42bfba6ae1770c14d8 100644 (file)
@@ -29,12 +29,12 @@ static ml_pipeline_valve_h valve1;
 void utc_nnstreamer_pipeline_valve_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -50,6 +50,9 @@ void utc_nnstreamer_pipeline_valve_startup(void)
  */
 void utc_nnstreamer_pipeline_valve_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
   status = ml_pipeline_destroy (handle);
   g_free (pipeline);
 }
index c55bb3af7a3ee1696225c218647419274aae5198..1758de6a8c8c867c7e4ff71b242cf3c14b8433cf 100644 (file)
@@ -26,15 +26,15 @@ static ml_pipeline_state_e state;
  * @since_tizen                5.5
  * @description                called before the specific test cases
  */
-void utc_nnstreamer_pipeline_startup (void)
+void utc_nnstreamer_pipeline_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -45,8 +45,11 @@ void utc_nnstreamer_pipeline_startup (void)
  * @since_tizen                5.5
  * @description                called before the specific test cases
  */
-void utc_nnstreamer_pipeline_cleanup (void)
+void utc_nnstreamer_pipeline_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
 }
 
 /**
@@ -264,6 +267,7 @@ int utc_ml_check_nnfw_availability_p (void)
 {
   bool result;
   IS_SUPPORT_FEATURE;
+
   int status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_ANY, &result);
   assert_eq (status, ML_ERROR_NONE);
 
@@ -273,6 +277,27 @@ int utc_ml_check_nnfw_availability_p (void)
   status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_NPU, &result);
   assert_eq (status, ML_ERROR_NONE);
 
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_CPU, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_CPU_NEON, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_GPU, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_NPU_MOVIDIUS, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_NPU_EDGE_TPU, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_NPU_VIVANTE, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_check_nnfw_availability (ML_NNFW_TYPE_NNFW, ML_NNFW_HW_NPU_SR, &result);
+  assert_eq (status, ML_ERROR_NONE);
+
   return 0;
 }
 
index 13391651134b363488d4dec9b59fa0f9de027f8c..81e1e799bb3516f4a29d27fedb0f7c0b8dc5b28c 100644 (file)
 void utc_nnstreamer_scenario_startup(void)
 {
   int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -42,6 +42,9 @@ void utc_nnstreamer_scenario_startup(void)
  */
 void utc_nnstreamer_scenario_cleanup(void)
 {
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
 }
 
 /**
index c7277d451205048b180d2c6d7c5385ad14e950b4..e5a759103e502ae317b2025f50afa0f46a2bac0c 100644 (file)
@@ -31,12 +31,12 @@ const gchar *model_file = "mobilenet_v1_1.0_224_quant.tflite";
 void utc_nnstreamer_single_startup(void)
 {
        int ret = system_info_get_platform_bool(FEATURE_ML, &feature_ml);
-  if (ret != ML_ERROR_NONE || !feature_ml) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml) {
     FPRINTF("[%s][%d][%s] feature machine_learning is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
        ret = system_info_get_platform_bool(FEATURE_ML_INFERENCE, &feature_ml_inf);
-  if (ret != ML_ERROR_NONE || !feature_ml_inf) {
+  if (ret != SYSTEM_INFO_ERROR_NONE || !feature_ml_inf) {
     FPRINTF("[%s][%d][%s] feature machine_learning.inference is not supported!\\n", __FILE__, __LINE__, __FUNCTION__);
     return;
   }
@@ -67,7 +67,10 @@ void utc_nnstreamer_single_startup(void)
  */
 void utc_nnstreamer_single_cleanup(void)
 {
-  FPRINTF("[%s][%d][%s] [CLEANUP]\\n", __FILE__, __LINE__, __FUNCTION__);
+  if (!feature_ml || !feature_ml_inf) {
+    return;
+  }
+
   g_free (test_model);
 }
 
@@ -372,3 +375,486 @@ int utc_ml_single_set_timeout_n (void)
 
   return 0;
 }
+
+/**
+ * @testcase           utc_ml_single_set_input_info_p
+ * @since_tizen                6.0
+ * @description                Test setting input info after model loaded
+ */
+int utc_ml_single_set_input_info_p (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  ml_tensors_info_h in_info;
+  ml_tensor_dimension res_dim;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_set_input_info_p");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_input_info (single, &in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  ml_tensors_info_get_tensor_dimension (in_info, 0, res_dim);
+  /* dim change */
+  res_dim[3] += 1;
+  status = ml_tensors_info_set_tensor_dimension (in_info, 0, res_dim);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_set_input_info (single, in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+  ml_tensors_info_destroy (in_info);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_set_input_info_n
+ * @since_tizen                6.0
+ * @description                Test setting input info after model loaded. Failure Case.
+ */
+int utc_ml_single_set_input_info_n (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  ml_tensors_info_h in_info;
+  ml_tensor_type_e type = ML_TENSOR_TYPE_UNKNOWN;
+  unsigned int count = 0;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_set_input_info_n");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_input_info (single, &in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_tensors_info_get_count (in_info, &count);
+  assert_eq (status, ML_ERROR_NONE);
+
+  /** changing the count of number of tensors is not allowed */
+  ml_tensors_info_set_count (in_info, count + 1);
+  status = ml_single_set_input_info (single, in_info);
+  assert_neq (status, ML_ERROR_NONE);
+  ml_tensors_info_set_count (in_info, count);
+
+  status = ml_tensors_info_get_tensor_type (in_info, 0, &type);
+  assert_eq (status, ML_ERROR_NONE);
+  assert_eq (type, ML_TENSOR_TYPE_FLOAT32);
+
+  /** changing the type of input tensors is not allowed */
+  ml_tensors_info_set_tensor_type (in_info, 0, ML_TENSOR_TYPE_INT32);
+  status = ml_single_set_input_info (single, in_info);
+  assert_neq (status, ML_ERROR_NONE);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+  ml_tensors_info_destroy (in_info);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_set_property_p
+ * @since_tizen                6.0
+ * @description                Test setting property after model loaded
+ */
+int utc_ml_single_set_property_p (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_set_property_p");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_set_property (single, "input", "5:1:1:1");
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_set_property_n
+ * @since_tizen                6.0
+ * @description                Test setting property after model loaded. Failure case.
+ */
+int utc_ml_single_set_property_n (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_set_property_n");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_set_property (single, "input", NULL);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_get_property_p
+ * @since_tizen                6.0
+ * @description                Test getting property after model loaded
+ */
+int utc_ml_single_get_property_p (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  char *prop_value;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_get_property_p");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_set_property (single, "input", "5:1:1:1");
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_property (single, "input", &prop_value);
+  assert_eq (status, ML_ERROR_NONE);
+
+  assert_eq (g_strcmp0 (prop_value, "5:1:1:1"), 0);
+  g_free (prop_value);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_get_property_n
+ * @since_tizen                6.0
+ * @description                Test getting property after model loaded. Failure case.
+ */
+int utc_ml_single_get_property_n (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  char *prop_value;
+  int status;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_get_property_p");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_property (single, "unknown_prop", &prop_value);
+  assert_eq (status, ML_ERROR_NOT_SUPPORTED);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  g_free (test_model);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_invoke_dynamic_p
+ * @since_tizen                6.0
+ * @description                Test Run model with dynamic property/setting info.
+ */
+int utc_ml_single_invoke_dynamic_p (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  int status;
+  ml_tensors_info_h in_info, out_info;
+  ml_tensors_data_h input, output;
+
+
+  int tmp_count;
+  ml_tensor_type_e tmp_type = ML_TENSOR_TYPE_UNKNOWN;
+  ml_tensor_dimension tmp_dim;
+
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_invoke_dynamic_p");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_input_info (single, &in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_tensors_data_create (in_info, &input);
+  assert_eq (status, ML_ERROR_NONE);
+
+  float tmp_input[] = {1.0};
+  float * output_buf;
+  size_t data_size;
+  status = ml_tensors_data_set_tensor_data(input, 0, tmp_input,
+      1 * sizeof(float));
+
+  ml_tensors_info_get_count(in_info, &tmp_count);
+  ml_tensors_info_get_tensor_type(in_info, 0, &tmp_type);
+  ml_tensors_info_get_tensor_dimension(in_info, 0, tmp_dim);
+
+  status = ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  ml_tensors_data_get_tensor_data(output, 0, (void **) &output_buf,
+      &data_size);
+
+  ml_tensors_info_get_count(out_info, &tmp_count);
+  ml_tensors_info_get_tensor_type(out_info, 0, &tmp_type);
+  ml_tensors_info_get_tensor_dimension(out_info, 0, tmp_dim);
+
+  ml_tensors_data_destroy (output);
+  ml_tensors_data_destroy (input);
+  ml_tensors_info_destroy (in_info);
+  ml_tensors_info_destroy (out_info);
+
+  status = ml_single_set_property (single, "input", "5:1:1:1");
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_input_info (single, &in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_tensors_data_create (in_info, &input);
+  assert_eq (status, ML_ERROR_NONE);
+
+  float tmp_input2[] = {1.0, 2.0, 3.0, 4.0, 5.0};
+  float * output_buf2;
+  status = ml_tensors_data_set_tensor_data(input, 0, tmp_input2,
+      5 * sizeof(float));
+
+  ml_tensors_info_get_count(in_info, &tmp_count);
+  ml_tensors_info_get_tensor_type(in_info, 0, &tmp_type);
+  ml_tensors_info_get_tensor_dimension(in_info, 0, tmp_dim);
+
+  status = ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  ml_tensors_data_get_tensor_data(output, 0, (void **) &output_buf2,
+      &data_size);
+
+  ml_tensors_info_get_count(out_info, &tmp_count);
+  ml_tensors_info_get_tensor_type(out_info, 0, &tmp_type);
+  ml_tensors_info_get_tensor_dimension(out_info, 0, tmp_dim);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  ml_tensors_data_destroy (output);
+  ml_tensors_data_destroy (input);
+  ml_tensors_info_destroy (in_info);
+  ml_tensors_info_destroy (out_info);
+
+  g_free (test_model);
+
+  return 0;
+}
+
+/**
+ * @testcase           utc_ml_single_invoke_dynamic_n
+ * @since_tizen                6.0
+ * @description                Test Run model with dynamic property/setting info. Failure Case
+ */
+int utc_ml_single_invoke_dynamic_n (void)
+{
+  IS_SUPPORT_FEATURE;
+  ml_single_h single;
+  int status;
+  ml_tensors_info_h in_info, out_info;
+  ml_tensors_data_h input, output;
+
+  gchar *test_model;
+
+  char pszValue[CONFIG_VALUE_LEN_MAX] = {0,};
+
+  char *model_file = "add.tflite";
+  char *model_file_path = NULL;
+
+  if ( true == GetValueForTCTSetting("DEVICE_SUITE_TARGET_30", pszValue, API_NAMESPACE ))
+  {
+    int model_path_len = strlen(pszValue) + strlen(model_file) + 10;
+    model_file_path = (char*)malloc(model_path_len);
+    CHECK_HANDLE(model_file_path,"malloc:failure:utc_ml_single_invoke_dynamic_n");
+    snprintf(model_file_path, model_path_len, "%s/res/res/%s", pszValue, model_file);
+  }
+
+  test_model = model_file_path;
+  assert (g_file_test (test_model, G_FILE_TEST_EXISTS));
+
+  status = ml_single_open (&single, test_model, NULL, NULL,
+      ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_get_input_info (single, &in_info);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_tensors_data_create (in_info, &input);
+  assert_eq (status, ML_ERROR_NONE);
+
+  status = ml_single_invoke_dynamic (single, NULL, in_info, &output, &out_info);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_single_invoke_dynamic (single, input, NULL, &output, &out_info);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_single_invoke_dynamic (single, input, in_info, NULL, &out_info);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_single_invoke_dynamic (single, input, in_info, &output, NULL);
+  assert_eq (status, ML_ERROR_INVALID_PARAMETER);
+
+  status = ml_single_close (single);
+  assert_eq (status, ML_ERROR_NONE);
+
+  ml_tensors_data_destroy (input);
+  ml_tensors_info_destroy (in_info);
+
+  g_free (test_model);
+
+  return 0;
+}