Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / builders / eltwise_layer_test.cpp
1 // Copyright (C) 2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #include <gtest/gtest.h>
6 #include <string.h>
7 #include <ie_builders.hpp>
8 #include <builders/ie_eltwise_layer.hpp>
9
10 #include "builder_test.hpp"
11
12 using namespace testing;
13 using namespace InferenceEngine;
14
15 class EltwiseLayerBuilderTest : public BuilderTestCommon {};
16
17 TEST_F(EltwiseLayerBuilderTest, getExistsLayerFromNetworkBuilder) {
18     Builder::Network net("network");
19     Builder::EltwiseLayer layer("Eltwise layer");
20
21     layer.setInputPorts({Port({1, 2, 3, 4}), Port({1, 2, 3, 4})});
22     layer.setOutputPort(Port({1, 2, 3, 4}));
23     size_t ind = 0;
24     ASSERT_NO_THROW(ind = net.addLayer(layer));
25     Builder::EltwiseLayer layerFromNet(net.getLayer(ind));
26
27     ASSERT_EQ(layer.getInputPorts(), layerFromNet.getInputPorts());
28     ASSERT_EQ(layer.getOutputPort(), layerFromNet.getOutputPort());
29     ASSERT_EQ(layer.getEltwiseType(), layerFromNet.getEltwiseType());
30 }
31
32 TEST_F(EltwiseLayerBuilderTest, checkOnlineEltwiseTypeChanging) {
33     Builder::Network net("network");
34     Builder::EltwiseLayer layer("Eltwise layer");
35
36     layer.setInputPorts({Port({1, 2, 3}), Port({1, 2, 3})});
37     layer.setOutputPort(Port({1, 2, 3}));
38
39     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MAX);
40     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MAX);
41     ASSERT_NO_THROW(net.addLayer(layer));
42
43     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::DIV);
44     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::DIV);
45     ASSERT_NO_THROW(net.addLayer(layer));
46
47     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MIN);
48     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MIN);
49     ASSERT_NO_THROW(net.addLayer(layer));
50
51     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MUL);
52     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MUL);
53     ASSERT_NO_THROW(net.addLayer(layer));
54
55     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::SQUARED_DIFF);
56     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::SQUARED_DIFF);
57     ASSERT_NO_THROW(net.addLayer(layer));
58
59     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::SUB);
60     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::SUB);
61     ASSERT_NO_THROW(net.addLayer(layer));
62
63     layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::SUM);
64     ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::SUM);
65     ASSERT_NO_THROW(net.addLayer(layer));
66 }
67
68 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithOneInputPort) {
69     Builder::Network net("network");
70     Builder::EltwiseLayer layer("Eltwise layer");
71
72     layer.setInputPorts({Port({1, 2, 3, 4})});   // here
73     layer.setOutputPort(Port({1, 2, 3, 4}));
74     ASSERT_THROW(net.addLayer(layer), InferenceEngine::details::InferenceEngineException);
75 }
76
77 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithThreeInputPort) {
78     Builder::Network net("network");
79     Builder::EltwiseLayer layer("Eltwise layer");
80
81     layer.setInputPorts({Port({1, 2, 3, 4}), Port({1, 2, 3, 4}), Port({1, 2, 3, 4})});   // here
82     layer.setOutputPort(Port({1, 2, 3, 4}));
83     ASSERT_THROW(net.addLayer(layer), InferenceEngine::details::InferenceEngineException);
84 }
85
86 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithDifferentInputPorts) {
87     Builder::Network net("network");
88     Builder::EltwiseLayer layer("Eltwise layer");
89
90     layer.setInputPorts({Port({1, 2, 3, 4}), Port({1, 2, 3, 1000})});   // here
91     layer.setOutputPort(Port({1, 2, 3, 4}));
92     ASSERT_THROW(net.addLayer(layer), InferenceEngine::details::InferenceEngineException);
93 }
94
95 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithDifferentInputAndOutputPorts) {
96     Builder::Network net("network");
97     Builder::EltwiseLayer layer("Eltwise layer");
98
99     layer.setInputPorts({Port({1, 2, 3, 4}), Port({1, 2, 3, 4})});
100     layer.setOutputPort(Port({1, 2, 3, 100}));   // here
101     ASSERT_THROW(net.addLayer(layer), InferenceEngine::details::InferenceEngineException);
102 }