1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <gtest/gtest.h>
7 #include <ie_builders.hpp>
8 #include <builders/ie_concat_layer.hpp>
10 #include "builder_test.hpp"
12 using namespace testing;
13 using namespace InferenceEngine;
15 class ConcatLayerBuilderTest : public BuilderTestCommon {};
17 TEST_F(ConcatLayerBuilderTest, getExistsLayerFromNetworkBuilderAxis) {
18 Builder::Network network("network");
19 Builder::ConcatLayer layer("concat layer");
22 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
23 layer.setOutputPort(Port({1 + 3, 2, 55, 55}));
26 ASSERT_NO_THROW(ind = network.addLayer(layer));
27 network.getLayer(ind)->validate(false);
28 ASSERT_NO_THROW(network.getLayer(ind)->validate(false));
29 Builder::ConcatLayer layerFromNet(network.getLayer(ind));
31 ASSERT_EQ(layer.getAxis(), layerFromNet.getAxis());
32 ASSERT_EQ(layer.getInputPorts(), layerFromNet.getInputPorts());
33 ASSERT_EQ(layer.getOutputPort(), layerFromNet.getOutputPort());
36 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithNoInputPorts) {
37 Builder::Network network("network");
38 Builder::ConcatLayer layer("concat layer");
41 layer.setOutputPort(Port({1, 2 + 4, 55, 55}));
42 // here should be layer.setInputPort(...)
45 ASSERT_NO_THROW(ind = network.addLayer(layer));
46 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
49 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithOneInputPort) {
50 Builder::Network network("network");
51 Builder::ConcatLayer layer("concat layer");
54 layer.setInputPorts({Port({1, 2, 55, 55})}); // here
55 layer.setOutputPort(Port({1, 2 + 4, 55, 55}));
58 ASSERT_NO_THROW(ind = network.addLayer(layer));
59 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
62 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithWrongAxis) {
63 Builder::Network network("network");
64 Builder::ConcatLayer layer("concat layer");
66 layer.setAxis(50); // here
67 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
68 layer.setOutputPort(Port({1 + 3, 2, 55, 55}));
71 ASSERT_NO_THROW(ind = network.addLayer(layer));
72 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
75 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithUnalignedPorts1) {
76 Builder::Network network("network");
77 Builder::ConcatLayer layer("concat layer");
80 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
81 layer.setOutputPort(Port({1 + 3, 2, 55, 155})); // should be {1 + 3, 2, 55, 55}
84 ASSERT_NO_THROW(ind = network.addLayer(layer));
85 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
88 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithUnalignedPorts2) {
89 Builder::Network network("network");
90 Builder::ConcatLayer layer("concat layer");
93 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
94 layer.setOutputPort(Port({1 + 3, 2, 155, 55})); // should be {1 + 3, 2, 55, 55}
97 ASSERT_NO_THROW(ind = network.addLayer(layer));
98 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
101 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithUnalignedPorts3) {
102 Builder::Network network("network");
103 Builder::ConcatLayer layer("concat layer");
106 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
107 layer.setOutputPort(Port({100, 2, 55, 55})); // should be {1 + 3, 2, 55, 55}
110 ASSERT_NO_THROW(ind = network.addLayer(layer));
111 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
114 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithUnalignedPorts4) {
115 Builder::Network network("network");
116 Builder::ConcatLayer layer("concat layer");
119 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 55})});
120 layer.setOutputPort(Port({1, 100, 55, 55})); // should be {1, 2 + 4, 55, 55}
123 ASSERT_NO_THROW(ind = network.addLayer(layer));
124 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
127 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithDifferentInputPorts1) {
128 Builder::Network network("network");
129 Builder::ConcatLayer layer("concat layer");
132 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 55, 155})}); // here
133 layer.setOutputPort(Port({1 + 3, 4, 55, 55}));
136 ASSERT_NO_THROW(ind = network.addLayer(layer));
137 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);
140 TEST_F(ConcatLayerBuilderTest, cannotCreateLayerWithDifferentInputPorts2) {
141 Builder::Network network("network");
142 Builder::ConcatLayer layer("concat layer");
145 layer.setInputPorts({Port({1, 2, 55, 55}), Port({3, 2, 155, 55})}); // here
146 layer.setOutputPort(Port({1 + 3, 4, 55, 55}));
149 ASSERT_NO_THROW(ind = network.addLayer(layer));
150 ASSERT_THROW(network.getLayer(ind)->validate(false), InferenceEngine::details::InferenceEngineException);