[Test] add basic unittest
authorJaeyun <jy1210.jung@samsung.com>
Fri, 1 Jul 2022 07:52:33 +0000 (16:52 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Mon, 4 Jul 2022 09:30:44 +0000 (18:30 +0900)
Add testcases of nnstreamer-edge interfaces using gtest.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
packaging/nnstreamer-edge.spec
packaging/run_unittests.sh
src/libnnstreamer-edge/nnstreamer-edge-internal.c
tests/CMakeLists.txt
tests/unittest_nnstreamer-edge.cc [new file with mode: 0644]

index 2a906479e94975ccfbfb9b1958f80b3635068f6a..61830ada4db6417435931f4fd2a9bb5034b6b05e 100644 (file)
@@ -51,9 +51,8 @@ HTML pages of lcov results of nnstreamer-edge generated during rpm build
 %endif
 %endif
 
-# TODO FIXME enable unittest after migration
 %if 0%{?unit_test}
-%define enable_unittest -DENABLE_TEST=OFF
+%define enable_unittest -DENABLE_TEST=ON
 %else
 %define enable_unittest -DENABLE_TEST=OFF
 %endif
@@ -95,7 +94,7 @@ pushd build
 popd
 
 %if 0%{?unit_test}
-#LD_LIBRARY_PATH=./src bash %{test_script} ./tests/unittest_edge_sensor
+LD_LIBRARY_PATH=./src bash %{test_script} ./tests/unittest_nnstreamer-edge
 
 %if 0%{?testcoverage}
 # 'lcov' generates the date format with UTC time zone by default. Let's replace UTC with KST.
@@ -140,7 +139,7 @@ rm -rf %{buildroot}
 %files unittest
 %manifest nnstreamer-edge.manifest
 %defattr(-,root,root,-)
-#%{_bindir}/test_edge_sensor
+%{_bindir}/unittest_nnstreamer-edge
 
 %if 0%{?testcoverage}
 %files unittest-coverage
index c8726a6fafdf7b294a274fa983ee0ac2206a5db2..df6bcaa2ec3d3ba3e3da2f989e30e057fe4dbab2 100644 (file)
@@ -10,9 +10,9 @@ ret=0
 pushd build
 
 run_entry() {
-  entry=$1
-  ${entry} --gtest_output="xml:${entry##*/}.xml"
-  return $?
+    entry=$1
+    ${entry} --gtest_output="xml:${entry##*/}.xml"
+    return $?
 }
 
 if [ -f "$1" ]; then
index bba4f6de730a864c7940340c25806d5a45ff341b..6b1de3d6d36aa3fe45f6e273dfb3800927537b7b 100644 (file)
@@ -1387,6 +1387,16 @@ nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value)
     return NNS_EDGE_ERROR_INVALID_PARAMETER;
   }
 
+  if (!key || *key == '\0') {
+    nns_edge_loge ("Invalid param, given key is invalid.");
+    return NNS_EDGE_ERROR_INVALID_PARAMETER;
+  }
+
+  if (!value || *value == '\0') {
+    nns_edge_loge ("Invalid param, given value is invalid.");
+    return NNS_EDGE_ERROR_INVALID_PARAMETER;
+  }
+
   nns_edge_lock (eh);
 
   if (!NNS_EDGE_MAGIC_IS_VALID (eh)) {
index 6f5441aa59a47e2ac5843c4170a294509f9e949b..e996d71857431717f177436ab5ba9f57a060e83e 100644 (file)
@@ -1,2 +1,5 @@
 # nnstreamer-edge test
-# TODO upload unittest for nnstreamer-edge later
+ADD_EXECUTABLE(unittest_nnstreamer-edge unittest_nnstreamer-edge.cc)
+TARGET_INCLUDE_DIRECTORIES(unittest_nnstreamer-edge PRIVATE ${EDGE_REQUIRE_PKGS_INCLUDE_DIRS} ${INCLUDE_DIR} ${NNS_EDGE_SRC_DIR})
+TARGET_LINK_LIBRARIES(unittest_nnstreamer-edge ${TEST_REQUIRE_PKGS_LDFLAGS} nnstreamer-edge)
+INSTALL (TARGETS unittest_nnstreamer-edge DESTINATION ${BIN_INSTALL_DIR})
diff --git a/tests/unittest_nnstreamer-edge.cc b/tests/unittest_nnstreamer-edge.cc
new file mode 100644 (file)
index 0000000..86e79f3
--- /dev/null
@@ -0,0 +1,1600 @@
+/**\r
+ * @file        unittest_nnstreamer-edge.cc\r
+ * @date        27 June 2022\r
+ * @brief       Unittest for nnstreamer-edge library.\r
+ * @see         https://github.com/nnstreamer/nnstreamer-edge\r
+ * @author      Jaeyun Jung <jy1210.jung@samsung.com>\r
+ * @bug         No known bugs\r
+ */\r
+\r
+#include <gtest/gtest.h>\r
+#include "nnstreamer-edge.h"\r
+#include "nnstreamer-edge-common.h"\r
+#include "nnstreamer-edge-internal.h"\r
+\r
+/**\r
+ * @brief Data struct for event callback test.\r
+ */\r
+typedef struct\r
+{\r
+  bool callback_released;\r
+} ne_event_cb_test_s;\r
+\r
+/**\r
+ * @brief Edge event callback for test.\r
+ */\r
+static int\r
+_test_edge_event_cb (nns_edge_event_h event_h, void *user_data)\r
+{\r
+  nns_edge_event_e event = NNS_EDGE_EVENT_UNKNOWN;\r
+  ne_event_cb_test_s *event_data = (ne_event_cb_test_s *) user_data;\r
+\r
+  nns_edge_event_get_type (event_h, &event);\r
+\r
+  switch (event) {\r
+    case NNS_EDGE_EVENT_CALLBACK_RELEASED:\r
+      event_data->callback_released = true;\r
+      break;\r
+    default:\r
+      break;\r
+  }\r
+\r
+  return NNS_EDGE_ERROR_NONE;\r
+}\r
+\r
+/**\r
+ * @brief Create edge handle - invalid param.\r
+ */\r
+TEST(edge, createHandleInvalidParam01_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle (NULL, "temp-topic", &edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Create edge handle - invalid param.\r
+ */\r
+TEST(edge, createHandleInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", NULL, &edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Create edge handle - invalid param.\r
+ */\r
+TEST(edge, createHandleInvalidParam03_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Create edge handle - invalid param.\r
+ */\r
+TEST(edge, createHandleInvalidParam04_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("", "temp-topic", &edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Create edge handle - invalid param.\r
+ */\r
+TEST(edge, createHandleInvalidParam05_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "", &edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Start - invalid param.\r
+ */\r
+TEST(edge, startInvalidParam01_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_start (NULL, false);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Start - invalid param.\r
+ */\r
+TEST(edge, startInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_start (edge_h, false);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Release edge handle - invalid param.\r
+ */\r
+TEST(edge, releaseHandleInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_release_handle (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Release edge handle - invalid param.\r
+ */\r
+TEST(edge, releaseHandleInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set event callback - null param to clear event callback.\r
+ */\r
+TEST(edge, setEventCbSetNullCallback) {\r
+  nns_edge_h edge_h;\r
+  ne_event_cb_test_s *event_data;\r
+  int ret;\r
+\r
+  event_data = (ne_event_cb_test_s *) malloc (sizeof (ne_event_cb_test_s));\r
+  memset (event_data, 0, sizeof (ne_event_cb_test_s));\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, event_data);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* Set null param to clear event callback. */\r
+  ret = nns_edge_set_event_callback (edge_h, NULL, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  EXPECT_TRUE (event_data->callback_released);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (event_data);\r
+}\r
+\r
+/**\r
+ * @brief Set event callback - invalid param.\r
+ */\r
+TEST(edge, setEventCbInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_set_event_callback (NULL, _test_edge_event_cb, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set event callback - invalid param.\r
+ */\r
+TEST(edge, setEventCbInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  ne_event_cb_test_s *event_data;\r
+  int ret;\r
+\r
+  event_data = (ne_event_cb_test_s *) malloc (sizeof (ne_event_cb_test_s));\r
+  memset (event_data, 0, sizeof (ne_event_cb_test_s));\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, event_data);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (event_data);\r
+}\r
+\r
+/**\r
+ * @brief Connect - invalid param.\r
+ */\r
+TEST(edge, connectInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_connect (NULL, NNS_EDGE_PROTOCOL_TCP, "127.0.0.1", 80);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Connect - invalid param.\r
+ */\r
+TEST(edge, connectInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_connect (edge_h, NNS_EDGE_PROTOCOL_TCP, "127.0.0.1", 80);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Connect - invalid param.\r
+ */\r
+TEST(edge, connectInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_connect (edge_h, NNS_EDGE_PROTOCOL_TCP, NULL, 80);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Connect - invalid param.\r
+ */\r
+TEST(edge, connectInvalidParam04_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_connect (edge_h, NNS_EDGE_PROTOCOL_TCP, "", 80);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Disconnect - invalid param.\r
+ */\r
+TEST(edge, disconnectInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_disconnect (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Disconnect - invalid param.\r
+ */\r
+TEST(edge, disconnectInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_disconnect (edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Publish - invalid param.\r
+ */\r
+TEST(edge, publishInvalidParam01_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_publish (NULL, data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Publish - invalid param.\r
+ */\r
+TEST(edge, publishInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_data_h data_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_publish (edge_h, data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Publish - invalid param.\r
+ */\r
+TEST(edge, publishInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_publish (edge_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Request - invalid param.\r
+ */\r
+TEST(edge, requestInvalidParam01_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_request (NULL, data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Request - invalid param.\r
+ */\r
+TEST(edge, requestInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_data_h data_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_request (edge_h, data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Request - invalid param.\r
+ */\r
+TEST(edge, requestInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_request (edge_h, NULL, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Respond - invalid param.\r
+ */\r
+TEST(edge, respondInvalidParam01_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "client_id", "10");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_respond (NULL, data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Respond - invalid param.\r
+ */\r
+TEST(edge, respondInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_data_h data_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "client_id", "10");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_respond (edge_h, data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Respond - invalid param.\r
+ */\r
+TEST(edge, respondInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_respond (edge_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Respond - invalid param.\r
+ */\r
+TEST(edge, respondInvalidParam04_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* No client ID */\r
+  ret = nns_edge_respond (edge_h, data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Subscribe - invalid param.\r
+ */\r
+TEST(edge, subscribeInvalidParam01_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_subscribe (NULL, data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Subscribe - invalid param.\r
+ */\r
+TEST(edge, subscribeInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_data_h data_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_subscribe (edge_h, data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Subscribe - invalid param.\r
+ */\r
+TEST(edge, subscribeInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_subscribe (edge_h, NULL, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Unsubscribe - invalid param.\r
+ */\r
+TEST(edge, unsubscribeInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_unsubscribe (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Unsubscribe - invalid param.\r
+ */\r
+TEST(edge, unsubscribeInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_unsubscribe (edge_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get topic.\r
+ */\r
+TEST(edge, getTopic) {\r
+  nns_edge_h edge_h;\r
+  char *topic = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_get_topic (edge_h, &topic);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_STREQ (topic, "temp-topic");\r
+  free (topic);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get topic - invalid param.\r
+ */\r
+TEST(edge, getTopicInvalidParam01_n) {\r
+  char *topic = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_get_topic (NULL, &topic);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get topic - invalid param.\r
+ */\r
+TEST(edge, getTopicInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  char *topic = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_get_topic (edge_h, &topic);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get topic - invalid param.\r
+ */\r
+TEST(edge, getTopicInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_get_topic (edge_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_set_info (NULL, "topic", "temp-topic");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam02_n) {\r
+  nns_edge_h edge_h;\r
+  nns_edge_handle_s *eh;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh = (nns_edge_handle_s *) edge_h;\r
+  eh->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_set_info (edge_h, "topic", "temp-topic");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  eh->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam03_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_info (edge_h, NULL, "temp-topic");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam04_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_info (edge_h, "", "temp-topic");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam05_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_info (edge_h, "topic", NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam06_n) {\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", "temp-topic", &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_info (edge_h, "topic", "");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Create edge-data - invalid param.\r
+ */\r
+TEST(edgeData, createInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Destroy edge-data - invalid param.\r
+ */\r
+TEST(edgeData, destroyInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_data_destroy (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Destroy edge-data - invalid param.\r
+ */\r
+TEST(edgeData, destroyInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Validate edge-data.\r
+ */\r
+TEST(edgeData, validate) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_is_valid (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Validate edge-data - invalid param.\r
+ */\r
+TEST(edgeData, validateInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_data_is_valid (NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Validate edge-data - invalid param.\r
+ */\r
+TEST(edgeData, validateInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_is_valid (data_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Copy edge-data.\r
+ */\r
+TEST(edgeData, copy) {\r
+  nns_edge_data_h src_h, desc_h;\r
+  void *data, *result;\r
+  size_t data_len, result_len;\r
+  char *result_value;\r
+  unsigned int i, result_count;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (unsigned int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  for (i = 0; i < 10U; i++)\r
+    ((unsigned int *) data)[i] = i;\r
+\r
+  ret = nns_edge_data_create (&src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (src_h, "temp-key1", "temp-data-val1");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  ret = nns_edge_data_set_info (src_h, "temp-key2", "temp-data-val2");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (src_h, data, data_len, free);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_copy (src_h, &desc_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* Compare data and info */\r
+  ret = nns_edge_data_get_count (desc_h, &result_count);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_EQ (result_count, 1U);\r
+\r
+  ret = nns_edge_data_get (desc_h, 0, &result, &result_len);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  for (i = 0; i < 10U; i++)\r
+    EXPECT_EQ (((unsigned int *) result)[i], i);\r
+\r
+  ret = nns_edge_data_get_info (desc_h, "temp-key1", &result_value);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_STREQ (result_value, "temp-data-val1");\r
+  free (result_value);\r
+\r
+  ret = nns_edge_data_get_info (desc_h, "temp-key2", &result_value);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_STREQ (result_value, "temp-data-val2");\r
+  free (result_value);\r
+\r
+  ret = nns_edge_data_destroy (desc_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Copy edge-data - invalid param.\r
+ */\r
+TEST(edgeData, copyInvalidParam01_n) {\r
+  nns_edge_data_h desc_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_copy (NULL, &desc_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Copy edge-data - invalid param.\r
+ */\r
+TEST(edgeData, copyInvalidParam02_n) {\r
+  nns_edge_data_h src_h, desc_h;\r
+  nns_edge_data_s *ed;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) src_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_copy (src_h, &desc_h);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Copy edge-data - invalid param.\r
+ */\r
+TEST(edgeData, copyInvalidParam03_n) {\r
+  nns_edge_data_h src_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_copy (src_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (src_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Add edge-data - max data limit.\r
+ */\r
+TEST(edgeData, addMaxData_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data;\r
+  size_t data_len;\r
+  int i, ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  for (i = 0; i < NNS_EDGE_DATA_LIMIT; i++) {\r
+    ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+    EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  }\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Add edge-data - invalid param.\r
+ */\r
+TEST(edgeData, addInvalidParam01_n) {\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_add (NULL, data, data_len, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Add edge-data - invalid param.\r
+ */\r
+TEST(edgeData, addInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Add edge-data - invalid param.\r
+ */\r
+TEST(edgeData, addInvalidParam03_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, NULL, data_len, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Add edge-data - invalid param.\r
+ */\r
+TEST(edgeData, addInvalidParam04_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, 0, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data.\r
+ */\r
+TEST(edgeData, get) {\r
+  nns_edge_data_h data_h;\r
+  void *data, *result;\r
+  size_t data_len, result_len;\r
+  unsigned int count;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get_count (data_h, &count);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_EQ (count, 1U);\r
+\r
+  ret = nns_edge_data_get (data_h, 0, &result, &result_len);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+  EXPECT_EQ (result, data);\r
+  EXPECT_EQ (result_len, data_len);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInvalidParam01_n) {\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_get (NULL, 0, &data, &data_len);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  void *data, *result;\r
+  size_t data_len, result_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_get (data_h, 0, &result, &result_len);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInvalidParam03_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data, *result;\r
+  size_t data_len, result_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* Invalid index */\r
+  ret = nns_edge_data_get (data_h, 1, &result, &result_len);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInvalidParam04_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data;\r
+  size_t data_len, result_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get (data_h, 0, NULL, &result_len);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInvalidParam05_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data, *result;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get (data_h, 0, &result, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get count of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getCountInvalidParam01_n) {\r
+  unsigned int count;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_get_count (NULL, &count);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get count of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getCountInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_get_count (data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Get count of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getCountInvalidParam03_n) {\r
+  nns_edge_data_h data_h;\r
+  void *data;\r
+  size_t data_len;\r
+  int ret;\r
+\r
+  data_len = 10U * sizeof (int);\r
+  data = malloc (data_len);\r
+  ASSERT_TRUE (data != NULL);\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_add (data_h, data, data_len, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get_count (data_h, NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  free (data);\r
+}\r
+\r
+/**\r
+ * @brief Set info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, setInfoInvalidParam01_n) {\r
+  int ret;\r
+\r
+  ret = nns_edge_data_set_info (NULL, "temp-key", "temp-value");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, setInfoInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", "temp-value");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, setInfoInvalidParam03_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, NULL, "temp-value");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Set info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, setInfoInvalidParam04_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInfoInvalidParam01_n) {\r
+  char *value = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_get_info (NULL, "temp-key", &value);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInfoInvalidParam02_n) {\r
+  nns_edge_data_h data_h;\r
+  nns_edge_data_s *ed;\r
+  char *value = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", "temp-value");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed = (nns_edge_data_s *) data_h;\r
+  ed->magic = NNS_EDGE_MAGIC_DEAD;\r
+\r
+  ret = nns_edge_data_get_info (data_h, "temp-key", &value);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ed->magic = NNS_EDGE_MAGIC;\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInfoInvalidParam03_n) {\r
+  nns_edge_data_h data_h;\r
+  char *value = NULL;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", "temp-value");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get_info (data_h, NULL, &value);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInfoInvalidParam04_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", "temp-value");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get_info (data_h, "temp-key", NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Get info of edge-data - invalid param.\r
+ */\r
+TEST(edgeData, getInfoInvalidParam05_n) {\r
+  nns_edge_data_h data_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_data_create (&data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_set_info (data_h, "temp-key", "temp-value");\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_get_info (data_h, "", NULL);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_data_destroy (data_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
+/**\r
+ * @brief Main gtest\r
+ */\r
+int\r
+main (int argc, char **argv)\r
+{\r
+  int result = -1;\r
+\r
+  try {\r
+    testing::InitGoogleTest (&argc, argv);\r
+  } catch (...) {\r
+    nns_edge_loge ("Catch exception, failed to init google test.");\r
+  }\r
+\r
+  try {\r
+    result = RUN_ALL_TESTS ();\r
+  } catch (...) {\r
+    nns_edge_loge ("Catch exception, failed to run the unittest.");\r
+  }\r
+\r
+  return result;\r
+}\r