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_crop_layer.hpp>
10 #include "builder_test.hpp"
12 using namespace testing;
13 using namespace InferenceEngine;
15 class CropLayerBuilderTest : public BuilderTestCommon {};
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});
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());
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);
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);
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);
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);