Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / inference_engine_tests / cpp_interfaces / executable_network_tests.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <gtest/gtest.h>
6 #include <gmock/gmock-spec-builders.h>
7 #include <mock_not_empty_icnn_network.hpp>
8 #include <mock_iexecutable_network.hpp>
9 #include <mock_iasync_infer_request.hpp>
10 #include <cpp_interfaces/impl/mock_executable_network_internal.hpp>
11
12 #include <cpp/ie_executable_network.hpp>
13
14 using namespace ::testing;
15 using namespace std;
16 using namespace InferenceEngine;
17 using namespace InferenceEngine::details;
18
19 class ExecutableNetworkTests : public ::testing::Test {
20 protected:
21     std::shared_ptr<MockIExecutableNetwork> mock_exe_network;
22     ExecutableNetwork exeNetworkWrapper;
23     std::shared_ptr<MockIInferRequest> mock_async_request;
24     ResponseDesc dsc;
25
26     virtual void TearDown() {
27     }
28
29     virtual void SetUp() {
30         mock_exe_network = make_shared<MockIExecutableNetwork>();
31         mock_async_request = make_shared<MockIInferRequest>();
32         exeNetworkWrapper = ExecutableNetwork(mock_exe_network);
33     }
34 };
35
36 // CreateInferRequest
37 TEST_F(ExecutableNetworkTests, canForwardCreateInferRequest) {
38     EXPECT_CALL(*mock_exe_network.get(), CreateInferRequest(_, _))
39             .WillOnce(DoAll(SetArgReferee<0>(mock_async_request), Return(OK)));
40     InferRequest actual_async_request;
41     ASSERT_NO_THROW(actual_async_request = exeNetworkWrapper.CreateInferRequest());
42     ASSERT_EQ(mock_async_request, static_cast<IInferRequest::Ptr &>(actual_async_request));
43 }
44
45 TEST_F(ExecutableNetworkTests, throwsIfCreateInferRequestReturnNotOK) {
46     EXPECT_CALL(*mock_exe_network.get(), CreateInferRequest(_, _)).WillOnce(Return(GENERAL_ERROR));
47     ASSERT_THROW(exeNetworkWrapper.CreateInferRequest(), InferenceEngineException);
48 }
49
50 // CreateInferRequestPtr
51 TEST_F(ExecutableNetworkTests, canForwardCreateInferRequestPtr) {
52     EXPECT_CALL(*mock_exe_network.get(), CreateInferRequest(_, _))
53             .WillOnce(DoAll(SetArgReferee<0>(mock_async_request), Return(OK)));
54     InferRequest::Ptr actual_async_request;
55     ASSERT_NO_THROW(actual_async_request = exeNetworkWrapper.CreateInferRequestPtr());
56     ASSERT_EQ(mock_async_request, static_cast<IInferRequest::Ptr &>(*actual_async_request.get()));
57 }
58
59 TEST_F(ExecutableNetworkTests, throwsIfCreateInferRequestPtrReturnNotOK) {
60     EXPECT_CALL(*mock_exe_network.get(), CreateInferRequest(_, _)).WillOnce(Return(GENERAL_ERROR));
61     ASSERT_THROW(exeNetworkWrapper.CreateInferRequest(), InferenceEngineException);
62 }