Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / tests / unit / builders / crop_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_crop_layer.hpp>
9
10 #include "builder_test.hpp"
11
12 using namespace testing;
13 using namespace InferenceEngine;
14
15 class CropLayerBuilderTest : public BuilderTestCommon {};
16
17 TEST_F(CropLayerBuilderTest, getExistsLayerFromNetworkBuilder) {
18     Builder::Network network("network");
19     Builder::CropLayer cropLayer("Crop layer");
20     std::vector<Port> input_ports;
21     input_ports.push_back(Port({1, 21, 44, 44}));
22     input_ports.push_back(Port({1, 21, 44, 44}));
23     cropLayer.setInputPorts(input_ports);
24     cropLayer.setOutputPort(Port({1, 21, 44, 44}));
25     cropLayer.setAxis({2, 3});
26     cropLayer.setOffset({0, 0});
27     size_t ind = 0;
28     ASSERT_NO_THROW(ind = network.addLayer(cropLayer));
29     Builder::CropLayer layerFromNet(network.getLayer(ind));
30     ASSERT_EQ(layerFromNet.getAxis(), cropLayer.getAxis());
31     ASSERT_EQ(layerFromNet.getOffset(), cropLayer.getOffset());
32 }
33
34 TEST_F(CropLayerBuilderTest, cannotCreateLayerWithOneInputShape) {
35     Builder::Network network("network");
36     Builder::CropLayer cropLayer("Crop layer");
37     std::vector<Port> input_ports;
38     input_ports.push_back(Port({1, 21, 44, 44}));  // here
39     cropLayer.setInputPorts(input_ports);
40     cropLayer.setOutputPort(Port({1, 21, 44, 44}));
41     cropLayer.setAxis({2, 3});
42     cropLayer.setOffset({0, 0});
43     ASSERT_THROW(network.addLayer(cropLayer), InferenceEngine::details::InferenceEngineException);
44 }
45
46 TEST_F(CropLayerBuilderTest, cannotCreateLayerWithThreeInputShapes) {
47     Builder::Network network("network");
48     Builder::CropLayer cropLayer("Crop layer");
49     std::vector<Port> input_ports;
50     input_ports.push_back(Port({1, 21, 44, 44}));
51     input_ports.push_back(Port({1, 21, 44, 44}));
52     input_ports.push_back(Port({1, 21, 44, 44}));  // here
53     cropLayer.setInputPorts(input_ports);
54     cropLayer.setOutputPort(Port({1, 21, 44, 44}));
55     cropLayer.setAxis({2, 3});
56     cropLayer.setOffset({0, 0});
57     ASSERT_THROW(network.addLayer(cropLayer), InferenceEngine::details::InferenceEngineException);
58 }
59
60 TEST_F(CropLayerBuilderTest, cannotCreateLayerWithDifferentSizeOfAxisAndOffset) {
61     Builder::Network network("network");
62     Builder::CropLayer cropLayer("Crop layer");
63     std::vector<Port> input_ports;
64     input_ports.push_back(Port({1, 21, 44, 44}));
65     input_ports.push_back(Port({1, 21, 44, 44}));
66     cropLayer.setInputPorts(input_ports);
67     cropLayer.setOutputPort(Port({1, 21, 44, 44}));
68     cropLayer.setAxis({2, 3});
69     cropLayer.setOffset({0, 0, 0});  // here
70     ASSERT_THROW(network.addLayer(cropLayer), InferenceEngine::details::InferenceEngineException);
71 }
72
73 TEST_F(CropLayerBuilderTest, cannotCreateLayerWithSoBigOffset) {
74     Builder::Network network("network");
75     Builder::CropLayer cropLayer("Crop layer");
76     std::vector<Port> input_ports;
77     input_ports.push_back(Port({1, 21, 44, 44}));
78     input_ports.push_back(Port({1, 21, 34, 34}));
79     cropLayer.setInputPorts(input_ports);
80     cropLayer.setOutputPort(Port({1, 21, 34, 34}));
81     cropLayer.setAxis({2, 3});
82     cropLayer.setOffset({0, 50});  // here
83     ASSERT_THROW(network.addLayer(cropLayer), InferenceEngine::details::InferenceEngineException);
84 }