ArmNN
 22.05
PrototxtConversionsTest.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 #include "armnn/Tensor.hpp"
8 
9 #include <doctest/doctest.h>
10 
11 TEST_SUITE("PrototxtConversions")
12 {
13 TEST_CASE("ConvertInt32ToOctalStringTest")
14 {
16 
17  std::string octalString = ConvertInt32ToOctalString(1);
18  CHECK(octalString.compare("\\\\001\\\\000\\\\000\\\\000"));
19 
20  octalString = ConvertInt32ToOctalString(256);
21  CHECK(octalString.compare("\\\\000\\\\100\\\\000\\\\000"));
22 
23  octalString = ConvertInt32ToOctalString(65536);
24  CHECK(octalString.compare("\\\\000\\\\000\\\\100\\\\000"));
25 
26  octalString = ConvertInt32ToOctalString(16777216);
27  CHECK(octalString.compare("\\\\000\\\\000\\\\000\\\\100"));
28 
29  octalString = ConvertInt32ToOctalString(-1);
30  CHECK(octalString.compare("\\\\377\\\\377\\\\377\\\\377"));
31 
32  octalString = ConvertInt32ToOctalString(-256);
33  CHECK(octalString.compare("\\\\000\\\\377\\\\377\\\\377"));
34 
35  octalString = ConvertInt32ToOctalString(-65536);
36  CHECK(octalString.compare("\\\\000\\\\000\\\\377\\\\377"));
37 
38  octalString = ConvertInt32ToOctalString(-16777216);
39  CHECK(octalString.compare("\\\\000\\\\000\\\\000\\\\377"));
40 }
41 
42 TEST_CASE("ConvertTensorShapeToStringTest")
43 {
45  using armnn::TensorShape;
46 
47  auto createAndConvert = [](std::initializer_list<unsigned int> dims) -> std::string
48  {
49  auto shape = TensorShape{dims};
50  return ConvertTensorShapeToString(shape);
51  };
52 
53  auto output_string = createAndConvert({5});
54  CHECK(output_string.compare(
55  "dim {\n"
56  "size: 5\n"
57  "}"));
58 
59  output_string = createAndConvert({4, 5});
60  CHECK(output_string.compare(
61  "dim {\n"
62  "size: 4\n"
63  "}\n"
64  "dim {\n"
65  "size: 5\n"
66  "}"
67  ));
68 
69  output_string = createAndConvert({3, 4, 5});
70  CHECK(output_string.compare(
71  "dim {\n"
72  "size: 3\n"
73  "}\n"
74  "dim {\n"
75  "size: 4\n"
76  "}\n"
77  "dim {\n"
78  "size: 5\n"
79  "}"
80  ));
81 
82  output_string = createAndConvert({2, 3, 4, 5});
83  CHECK(output_string.compare(
84  "dim {\n"
85  "size: 2\n"
86  "}\n"
87  "dim {\n"
88  "size: 3\n"
89  "}\n"
90  "dim {\n"
91  "size: 4\n"
92  "}\n"
93  "dim {\n"
94  "size: 5\n"
95  "}"
96  ));
97 
98  output_string = createAndConvert({1, 2, 3, 4, 5});
99  CHECK(output_string.compare(
100  "dim {\n"
101  "size: 1\n"
102  "}\n"
103  "dim {\n"
104  "size: 2\n"
105  "}\n"
106  "dim {\n"
107  "size: 3\n"
108  "}\n"
109  "dim {\n"
110  "size: 4\n"
111  "}\n"
112  "dim {\n"
113  "size: 5\n"
114  "}"
115  ));
116 
117  output_string = createAndConvert({0xffffffff, 0xffffffff});
118  CHECK(output_string.compare(
119  "dim {\n"
120  "size: 4294967295\n"
121  "}\n"
122  "dim {\n"
123  "size: 4294967295\n"
124  "}"
125  ));
126 
127  output_string = createAndConvert({1, 0});
128  CHECK(output_string.compare(
129  "dim {\n"
130  "size: 1\n"
131  "}\n"
132  "dim {\n"
133  "size: 0\n"
134  "}"
135  ));
136 }
137 
138 }
TEST_SUITE("PrototxtConversions")
std::string ConvertInt32ToOctalString(int value)
Converts an int value into the Prototxt octal representation.
std::string ConvertTensorShapeToString(const armnn::TensorShape &shape)
Converts an TensorShape into Prototxt representation.