1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include <armnn/Types.hpp>
7
8 #include <armnnUtils/TensorUtils.hpp>
9
10 #include <boost/test/unit_test.hpp>
11
12 using namespace armnn;
13 using namespace armnnUtils;
14
15 BOOST_AUTO_TEST_SUITE(TensorUtilsSuite)
16
BOOST_AUTO_TEST_CASE(ExpandDimsAxis0Test)17 BOOST_AUTO_TEST_CASE(ExpandDimsAxis0Test)
18 {
19 armnn::TensorShape inputShape({ 2, 3, 4 });
20
21 // Expand dimension 0
22 armnn::TensorShape outputShape = ExpandDims(inputShape, 0);
23 BOOST_TEST(outputShape.GetNumDimensions() == 4);
24 BOOST_TEST(outputShape[0] == 1);
25 BOOST_TEST(outputShape[1] == 2);
26 BOOST_TEST(outputShape[2] == 3);
27 BOOST_TEST(outputShape[3] == 4);
28 }
29
BOOST_AUTO_TEST_CASE(ExpandDimsAxis1Test)30 BOOST_AUTO_TEST_CASE(ExpandDimsAxis1Test)
31 {
32 armnn::TensorShape inputShape({ 2, 3, 4 });
33
34 // Expand dimension 1
35 armnn::TensorShape outputShape = ExpandDims(inputShape, 1);
36 BOOST_TEST(outputShape.GetNumDimensions() == 4);
37 BOOST_TEST(outputShape[0] == 2);
38 BOOST_TEST(outputShape[1] == 1);
39 BOOST_TEST(outputShape[2] == 3);
40 BOOST_TEST(outputShape[3] == 4);
41 }
42
BOOST_AUTO_TEST_CASE(ExpandDimsAxis2Test)43 BOOST_AUTO_TEST_CASE(ExpandDimsAxis2Test)
44 {
45 armnn::TensorShape inputShape({ 2, 3, 4 });
46
47 // Expand dimension 2
48 armnn::TensorShape outputShape = ExpandDims(inputShape, 2);
49 BOOST_TEST(outputShape.GetNumDimensions() == 4);
50 BOOST_TEST(outputShape[0] == 2);
51 BOOST_TEST(outputShape[1] == 3);
52 BOOST_TEST(outputShape[2] == 1);
53 BOOST_TEST(outputShape[3] == 4);
54 }
55
BOOST_AUTO_TEST_CASE(ExpandDimsAxis3Test)56 BOOST_AUTO_TEST_CASE(ExpandDimsAxis3Test)
57 {
58 armnn::TensorShape inputShape({ 2, 3, 4 });
59
60 // Expand dimension 3
61 armnn::TensorShape outputShape = ExpandDims(inputShape, 3);
62 BOOST_TEST(outputShape.GetNumDimensions() == 4);
63 BOOST_TEST(outputShape[0] == 2);
64 BOOST_TEST(outputShape[1] == 3);
65 BOOST_TEST(outputShape[2] == 4);
66 BOOST_TEST(outputShape[3] == 1);
67 }
68
BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis1Test)69 BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis1Test)
70 {
71 armnn::TensorShape inputShape({ 2, 3, 4 });
72
73 // Expand dimension -1
74 armnn::TensorShape outputShape = ExpandDims(inputShape, -1);
75 BOOST_TEST(outputShape.GetNumDimensions() == 4);
76 BOOST_TEST(outputShape[0] == 2);
77 BOOST_TEST(outputShape[1] == 3);
78 BOOST_TEST(outputShape[2] == 4);
79 BOOST_TEST(outputShape[3] == 1);
80 }
81
BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis2Test)82 BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis2Test)
83 {
84 armnn::TensorShape inputShape({ 2, 3, 4 });
85
86 // Expand dimension -2
87 armnn::TensorShape outputShape = ExpandDims(inputShape, -2);
88 BOOST_TEST(outputShape.GetNumDimensions() == 4);
89 BOOST_TEST(outputShape[0] == 2);
90 BOOST_TEST(outputShape[1] == 3);
91 BOOST_TEST(outputShape[2] == 1);
92 BOOST_TEST(outputShape[3] == 4);
93 }
94
BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis3Test)95 BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis3Test)
96 {
97 armnn::TensorShape inputShape({ 2, 3, 4 });
98
99 // Expand dimension -3
100 armnn::TensorShape outputShape = ExpandDims(inputShape, -3);
101 BOOST_TEST(outputShape.GetNumDimensions() == 4);
102 BOOST_TEST(outputShape[0] == 2);
103 BOOST_TEST(outputShape[1] == 1);
104 BOOST_TEST(outputShape[2] == 3);
105 BOOST_TEST(outputShape[3] == 4);
106 }
107
BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis4Test)108 BOOST_AUTO_TEST_CASE(ExpandDimsNegativeAxis4Test)
109 {
110 armnn::TensorShape inputShape({ 2, 3, 4 });
111
112 // Expand dimension -4
113 armnn::TensorShape outputShape = ExpandDims(inputShape, -4);
114 BOOST_TEST(outputShape.GetNumDimensions() == 4);
115 BOOST_TEST(outputShape[0] == 1);
116 BOOST_TEST(outputShape[1] == 2);
117 BOOST_TEST(outputShape[2] == 3);
118 BOOST_TEST(outputShape[3] == 4);
119 }
120
BOOST_AUTO_TEST_CASE(ExpandDimsInvalidAxisTest)121 BOOST_AUTO_TEST_CASE(ExpandDimsInvalidAxisTest)
122 {
123 armnn::TensorShape inputShape({ 2, 3, 4 });
124
125 // Invalid expand dimension 4
126 BOOST_CHECK_THROW(ExpandDims(inputShape, 4), armnn::InvalidArgumentException);
127 }
128
BOOST_AUTO_TEST_CASE(ExpandDimsInvalidNegativeAxisTest)129 BOOST_AUTO_TEST_CASE(ExpandDimsInvalidNegativeAxisTest)
130 {
131 armnn::TensorShape inputShape({ 2, 3, 4 });
132
133 // Invalid expand dimension -5
134 BOOST_CHECK_THROW(ExpandDims(inputShape, -5), armnn::InvalidArgumentException);
135 }
136
137 BOOST_AUTO_TEST_SUITE_END()
138