1 // Copyright (C) 2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <gtest/gtest.h>
7 #include <ie_builders.hpp>
8 #include <builders/ie_eltwise_layer.hpp>
10 #include "builder_test.hpp"
12 using namespace testing;
13 using namespace InferenceEngine;
15 class EltwiseLayerBuilderTest : public BuilderTestCommon {};
17 TEST_F(EltwiseLayerBuilderTest, getExistsLayerFromNetworkBuilder) {
18 Builder::Network net("network");
19 Builder::EltwiseLayer layer("Eltwise layer");
21 layer.setInputPorts({Port({1, 2, 3, 4}), Port({1, 2, 3, 4})});
22 layer.setOutputPort(Port({1, 2, 3, 4}));
24 ASSERT_NO_THROW(ind = net.addLayer(layer));
25 Builder::EltwiseLayer layerFromNet(net.getLayer(ind));
27 ASSERT_EQ(layer.getInputPorts(), layerFromNet.getInputPorts());
28 ASSERT_EQ(layer.getOutputPort(), layerFromNet.getOutputPort());
29 ASSERT_EQ(layer.getEltwiseType(), layerFromNet.getEltwiseType());
32 TEST_F(EltwiseLayerBuilderTest, checkOnlineEltwiseTypeChanging) {
33 Builder::Network net("network");
34 Builder::EltwiseLayer layer("Eltwise layer");
36 layer.setInputPorts({Port({1, 2, 3}), Port({1, 2, 3})});
37 layer.setOutputPort(Port({1, 2, 3}));
39 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MAX);
40 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MAX);
41 ASSERT_NO_THROW(net.addLayer(layer));
43 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::DIV);
44 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::DIV);
45 ASSERT_NO_THROW(net.addLayer(layer));
47 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MIN);
48 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MIN);
49 ASSERT_NO_THROW(net.addLayer(layer));
51 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::MUL);
52 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::MUL);
53 ASSERT_NO_THROW(net.addLayer(layer));
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));
59 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::SUB);
60 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::SUB);
61 ASSERT_NO_THROW(net.addLayer(layer));
63 layer.setEltwiseType(Builder::EltwiseLayer::EltwiseType::SUM);
64 ASSERT_EQ(layer.getEltwiseType(), Builder::EltwiseLayer::EltwiseType::SUM);
65 ASSERT_NO_THROW(net.addLayer(layer));
68 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithOneInputPort) {
69 Builder::Network net("network");
70 Builder::EltwiseLayer layer("Eltwise layer");
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);
77 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithThreeInputPort) {
78 Builder::Network net("network");
79 Builder::EltwiseLayer layer("Eltwise layer");
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);
86 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithDifferentInputPorts) {
87 Builder::Network net("network");
88 Builder::EltwiseLayer layer("Eltwise layer");
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);
95 TEST_F(EltwiseLayerBuilderTest, cannotCreateLayerWithDifferentInputAndOutputPorts) {
96 Builder::Network net("network");
97 Builder::EltwiseLayer layer("Eltwise layer");
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);