Fix various uses of non-standard C++:
[platform/upstream/armnn.git] / src / armnn / test / TestNameAndDescriptorLayerVisitor.cpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #include "TestNameAndDescriptorLayerVisitor.hpp"
6 #include "Network.hpp"
7
8 namespace armnn
9 {
10
11 void Set2dDataValues(SplitterDescriptor descriptor, uint32_t value)
12 {
13     for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
14     {
15         for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
16         {
17             descriptor.SetViewOriginCoord(i, j, value);
18             descriptor.SetViewSize(i, j, value);
19         }
20     }
21 }
22
23 void Set2dDataValues(OriginsDescriptor& descriptor, uint32_t value)
24 {
25     for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
26     {
27         for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
28         {
29             descriptor.SetViewOriginCoord(i, j, value);
30         }
31     }
32 }
33
34 BOOST_AUTO_TEST_SUITE(TestNameAndDescriptorLayerVisitor)
35
36 BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameAndDescriptor)
37 {
38     const char* layerName = "PermuteLayer";
39     PermuteDescriptor descriptor({0, 1, 2, 3});
40     TestPermuteLayerVisitor visitor(descriptor, layerName);
41     Network net;
42
43     IConnectableLayer *const layer = net.AddPermuteLayer(descriptor, layerName);
44     layer->Accept(visitor);
45 }
46
47 BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameNullAndDescriptor)
48 {
49     PermuteDescriptor descriptor({0, 1, 2, 3});
50     TestPermuteLayerVisitor visitor(descriptor);
51     Network net;
52
53     IConnectableLayer *const layer = net.AddPermuteLayer(descriptor);
54     layer->Accept(visitor);
55 }
56
57 BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameAndDescriptor)
58 {
59     const char* layerName = "BatchToSpaceNdLayer";
60     BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}});
61     descriptor.m_DataLayout = armnn::DataLayout::NHWC;
62     TestBatchToSpaceNdLayerVisitor visitor(descriptor, layerName);
63     Network net;
64
65     IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor, layerName);
66     layer->Accept(visitor);
67 }
68
69 BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameNullAndDescriptor)
70 {
71     BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}});
72     descriptor.m_DataLayout = armnn::DataLayout::NHWC;
73     TestBatchToSpaceNdLayerVisitor visitor(descriptor);
74     Network net;
75
76     IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor);
77     layer->Accept(visitor);
78 }
79
80 BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameAndDescriptor)
81 {
82     const char* layerName = "Pooling2dLayer";
83     Pooling2dDescriptor descriptor;
84     descriptor.m_PoolType            = PoolingAlgorithm::Max;
85     descriptor.m_PadLeft             = 1;
86     descriptor.m_PadRight            = 1;
87     descriptor.m_PadTop              = 1;
88     descriptor.m_PadBottom           = 1;
89     descriptor.m_PoolWidth           = 1;
90     descriptor.m_PoolHeight          = 1;
91     descriptor.m_StrideX             = 1;
92     descriptor.m_StrideY             = 1;
93     descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling;
94     descriptor.m_PaddingMethod       = PaddingMethod::IgnoreValue;
95     descriptor.m_DataLayout          = DataLayout::NHWC;
96     TestPooling2dLayerVisitor visitor(descriptor, layerName);
97     Network net;
98
99     IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor, layerName);
100     layer->Accept(visitor);
101 }
102
103 BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameNullAndDescriptor)
104 {
105     Pooling2dDescriptor descriptor;
106     descriptor.m_PoolType            = PoolingAlgorithm::Max;
107     descriptor.m_PadLeft             = 1;
108     descriptor.m_PadRight            = 1;
109     descriptor.m_PadTop              = 1;
110     descriptor.m_PadBottom           = 1;
111     descriptor.m_PoolWidth           = 1;
112     descriptor.m_PoolHeight          = 1;
113     descriptor.m_StrideX             = 1;
114     descriptor.m_StrideY             = 1;
115     descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling;
116     descriptor.m_PaddingMethod       = PaddingMethod::IgnoreValue;
117     descriptor.m_DataLayout          = DataLayout::NHWC;
118     TestPooling2dLayerVisitor visitor(descriptor);
119     Network net;
120
121     IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor);
122     layer->Accept(visitor);
123 }
124
125 BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameAndDescriptor)
126 {
127     const char* layerName = "ActivationLayer";
128     ActivationDescriptor descriptor;
129     descriptor.m_Function = ActivationFunction::Linear;
130     descriptor.m_A = 2;
131     descriptor.m_B = 2;
132     TestActivationLayerVisitor visitor(descriptor, layerName);
133     Network net;
134
135     IConnectableLayer *const layer = net.AddActivationLayer(descriptor, layerName);
136     layer->Accept(visitor);
137 }
138
139 BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameNullAndDescriptor)
140 {
141     ActivationDescriptor descriptor;
142     descriptor.m_Function = ActivationFunction::Linear;
143     descriptor.m_A = 2;
144     descriptor.m_B = 2;
145     TestActivationLayerVisitor visitor(descriptor);
146     Network net;
147
148     IConnectableLayer *const layer = net.AddActivationLayer(descriptor);
149     layer->Accept(visitor);
150 }
151
152 BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameAndDescriptor)
153 {
154     const char* layerName = "NormalizationLayer";
155     NormalizationDescriptor descriptor;
156     descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within;
157     descriptor.m_NormMethodType  = NormalizationAlgorithmMethod::LocalContrast;
158     descriptor.m_NormSize        = 1;
159     descriptor.m_Alpha           = 1;
160     descriptor.m_Beta            = 1;
161     descriptor.m_K               = 1;
162     descriptor.m_DataLayout      = DataLayout::NHWC;
163     TestNormalizationLayerVisitor visitor(descriptor, layerName);
164     Network net;
165
166     IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor, layerName);
167     layer->Accept(visitor);
168 }
169
170 BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameNullAndDescriptor)
171 {
172     NormalizationDescriptor descriptor;
173     descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within;
174     descriptor.m_NormMethodType  = NormalizationAlgorithmMethod::LocalContrast;
175     descriptor.m_NormSize        = 1;
176     descriptor.m_Alpha           = 1;
177     descriptor.m_Beta            = 1;
178     descriptor.m_K               = 1;
179     descriptor.m_DataLayout      = DataLayout::NHWC;
180     TestNormalizationLayerVisitor visitor(descriptor);
181     Network net;
182
183     IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor);
184     layer->Accept(visitor);
185 }
186
187 BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameAndDescriptor)
188 {
189     const char* layerName = "SoftmaxLayer";
190     SoftmaxDescriptor descriptor;
191     descriptor.m_Beta = 2;
192     TestSoftmaxLayerVisitor visitor(descriptor, layerName);
193     Network net;
194
195     IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor, layerName);
196     layer->Accept(visitor);
197 }
198
199 BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameNullAndDescriptor)
200 {
201     SoftmaxDescriptor descriptor;
202     descriptor.m_Beta = 2;
203     TestSoftmaxLayerVisitor visitor(descriptor);
204     Network net;
205
206     IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor);
207     layer->Accept(visitor);
208 }
209
210 BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameAndDescriptor)
211 {
212     const char* layerName = "SplitterLayer";
213     SplitterDescriptor descriptor(2, 2);
214     Set2dDataValues(descriptor, 1);
215     TestSplitterLayerVisitor visitor(descriptor, layerName);
216     Network net;
217
218     IConnectableLayer *const layer = net.AddSplitterLayer(descriptor, layerName);
219     layer->Accept(visitor);
220 }
221
222 BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameNullAndDescriptor)
223 {
224     SplitterDescriptor descriptor(2, 2);
225     Set2dDataValues(descriptor, 1);
226     TestSplitterLayerVisitor visitor(descriptor);
227     Network net;
228
229     IConnectableLayer *const layer = net.AddSplitterLayer(descriptor);
230     layer->Accept(visitor);
231 }
232
233 BOOST_AUTO_TEST_CASE(CheckConcatLayerVisitorNameAndDescriptor)
234 {
235     const char* layerName = "ConcatLayer";
236     OriginsDescriptor descriptor(2, 2);
237     Set2dDataValues(descriptor, 1);
238     descriptor.SetConcatAxis(1);
239     TestConcatLayerVisitor visitor(descriptor, layerName);
240     Network net;
241
242     IConnectableLayer *const layer = net.AddConcatLayer(descriptor, layerName);
243     layer->Accept(visitor);
244 }
245
246 BOOST_AUTO_TEST_CASE(CheckConcatLayerVisitorNameNullAndDescriptor)
247 {
248     OriginsDescriptor descriptor(2, 2);
249     Set2dDataValues(descriptor, 1);
250     descriptor.SetConcatAxis(1);
251     TestConcatLayerVisitor visitor(descriptor);
252     Network net;
253
254     IConnectableLayer *const layer = net.AddConcatLayer(descriptor);
255     layer->Accept(visitor);
256 }
257
258 BOOST_AUTO_TEST_CASE(CheckResizeLayerVisitorNameAndDescriptor)
259 {
260     const char* layerName = "ResizeLayer";
261     ResizeDescriptor descriptor;
262     descriptor.m_TargetHeight = 1;
263     descriptor.m_TargetWidth  = 1;
264     descriptor.m_DataLayout   = DataLayout::NHWC;
265     TestResizeLayerVisitor visitor(descriptor, layerName);
266     Network net;
267
268     IConnectableLayer *const layer = net.AddResizeLayer(descriptor, layerName);
269     layer->Accept(visitor);
270 }
271
272 BOOST_AUTO_TEST_CASE(CheckResizeLayerVisitorNameNullAndDescriptor)
273 {
274     ResizeDescriptor descriptor;
275     descriptor.m_TargetHeight = 1;
276     descriptor.m_TargetWidth  = 1;
277     descriptor.m_DataLayout   = DataLayout::NHWC;
278     TestResizeLayerVisitor visitor(descriptor);
279     Network net;
280
281     IConnectableLayer *const layer = net.AddResizeLayer(descriptor);
282     layer->Accept(visitor);
283 }
284
285 BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameAndDescriptor)
286 {
287     const char* layerName = "L2NormalizationLayer";
288     L2NormalizationDescriptor descriptor;
289     descriptor.m_DataLayout = DataLayout::NHWC;
290     TestL2NormalizationLayerVisitor visitor(descriptor, layerName);
291     Network net;
292
293     IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor, layerName);
294     layer->Accept(visitor);
295 }
296
297 BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameNullAndDescriptor)
298 {
299     L2NormalizationDescriptor descriptor;
300     descriptor.m_DataLayout = DataLayout::NHWC;
301     TestL2NormalizationLayerVisitor visitor(descriptor);
302     Network net;
303
304     IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor);
305     layer->Accept(visitor);
306 }
307
308 BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameAndDescriptor)
309 {
310     const char* layerName = "ReshapeLayer";
311     ReshapeDescriptor descriptor({1, 2, 3, 4});
312     TestReshapeLayerVisitor visitor(descriptor, layerName);
313     Network net;
314
315     IConnectableLayer *const layer = net.AddReshapeLayer(descriptor, layerName);
316     layer->Accept(visitor);
317 }
318
319 BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameNullAndDescriptor)
320 {
321     ReshapeDescriptor descriptor({1, 2, 3, 4});
322     TestReshapeLayerVisitor visitor(descriptor);
323     Network net;
324
325     IConnectableLayer *const layer = net.AddReshapeLayer(descriptor);
326     layer->Accept(visitor);
327 }
328
329 BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameAndDescriptor)
330 {
331     const char* layerName = "SpaceToBatchNdLayer";
332     SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
333     TestSpaceToBatchNdLayerVisitor visitor(descriptor, layerName);
334     Network net;
335
336     IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor, layerName);
337     layer->Accept(visitor);
338 }
339
340 BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameNullAndDescriptor)
341 {
342     SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
343     TestSpaceToBatchNdLayerVisitor visitor(descriptor);
344     Network net;
345
346     IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor);
347     layer->Accept(visitor);
348 }
349
350
351 BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameAndDescriptor)
352 {
353     const char* layerName = "MeanLayer";
354     MeanDescriptor descriptor({1, 2}, false);
355     TestMeanLayerVisitor visitor(descriptor, layerName);
356     Network net;
357
358     IConnectableLayer *const layer = net.AddMeanLayer(descriptor, layerName);
359     layer->Accept(visitor);
360 }
361
362 BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameNullAndDescriptor)
363 {
364     MeanDescriptor descriptor({1, 2}, false);
365     TestMeanLayerVisitor visitor(descriptor);
366     Network net;
367
368     IConnectableLayer *const layer = net.AddMeanLayer(descriptor);
369     layer->Accept(visitor);
370 }
371
372 BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameAndDescriptor)
373 {
374     const char* layerName = "PadLayer";
375     PadDescriptor descriptor({{1, 2}, {3, 4}});
376     TestPadLayerVisitor visitor(descriptor, layerName);
377     Network net;
378
379     IConnectableLayer *const layer = net.AddPadLayer(descriptor, layerName);
380     layer->Accept(visitor);
381 }
382
383 BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameNullAndDescriptor)
384 {
385     PadDescriptor descriptor({{1, 2}, {3, 4}});
386     TestPadLayerVisitor visitor(descriptor);
387     Network net;
388
389     IConnectableLayer *const layer = net.AddPadLayer(descriptor);
390     layer->Accept(visitor);
391 }
392
393 BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameAndDescriptor)
394 {
395     const char* layerName = "StridedSliceLayer";
396     StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4});
397     descriptor.m_BeginMask      = 1;
398     descriptor.m_EndMask        = 1;
399     descriptor.m_ShrinkAxisMask = 1;
400     descriptor.m_EllipsisMask   = 1;
401     descriptor.m_NewAxisMask    = 1;
402     descriptor.m_DataLayout     = DataLayout::NHWC;
403     TestStridedSliceLayerVisitor visitor(descriptor, layerName);
404     Network net;
405
406     IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor, layerName);
407     layer->Accept(visitor);
408 }
409
410 BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameNullAndDescriptor)
411 {
412     StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4});
413     descriptor.m_BeginMask      = 1;
414     descriptor.m_EndMask        = 1;
415     descriptor.m_ShrinkAxisMask = 1;
416     descriptor.m_EllipsisMask   = 1;
417     descriptor.m_NewAxisMask    = 1;
418     descriptor.m_DataLayout     = DataLayout::NHWC;
419     TestStridedSliceLayerVisitor visitor(descriptor);
420     Network net;
421
422     IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor);
423     layer->Accept(visitor);
424 }
425
426 BOOST_AUTO_TEST_SUITE_END()
427
428 } //namespace armnn