--- /dev/null
+#include "PluginInstance.h"
+#include "AbstractSession.h"
+#include "PluginType.h"
+#include "PluginException.h"
+
+#include "gtest/gtest.h"
+
+using namespace nncc::contrib::plugin;
+using namespace nncc::contrib::config;
+
+class ConcretePluginInstance : public AbstractPluginInstance
+{
+public:
+ void fillSession() override {}
+ void setParam(const std::string &name) override {}
+ void setParam(const std::string &name, const std::string &value) override {}
+ void checkConfig() override {}
+ void *execute(void *data) override {}
+};
+
+class ConcreteSession : public AbstractSession
+{
+public:
+ ConcreteSession() {}
+ void addInfo(const std::string &name, const std::string &value) override {}
+ void registerParam(const PluginParam ¶m) override {}
+};
+
+TEST(CONTRIB_PLUGIN, PluginInstance)
+{
+ ConcretePluginInstance pluginInstance;
+
+ ASSERT_THROW(pluginInstance.getSession(), nncc::contrib::PluginException);
+
+ std::shared_ptr<AbstractSession> pSession = std::make_shared<ConcreteSession>();
+ pluginInstance.setSession(pSession);
+
+ pluginInstance.fillSessionBase(PluginType::typeFrontEnd, "verNum", "pluginName");
+
+ ASSERT_EQ(pluginInstance.getSession()->getPluginType(), PluginType::typeFrontEnd);
+}