PluginManager tests part 8 (AbstractModule class) (#348)
authorIvan Vagin/AI Tools Lab /SRR/Engineer/삼성전자 <ivan.vagin@samsung.com>
Wed, 27 Jun 2018 07:39:13 +0000 (10:39 +0300)
committerSergey Vostokov/AI Tools Lab /SRR/Staff Engineer/삼성전자 <s.vostokov@samsung.com>
Wed, 27 Jun 2018 07:39:13 +0000 (16:39 +0900)
AbstractModule class test

This commit introduced test for AbstractModule class

Signed-off-by: Ivan Vagin <ivan.vagin@samsung.com>
contrib/nnc/examples/plugin_example/samplePlugin.cpp
contrib/nnc/src/module/AbstractModule.test.cpp [new file with mode: 0644]

index 797dde8..2a8e6db 100644 (file)
@@ -63,10 +63,6 @@ void SamplePluginInstance::fillSession()
 void SamplePluginInstance::checkConfig()
 {
   std::cout << std::endl << "!!! plugin (" << pluginName << ") " << __func__ << std::endl;
-
-  std::string info = "!!! plugin (" + pluginName + ") " + __func__ + " [Bad configuration]";
-
-  throw nncc::contrib::ConfigException(info);
 }
 
 void *SamplePluginInstance::execute(void *data)
@@ -77,7 +73,7 @@ void *SamplePluginInstance::execute(void *data)
 
 void SamplePluginInstance::setParam(const std::string &name)
 {
-  throw nncc::contrib::ConfigException("bad parameter <" + name + ">");
+  std::cout << "bad parameter <" << name << ">";
 }
 
 void SamplePluginInstance::setParam(const std::string &name, const std::string &value)
diff --git a/contrib/nnc/src/module/AbstractModule.test.cpp b/contrib/nnc/src/module/AbstractModule.test.cpp
new file mode 100644 (file)
index 0000000..4e5c7b0
--- /dev/null
@@ -0,0 +1,80 @@
+#include "module/plugin/PluginSession.h"
+#include "module/AbstractModule.h"
+#include "ConfigException.h"
+
+#include "gtest/gtest.h"
+
+#define STRING(s) _STRING(s)
+#define _STRING(s) #s
+
+using namespace nncc::contrib;
+using namespace nncc::contrib::config;
+using namespace nncc::contrib::plugin;
+using namespace nncc::contrib::module;
+using namespace nncc::contrib::module::plugin;
+
+class ConcreteModule : public AbstractModule
+{
+public:
+  ConcreteModule():AbstractModule() {}
+  ConcreteModule(PluginType moduleType):AbstractModule(moduleType) {}
+};
+
+std::shared_ptr<PluginProxy> createPluginProxy()
+{
+  std::shared_ptr<PluginProxy> pp = PluginProxy::create(STRING(CMAKE_SAMPLE_PLUGIN_ABS_PATH));
+  std::shared_ptr<AbstractSession> session = std::make_shared<PluginSession>();
+  pp->getPluginInstance().setSession(session);
+  pp->getPluginInstance().fillSession();
+  return pp;
+}
+
+// Test AbstractModule with wrong config
+TEST(CONTRIB_NNC, AbstractModuleWrongConfig)
+{
+  // Default constructor
+  ConcreteModule pluginModuleDefault;
+  ASSERT_THROW(pluginModuleDefault.execute(nullptr), ConfigException);
+
+  // Constructor(PluginType)
+  ConcreteModule pluginModule(PluginType::typeFrontEnd);
+  ASSERT_EQ(pluginModule.getModuleType(), PluginType::typeFrontEnd);
+
+  // 'configure' method for Module without plugins
+  ASSERT_THROW(pluginModule.configure(std::make_shared<DataList>("DataListName")), ConfigException);
+
+  // Register PluginProxy
+  auto pp = createPluginProxy();
+  pluginModule.registerPlugin(pp);
+
+  // 'configure' method with missing required plugin paramether
+  std::shared_ptr<DataList> config = std::make_shared<DataList>("DataListName");
+  ASSERT_THROW(pluginModule.configure(config), ConfigException);
+}
+
+// Test AbstractModule with correct config
+TEST(CONTRIB_NNC, AbstractModule)
+{
+  ConcreteModule pluginModule(PluginType::typeFrontEnd);
+
+  // Register PluginProxy
+  auto pp1 = createPluginProxy();
+  auto pp2 = createPluginProxy();
+  pluginModule.registerPlugin(pp1);
+  pluginModule.registerPlugin(pp2);
+
+  // 'configure' method
+  std::shared_ptr<DataList> config = std::make_shared<DataList>("DataListName");
+  config->createElement("filename", "samplePluginName");
+  config->createElement("someoption");
+  pluginModule.configure(config);
+  int x;
+  ASSERT_EQ(pluginModule.execute((void*)&x), (void*)&x);
+
+  // Operator '<<'
+  std::ostringstream os; 
+  os << pluginModule;
+  ASSERT_EQ(os.str(), "=== MODULE FrontEnd ===\nplugins {\n  "
+                      STRING(CMAKE_SAMPLE_PLUGIN_ABS_PATH) "\n  "
+                      STRING(CMAKE_SAMPLE_PLUGIN_ABS_PATH) "\n}\n");
+}