• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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