[Test] add testcase for filter-properties
authorJaeyun <jy1210.jung@samsung.com>
Wed, 3 Apr 2019 04:45:21 +0000 (13:45 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Thu, 4 Apr 2019 04:17:11 +0000 (13:17 +0900)
add testcase to get tensor-filter properties

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
tests/common/unittest_common.cpp
tests/nnstreamer_sink/unittest_sink.cpp

index 6e6b9bb..ec8a0b3 100644 (file)
@@ -404,7 +404,7 @@ TEST (common_tensors_info_string, types)
 TEST (common_tensors_info_string, names)
 {
   GstTensorsInfo info;
-  guint num_names;
+  guint i, num_names;
   gchar *str_names;
 
   gst_tensors_info_init (&info);
@@ -430,6 +430,19 @@ TEST (common_tensors_info_string, names)
   EXPECT_TRUE (g_str_equal (str_names, "tensor1,tensor2,tensor3,tensor4"));
   g_free (str_names);
 
+  /* empty name string */
+  num_names = gst_tensors_info_parse_names_string (&info, ",,");
+  EXPECT_EQ (num_names, 3);
+
+  info.num_tensors = num_names;
+  for (i = 0; i < num_names; ++i) {
+    EXPECT_TRUE (g_str_equal (info.info[i].name, ""));
+  }
+
+  str_names = gst_tensors_info_get_names_string (&info);
+  EXPECT_TRUE (g_str_equal (str_names, ",,"));
+  g_free (str_names);
+
   /* max */
   num_names = gst_tensors_info_parse_names_string (&info,
       "t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, "
index 85e2ca1..49248a5 100644 (file)
@@ -661,14 +661,14 @@ _setup_pipeline (TestOption & option)
       str_pipeline =
           g_strdup_printf
           ("videotestsrc num-buffers=%d ! videoconvert ! video/x-raw,width=160,height=120,format=RGB,framerate=(fraction)30/1 ! "
-          "tensor_converter ! tensor_filter framework=custom model=%s/libnnstreamer_customfilter_passthrough_variable.so ! tensor_sink name=test_sink",
+          "tensor_converter ! tensor_filter name=test_filter framework=custom model=%s/libnnstreamer_customfilter_passthrough_variable.so ! tensor_sink name=test_sink",
           option.num_buffers, custom_dir? custom_dir : "./nnstreamer_example/custom_example_passthrough");
       break;
     case TEST_TYPE_CUSTOM_TENSORS:
       /** other/tensors with tensormux, passthrough custom filter */
       str_pipeline =
           g_strdup_printf
-          ("tensor_mux name=mux ! tensor_filter framework=custom model=%s/libnnstreamer_customfilter_passthrough_variable.so ! tensor_sink name=test_sink "
+          ("tensor_mux name=mux ! tensor_filter name=test_filter framework=custom model=%s/libnnstreamer_customfilter_passthrough_variable.so ! tensor_sink name=test_sink "
           "videotestsrc num-buffers=%d ! video/x-raw,width=160,height=120,format=RGB,framerate=(fraction)30/1 ! tensor_converter ! mux.sink_0 "
           "videotestsrc num-buffers=%d ! video/x-raw,width=120,height=80,format=RGB,framerate=(fraction)30/1 ! tensor_converter ! mux.sink_1 "
           "videotestsrc num-buffers=%d ! video/x-raw,width=64,height=48,format=RGB,framerate=(fraction)30/1 ! tensor_converter ! mux.sink_2",
@@ -2829,6 +2829,196 @@ TEST (tensor_stream_test, custom_filter_tensors)
 }
 
 /**
+ * @brief Test for tensor filter properties.
+ */
+TEST (tensor_stream_test, filter_properties_1)
+{
+  const guint num_buffers = 5;
+  TestOption option = { num_buffers, TEST_TYPE_CUSTOM_TENSOR };
+
+  GstElement *filter;
+  gboolean silent, res_silent;
+  gchar *str = NULL;
+
+  ASSERT_TRUE (_setup_pipeline (option));
+
+  filter = gst_bin_get_by_name (GST_BIN (g_test_data.pipeline), "test_filter");
+
+  /* default silent is TRUE */
+  g_object_get (filter, "silent", &silent, NULL);
+  EXPECT_TRUE (silent);
+
+  /* framework */
+  g_object_get (filter, "framework", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "custom"));
+  g_free (str);
+
+  /* model */
+  g_object_get (filter, "model", &str, NULL);
+  EXPECT_TRUE (g_str_has_suffix (str, "libnnstreamer_customfilter_passthrough_variable.so"));
+  g_free (str);
+
+  /* input */
+  g_object_get (filter, "input", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* inputtype */
+  g_object_get (filter, "inputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* output */
+  g_object_get (filter, "output", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* outputtype */
+  g_object_get (filter, "outputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  gst_element_set_state (g_test_data.pipeline, GST_STATE_PLAYING);
+  g_main_loop_run (g_test_data.loop);
+
+  /* silent */
+  g_object_set (filter, "silent", !silent, NULL);
+  g_object_get (filter, "silent", &res_silent, NULL);
+  EXPECT_EQ (res_silent, !silent);
+
+  /* input */
+  g_object_get (filter, "input", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "3:160:120:1"));
+  g_free (str);
+
+  /* inputtype */
+  g_object_get (filter, "inputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "uint8"));
+  g_free (str);
+
+  /* inputname */
+  g_object_get (filter, "inputname", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* output */
+  g_object_get (filter, "output", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "3:160:120:1"));
+  g_free (str);
+
+  /* outputtype */
+  g_object_get (filter, "outputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "uint8"));
+  g_free (str);
+
+  /* outputname */
+  g_object_get (filter, "outputname", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  gst_object_unref (filter);
+  gst_element_set_state (g_test_data.pipeline, GST_STATE_NULL);
+
+  EXPECT_FALSE (g_test_data.test_failed);
+  _free_test_data ();
+}
+
+/**
+ * @brief Test for tensor filter properties.
+ */
+TEST (tensor_stream_test, filter_properties_2)
+{
+  const guint num_buffers = 5;
+  TestOption option = { num_buffers, TEST_TYPE_CUSTOM_TENSORS };
+
+  GstElement *filter;
+  gboolean silent, res_silent;
+  gchar *str = NULL;
+
+  ASSERT_TRUE (_setup_pipeline (option));
+
+  filter = gst_bin_get_by_name (GST_BIN (g_test_data.pipeline), "test_filter");
+
+  /* default silent is TRUE */
+  g_object_get (filter, "silent", &silent, NULL);
+  EXPECT_TRUE (silent);
+
+  /* framework */
+  g_object_get (filter, "framework", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "custom"));
+  g_free (str);
+
+  /* model */
+  g_object_get (filter, "model", &str, NULL);
+  EXPECT_TRUE (g_str_has_suffix (str, "libnnstreamer_customfilter_passthrough_variable.so"));
+  g_free (str);
+
+  /* input */
+  g_object_get (filter, "input", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* inputtype */
+  g_object_get (filter, "inputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* output */
+  g_object_get (filter, "output", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  /* outputtype */
+  g_object_get (filter, "outputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ""));
+  g_free (str);
+
+  gst_element_set_state (g_test_data.pipeline, GST_STATE_PLAYING);
+  g_main_loop_run (g_test_data.loop);
+
+  /* silent */
+  g_object_set (filter, "silent", !silent, NULL);
+  g_object_get (filter, "silent", &res_silent, NULL);
+  EXPECT_EQ (res_silent, !silent);
+
+  /* input */
+  g_object_get (filter, "input", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "3:160:120:1,3:120:80:1,3:64:48:1"));
+  g_free (str);
+
+  /* inputtype */
+  g_object_get (filter, "inputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "uint8,uint8,uint8"));
+  g_free (str);
+
+  /* inputname */
+  g_object_get (filter, "inputname", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ",,"));
+  g_free (str);
+
+  /* output */
+  g_object_get (filter, "output", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "3:160:120:1,3:120:80:1,3:64:48:1"));
+  g_free (str);
+
+  /* outputtype */
+  g_object_get (filter, "outputtype", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, "uint8,uint8,uint8"));
+  g_free (str);
+
+  /* outputname */
+  g_object_get (filter, "outputname", &str, NULL);
+  EXPECT_TRUE (g_str_equal (str, ",,"));
+  g_free (str);
+
+  gst_object_unref (filter);
+  gst_element_set_state (g_test_data.pipeline, GST_STATE_NULL);
+
+  EXPECT_FALSE (g_test_data.test_failed);
+  _free_test_data ();
+}
+
+/**
  * @brief Test to drop incoming buffer in tensor_filter using custom filter.
  */
 TEST (tensor_stream_test, custom_filter_drop_buffer)