Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / inference_engine_tests / plugin_dispatcher_tests.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include "tests_common.hpp"
6 #include "mock_plugin_dispatcher.hpp"
7 #include <gtest/gtest.h>
8 #include <gmock/gmock.h>
9 #include "ie_plugin_dispatcher.hpp"
10 #include "ie_plugin_ptr.hpp"
11 #include "ie_device.hpp"
12
13 using namespace InferenceEngine;
14 using namespace ::testing;
15
16 class PluginDispatcherTests : public ::testing::Test {
17 public:
18     const std::string nameExt(const std::string& name) { return name + IE_BUILD_POSTFIX;}
19 };
20
21 TEST_F(PluginDispatcherTests, canLoadMockPlugin) {
22     PluginDispatcher dispatcher({ "", "./", "./lib" });
23     ASSERT_NO_THROW(dispatcher.getPluginByName(nameExt("mock_engine")));
24 }
25
26 TEST_F(PluginDispatcherTests, throwsOnUnknownPlugin) {
27     PluginDispatcher dispatcher({ "./", "./lib" });
28     ASSERT_THROW(dispatcher.getPluginByName(nameExt("unknown_plugin")), InferenceEngine::details::InferenceEngineException);
29 }
30
31 TEST_F(PluginDispatcherTests, throwsOnDeviceWithoutPlugins) {
32     PluginDispatcher dispatcher({ "./", "./lib" });
33     ASSERT_THROW(dispatcher.getSuitablePlugin(TargetDevice::eBalanced),
34                                                     InferenceEngine::details::InferenceEngineException);
35 }
36
37 ACTION(ThrowException)
38 {
39     THROW_IE_EXCEPTION << "Exception!";
40 }
41
42 TEST_F(PluginDispatcherTests, triesToLoadEveryPluginSuitableForDevice) {
43     MockDispatcher disp({ "./", "./lib" });
44
45     ON_CALL(disp, getPluginByName(_)).WillByDefault(ThrowException());
46 #ifdef ENABLE_MKL_DNN
47     EXPECT_CALL(disp, getPluginByName(nameExt("MKLDNNPlugin"))).Times(1);
48 #endif
49 #ifdef ENABLE_OPENVX_CVE
50     EXPECT_CALL(disp, getPluginByName(nameExt("OpenVXPluginCVE"))).Times(1);
51 #elif defined ENABLE_OPENVX
52     EXPECT_CALL(disp, getPluginByName(nameExt("OpenVXPlugin"))).Times(1);
53 #endif
54     ASSERT_THROW(disp.getSuitablePlugin(TargetDevice::eCPU), InferenceEngine::details::InferenceEngineException);
55 }
56
57 #if defined(ENABLE_OPENVX) || defined(ENABLE_MKL_DNN) || defined(ENABLE_OPENVX_CVE)
58 TEST_F(PluginDispatcherTests, returnsIfLoadSuccessfull) {
59     MockDispatcher disp({ "./", "./lib" });
60     PluginDispatcher dispatcher({ "", "./", "./lib" });
61     auto ptr = dispatcher.getPluginByName(nameExt("mock_engine"));
62
63     EXPECT_CALL(disp, getPluginByName(_)).WillOnce(Return(ptr));
64     ASSERT_NO_THROW(disp.getSuitablePlugin(TargetDevice::eCPU));
65 }
66 #endif