#define SINGLE_DEF_TIMEOUT_MSEC 10000
+#if defined (ENABLE_TENSORFLOW_LITE)
+constexpr bool is_enabled_tensorflow_lite = true;
+#else
+constexpr bool is_enabled_tensorflow_lite = false;
+#endif /* defined (ENABLE_TENSORFLOW_LITE) */
+
/**
* @brief Struct to check the pipeline state changes.
*/
#endif /* ENABLE_NNFW_RUNTIME */
}
-#ifdef ENABLE_TENSORFLOW_LITE
/**
* @brief Test NNStreamer Utility for checking availability of Tensorflow-lite backend
*/
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_AUTO, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_CPU, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_CPU_NEON, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_GPU, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
status = ml_check_nnfw_availability (ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_NPU, &result);
EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_EQ (result, true);
+ EXPECT_EQ (result, is_enabled_tensorflow_lite);
}
/**
EXPECT_EQ (status, ML_ERROR_NONE);
EXPECT_EQ (result, false);
}
-#endif /* ENABLE_TENSORFLOW_LITE */
#ifdef ENABLE_TENSORFLOW
/**
EXPECT_EQ (status, ML_ERROR_NONE);
}
-#ifdef ENABLE_TENSORFLOW_LITE
/**
* @brief Test NNStreamer single shot (tensorflow-lite)
*/
status = ml_single_open (&single, test_model, in_info, out_info,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* input tensor in filter */
status = ml_single_get_input_info (single, &in_res);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
ml_tensors_info_destroy (in_info);
ml_tensors_info_destroy (out_info);
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
- g_free (test_model);
ml_tensors_info_destroy (in_info);
+skip_test:
+ g_free (test_model);
}
/**
/** Initial run to warm up the cache */
status = ml_single_open (&single, test_model, in_info, out_info,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
g_warning ("Time to invoke single = %f us", (invoke_duration * 1.0)/count);
g_warning ("Time to close single = %f us", (close_duration * 1.0)/count);
+skip_test:
ml_tensors_data_destroy (output);
ml_tensors_data_destroy (input);
ml_tensors_info_destroy (in_info);
ml_tensors_info_destroy (out_info);
}
-#endif /* ENABLE_TENSORFLOW_LITE */
/**
* @brief Test NNStreamer single shot (custom filter)
}
#endif /* ENABLE_TENSORFLOW */
-#ifdef ENABLE_TENSORFLOW_LITE
/**
* @brief Test NNStreamer single shot (tensorflow-lite)
* @detail Failure case with invalid param.
/* Successfully opened unknown fw type (tf-lite) */
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_ANY, ML_NNFW_HW_ANY);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
/* invalid input dimension (model does not support dynamic dimension) */
status = ml_single_open (&single, test_model, in_info, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ if (is_enabled_tensorflow_lite) {
+ EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ } else {
+ EXPECT_NE (status, ML_ERROR_INVALID_PARAMETER);
+ }
in_dim[1] = in_dim[2] = 224;
ml_tensors_info_set_tensor_dimension (in_info, 0, in_dim);
/* invalid input type */
status = ml_single_open (&single, test_model, in_info, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ if (is_enabled_tensorflow_lite) {
+ EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ } else {
+ EXPECT_NE (status, ML_ERROR_INVALID_PARAMETER);
+ }
ml_tensors_info_set_tensor_type (in_info, 0, ML_TENSOR_TYPE_UINT8);
/* invalid output dimension */
status = ml_single_open (&single, test_model, NULL, out_info,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ if (is_enabled_tensorflow_lite) {
+ EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ } else {
+ EXPECT_NE (status, ML_ERROR_INVALID_PARAMETER);
+ }
out_dim[0] = 1001;
ml_tensors_info_set_tensor_dimension (out_info, 0, out_dim);
/* invalid output type */
status = ml_single_open (&single, test_model, NULL, out_info,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ if (is_enabled_tensorflow_lite) {
+ EXPECT_EQ (status, ML_ERROR_INVALID_PARAMETER);
+ } else {
+ EXPECT_NE (status, ML_ERROR_INVALID_PARAMETER);
+ }
ml_tensors_info_set_tensor_type (out_info, 0, ML_TENSOR_TYPE_UINT8);
/* Successfully opened unknown fw type (tf-lite) */
status = ml_single_open (&single, test_model, in_info, out_info,
ML_NNFW_TYPE_ANY, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
ml_tensors_info_destroy (in_info);
ml_tensors_info_destroy (out_info);
/* open with input tensor info (1:1:1:1 > 5:1:1:1) */
status = ml_single_open (&single, test_model, in_info, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* validate output info */
status = ml_single_get_output_info (single, &out_info);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
- g_free (test_model);
- ml_tensors_info_destroy (in_info);
ml_tensors_info_destroy (out_info);
+skip_test:
+ ml_tensors_info_destroy (in_info);
+ g_free (test_model);
}
/**
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* set timeout 5 ms */
status = ml_single_set_timeout (single, 5);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
single_shot_thread_data ss_data[num_cases];
guint i, j;
+ /* Skip this test if enable-tensorflow-lite is false */
+ if (!is_enabled_tensorflow_lite)
+ return;
+
/* supposed to run test in build directory */
if (root_path == NULL)
root_path = "..";
pthread_t thread;
single_shot_thread_data ss_data;
+ /* Skip this test if enable-tensorflow-lite is false */
+ if (!is_enabled_tensorflow_lite)
+ return;
+
/* supposed to run test in build directory */
if (root_path == NULL)
root_path = "..";
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_set_input_info (single, NULL);
EXPECT_NE (status, ML_ERROR_NONE);
status = ml_tensors_info_destroy (in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_tensors_info_destroy (in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_set_input_info (single, NULL);
EXPECT_NE (status, ML_ERROR_NONE);
status = ml_tensors_info_destroy (in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_res);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
ml_tensors_info_destroy (in_info);
ml_tensors_info_destroy (out_info);
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* get layout */
status = ml_single_get_property (single, "inputlayout", &prop_value);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* get invalid property */
status = ml_single_get_property (single, "unknown_prop", &prop_value);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
/* failed to set dimension */
status = ml_single_set_property (single, "input", "3:4:4:1");
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_set_property (single, "input", "5:1:1:1");
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_single_close (single);
EXPECT_EQ (status, ML_ERROR_NONE);
+skip_test:
g_free (test_model);
}
-#endif /* ENABLE_TENSORFLOW_LITE */
#ifdef ENABLE_NNFW_RUNTIME
/**
ml_tensors_info_destroy (out_res);
}
-#ifdef ENABLE_TENSORFLOW_LITE
/**
* @brief Test NNStreamer single shot (tflite)
* @detail run the `ml_single_invoke_dynamic` api works properly.
int status;
ml_tensors_info_h in_info, out_info;
ml_tensors_data_h input, output;
+ size_t data_size;
unsigned int tmp_count;
ml_tensor_type_e tmp_type = ML_TENSOR_TYPE_UNKNOWN;
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_tensors_data_create (in_info, &input);
EXPECT_EQ (status, ML_ERROR_NONE);
+ {
+ float tmp_input[] = { 1.0 };
+ float *output_buf;
+ 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);
+
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 1U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
+
+ status =
+ ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+ EXPECT_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);
-
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 1U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
-
- status =
- ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf,
+ &data_size);
- ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf,
- &data_size);
+ EXPECT_FLOAT_EQ (output_buf[0], 3.0f);
+ EXPECT_EQ (data_size, sizeof (float));
- EXPECT_FLOAT_EQ (output_buf[0], 3.0f);
- EXPECT_EQ (data_size, sizeof (float));
+ 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_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);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 1U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 1U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ ml_tensors_data_destroy (output);
+ ml_tensors_data_destroy (input);
+ ml_tensors_info_destroy (in_info);
+ ml_tensors_info_destroy (out_info);
+ }
- 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");
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_tensors_data_create (in_info, &input);
EXPECT_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));
+ {
+ 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);
+ 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);
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 5U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
-
- status =
- ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 5U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf2,
- &data_size);
+ status =
+ ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+ EXPECT_EQ (status, ML_ERROR_NONE);
- EXPECT_FLOAT_EQ (output_buf2[0], 3.0f);
- EXPECT_FLOAT_EQ (output_buf2[1], 4.0f);
- EXPECT_FLOAT_EQ (output_buf2[2], 5.0f);
- EXPECT_FLOAT_EQ (output_buf2[3], 6.0f);
- EXPECT_FLOAT_EQ (output_buf2[4], 7.0f);
- EXPECT_EQ (data_size, 5 * sizeof (float));
+ 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);
+ EXPECT_FLOAT_EQ (output_buf2[0], 3.0f);
+ EXPECT_FLOAT_EQ (output_buf2[1], 4.0f);
+ EXPECT_FLOAT_EQ (output_buf2[2], 5.0f);
+ EXPECT_FLOAT_EQ (output_buf2[3], 6.0f);
+ EXPECT_FLOAT_EQ (output_buf2[4], 7.0f);
+ EXPECT_EQ (data_size, 5 * sizeof (float));
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 5U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ 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);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 5U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- 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_close (single);
+ EXPECT_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);
+ }
+skip_test:
g_free (test_model);
}
int status;
ml_tensors_info_h in_info, out_info;
ml_tensors_data_h input, output;
+ size_t data_size;
unsigned int tmp_count;
ml_tensor_type_e tmp_type = ML_TENSOR_TYPE_UNKNOWN;
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_tensors_data_create (in_info, &input);
EXPECT_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);
+ {
+ float tmp_input[] = { 1.0 };
+ float *output_buf;
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 1U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ status = ml_tensors_data_set_tensor_data (input, 0, tmp_input,
+ 1 * sizeof (float));
- status =
- ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ 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);
- ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf,
- &data_size);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 1U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- EXPECT_FLOAT_EQ (output_buf[0], 3.0f;
- EXPECT_EQ (data_size, sizeof (float));
+ status =
+ ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+ EXPECT_EQ (status, ML_ERROR_NONE);
- 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_get_tensor_data (output, 0, (void **) &output_buf,
+ &data_size);
+ EXPECT_FLOAT_EQ (output_buf[0], 3.0f);
+ EXPECT_EQ (data_size, sizeof (float));
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 1U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ 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);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 1U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
+ 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_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
status = ml_tensors_data_create (in_info, &input);
EXPECT_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));
+ {
+ 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);
+ 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);
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 5U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 5U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- status =
- ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ status =
+ ml_single_invoke_dynamic (single, input, in_info, &output, &out_info);
+ EXPECT_EQ (status, ML_ERROR_NONE);
- ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf2,
- &data_size);
+ ml_tensors_data_get_tensor_data (output, 0, (void **) &output_buf2,
+ &data_size);
- EXPECT_FLOAT_EQ (output_buf2[0], 3.0f);
- EXPECT_FLOAT_EQ (output_buf2[1], 4.0f);
- EXPECT_FLOAT_EQ (output_buf2[2], 5.0f);
- EXPECT_FLOAT_EQ (output_buf2[3], 6.0f);
- EXPECT_FLOAT_EQ (output_buf2[4], 7.0f);
- EXPECT_EQ (data_size, 5 * sizeof (float));
+ EXPECT_FLOAT_EQ (output_buf2[0], 3.0f);
+ EXPECT_FLOAT_EQ (output_buf2[1], 4.0f);
+ EXPECT_FLOAT_EQ (output_buf2[2], 5.0f);
+ EXPECT_FLOAT_EQ (output_buf2[3], 6.0f);
+ EXPECT_FLOAT_EQ (output_buf2[4], 7.0f);
+ EXPECT_EQ (data_size, 5 * sizeof (float));
- 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_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);
- EXPECT_EQ (tmp_count, 1U);
- EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
- EXPECT_EQ (tmp_dim[0], 5U);
- EXPECT_EQ (tmp_dim[1], 1U);
- EXPECT_EQ (tmp_dim[2], 1U);
- EXPECT_EQ (tmp_dim[3], 1U);
+ EXPECT_EQ (tmp_count, 1U);
+ EXPECT_EQ (tmp_type, ML_TENSOR_TYPE_FLOAT32);
+ EXPECT_EQ (tmp_dim[0], 5U);
+ EXPECT_EQ (tmp_dim[1], 1U);
+ EXPECT_EQ (tmp_dim[2], 1U);
+ EXPECT_EQ (tmp_dim[3], 1U);
- status = ml_single_close (single);
- EXPECT_EQ (status, ML_ERROR_NONE);
+ status = ml_single_close (single);
+ EXPECT_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);
+ ml_tensors_data_destroy (output);
+ ml_tensors_data_destroy (input);
+ ml_tensors_info_destroy (in_info);
+ ml_tensors_info_destroy (out_info);
+ }
+skip_test:
g_free (test_model);
}
status = ml_single_open (&single, test_model, NULL, NULL,
ML_NNFW_TYPE_TENSORFLOW_LITE, ML_NNFW_HW_ANY);
- ASSERT_EQ (status, ML_ERROR_NONE);
+ if (is_enabled_tensorflow_lite) {
+ ASSERT_EQ (status, ML_ERROR_NONE);
+ } else {
+ ASSERT_NE (status, ML_ERROR_NONE);
+ goto skip_test;
+ }
status = ml_single_get_input_info (single, &in_info);
EXPECT_EQ (status, ML_ERROR_NONE);
ml_tensors_data_destroy (input);
ml_tensors_info_destroy (in_info);
+skip_test:
g_free (test_model);
}
-#endif /* ENABLE_TENSORFLOW_LITE */
/**
* @brief Main gtest