xref: /aosp_15_r20/external/armnn/src/armnnUtils/test/PrototxtConversionsTest.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <PrototxtConversions.hpp>
7 #include "armnn/Tensor.hpp"
8 
9 #include <doctest/doctest.h>
10 
11 TEST_SUITE("PrototxtConversions")
12 {
13 TEST_CASE("ConvertInt32ToOctalStringTest")
14 {
15     using armnnUtils::ConvertInt32ToOctalString;
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 {
44     using armnnUtils::ConvertTensorShapeToString;
45     using armnn::TensorShape;
46 
47     auto createAndConvert = [](std::initializer_list<unsigned int> dims) -> std::string
__anon4f4d5e920102(std::initializer_list<unsigned int> dims) 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 }
139