[test] Enable layer node test
authorParichay Kapoor <pk.kapoor@samsung.com>
Thu, 18 Nov 2021 08:40:01 +0000 (17:40 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Mon, 29 Nov 2021 03:46:16 +0000 (12:46 +0900)
Enable the layer node test.

Signed-off-by: Parichay Kapoor <pk.kapoor@samsung.com>
nntrainer/layers/layer_node.h
test/unittest/layers/meson.build
test/unittest/layers/unittest_layer_node.cpp

index d8c9d3b..91e8f99 100644 (file)
@@ -178,6 +178,7 @@ public:
    * @note      No memory allocation must be performed in the initialization
    * step. Any tensor memory required must be requested to the context which
    * will be made available during execution of the layer with the context.
+   * @note configureRunContext() is expected to called right after this.
    */
   InitLayerContext finalize(const std::vector<TensorDim> &input_dims = {});
 
index 1925c9c..2e114e3 100644 (file)
@@ -30,6 +30,7 @@ test_target = [
   layer_common_test_dependent_files,
   layer_common_test_standalone_files,
   'layers_golden_tests.cpp',
+  'unittest_layer_node.cpp',
   'unittest_layers_impl.cpp',
   'unittest_layers_input.cpp',
   'unittest_layers_loss.cpp',
index 2854743..7e7fe22 100644 (file)
@@ -9,20 +9,24 @@
  * @author      Parichay Kapoor <pk.kapoor@samsung.com>
  * @bug         No known bugs
  */
+
 #include <gtest/gtest.h>
 
+#include <fc_layer.h>
+#include <layer_node.h>
+#include <nntrainer_error.h>
+#include <tensor_dim.h>
+#include <var_grad.h>
+
 /**
  * @brief test distribute property
  */
 TEST(nntrainer_LayerNode, setDistribute_01_p) {
-  int status = ML_ERROR_NONE;
-
   auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
 
   EXPECT_EQ(false, lnode->getDistribute());
 
-  status = lnode->setProperty({"distribute=true"});
-  EXPECT_EQ(status, ML_ERROR_NONE);
+  EXPECT_NO_THROW(lnode->setProperty({"distribute=true"}));
 
   EXPECT_EQ(true, lnode->getDistribute());
 }
@@ -31,64 +35,54 @@ TEST(nntrainer_LayerNode, setDistribute_01_p) {
  * @brief test flatten property
  */
 TEST(nntrainer_LayerNode, setFlatten_01_p) {
-  int status = ML_ERROR_NONE;
-
   auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
-  status = lnode->setProperty({"flatten=true"});
-  EXPECT_EQ(status, ML_ERROR_NONE);
+  EXPECT_NO_THROW(lnode->setProperty({"flatten=true"}));
 }
 
 /**
  * @brief test finalize with wrong context
  */
 TEST(nntrainer_LayerNode, finalize_01_n) {
-  int status = ML_ERROR_NONE;
-
   auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
-  EXPECT_THROW(lnode->finalize(), std::runtime_error);
+  EXPECT_ANY_THROW(lnode->finalize());
 }
 
 /**
- * @brief test finalize with right context
+ * @brief test finalize with wrong context
  */
-TEST(nntrainer_LayerNode, finalize_02_p) {
-  int status = ML_ERROR_NONE;
-
+TEST(nntrainer_LayerNode, finalize_02_n) {
   auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
-  lnode->setProperty("input_shape=1:1:1");
-  EXPECT_NO_THROW(lnode->finalize());
+  lnode->setProperty({"name=abc"});
+  EXPECT_ANY_THROW(lnode->finalize());
 }
 
 /**
- * @brief test double finalize
+ * @brief test finalize with wrong context
  */
-TEST(nntrainer_LayerNode, finalize_01_n) {
-  int status = ML_ERROR_NONE;
+TEST(nntrainer_LayerNode, finalize_03_n) {
+  auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
+  lnode->setProperty({"input_shape=1:1:1"});
+  EXPECT_ANY_THROW(lnode->finalize());
+}
 
+/**
+ * @brief test finalize with right context
+ */
+TEST(nntrainer_LayerNode, finalize_04_p) {
   auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
-  lnode->setProperty("input_shape=1:1:1");
+  lnode->setProperty({"input_shape=1:1:1", "name=abc", "unit=4"});
   EXPECT_NO_THROW(lnode->finalize());
-  EXPECT_THROW(lnode->finalize(), std::runtime_error);
 }
 
 /**
- * @brief Main gtest
+ * @brief test double finalize
  */
-int main(int argc, char **argv) {
-  int result = -1;
-
-  try {
-    testing::InitGoogleTest(&argc, argv);
-  } catch (...) {
-    std::cerr << "Error duing IniGoogleTest" << std::endl;
-    return 0;
-  }
-
-  try {
-    result = RUN_ALL_TESTS();
-  } catch (...) {
-    std::cerr << "Error duing RUN_ALL_TSETS()" << std::endl;
-  }
-
-  return result;
+TEST(nntrainer_LayerNode, finalize_05_n) {
+  auto lnode = nntrainer::createLayerNode(nntrainer::FullyConnectedLayer::type);
+  lnode->setProperty({"input_shape=1:1:1", "name=abc", "unit=4"});
+  EXPECT_NO_THROW(lnode->finalize());
+  nntrainer::Var_Grad input =
+    nntrainer::Var_Grad(nntrainer::TensorDim({1, 1, 1, 1}));
+  lnode->configureRunContext({}, {&input}, {}, {});
+  EXPECT_ANY_THROW(lnode->finalize());
 }