2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
5 #include "TestNameAndDescriptorLayerVisitor.hpp"
11 void Set2dDataValues(SplitterDescriptor descriptor, uint32_t value)
13 for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
15 for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
17 descriptor.SetViewOriginCoord(i, j, value);
18 descriptor.SetViewSize(i, j, value);
23 void Set2dDataValues(OriginsDescriptor& descriptor, uint32_t value)
25 for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
27 for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
29 descriptor.SetViewOriginCoord(i, j, value);
34 BOOST_AUTO_TEST_SUITE(TestNameAndDescriptorLayerVisitor)
36 BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameAndDescriptor)
38 const char* layerName = "PermuteLayer";
39 PermuteDescriptor descriptor({0, 1, 2, 3});
40 TestPermuteLayerVisitor visitor(descriptor, layerName);
43 IConnectableLayer *const layer = net.AddPermuteLayer(descriptor, layerName);
44 layer->Accept(visitor);
47 BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameNullAndDescriptor)
49 PermuteDescriptor descriptor({0, 1, 2, 3});
50 TestPermuteLayerVisitor visitor(descriptor);
53 IConnectableLayer *const layer = net.AddPermuteLayer(descriptor);
54 layer->Accept(visitor);
57 BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameAndDescriptor)
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);
65 IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor, layerName);
66 layer->Accept(visitor);
69 BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameNullAndDescriptor)
71 BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}});
72 descriptor.m_DataLayout = armnn::DataLayout::NHWC;
73 TestBatchToSpaceNdLayerVisitor visitor(descriptor);
76 IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor);
77 layer->Accept(visitor);
80 BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameAndDescriptor)
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);
99 IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor, layerName);
100 layer->Accept(visitor);
103 BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameNullAndDescriptor)
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);
121 IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor);
122 layer->Accept(visitor);
125 BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameAndDescriptor)
127 const char* layerName = "ActivationLayer";
128 ActivationDescriptor descriptor;
129 descriptor.m_Function = ActivationFunction::Linear;
132 TestActivationLayerVisitor visitor(descriptor, layerName);
135 IConnectableLayer *const layer = net.AddActivationLayer(descriptor, layerName);
136 layer->Accept(visitor);
139 BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameNullAndDescriptor)
141 ActivationDescriptor descriptor;
142 descriptor.m_Function = ActivationFunction::Linear;
145 TestActivationLayerVisitor visitor(descriptor);
148 IConnectableLayer *const layer = net.AddActivationLayer(descriptor);
149 layer->Accept(visitor);
152 BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameAndDescriptor)
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;
162 descriptor.m_DataLayout = DataLayout::NHWC;
163 TestNormalizationLayerVisitor visitor(descriptor, layerName);
166 IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor, layerName);
167 layer->Accept(visitor);
170 BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameNullAndDescriptor)
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;
179 descriptor.m_DataLayout = DataLayout::NHWC;
180 TestNormalizationLayerVisitor visitor(descriptor);
183 IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor);
184 layer->Accept(visitor);
187 BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameAndDescriptor)
189 const char* layerName = "SoftmaxLayer";
190 SoftmaxDescriptor descriptor;
191 descriptor.m_Beta = 2;
192 TestSoftmaxLayerVisitor visitor(descriptor, layerName);
195 IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor, layerName);
196 layer->Accept(visitor);
199 BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameNullAndDescriptor)
201 SoftmaxDescriptor descriptor;
202 descriptor.m_Beta = 2;
203 TestSoftmaxLayerVisitor visitor(descriptor);
206 IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor);
207 layer->Accept(visitor);
210 BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameAndDescriptor)
212 const char* layerName = "SplitterLayer";
213 SplitterDescriptor descriptor(2, 2);
214 Set2dDataValues(descriptor, 1);
215 TestSplitterLayerVisitor visitor(descriptor, layerName);
218 IConnectableLayer *const layer = net.AddSplitterLayer(descriptor, layerName);
219 layer->Accept(visitor);
222 BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameNullAndDescriptor)
224 SplitterDescriptor descriptor(2, 2);
225 Set2dDataValues(descriptor, 1);
226 TestSplitterLayerVisitor visitor(descriptor);
229 IConnectableLayer *const layer = net.AddSplitterLayer(descriptor);
230 layer->Accept(visitor);
233 BOOST_AUTO_TEST_CASE(CheckConcatLayerVisitorNameAndDescriptor)
235 const char* layerName = "ConcatLayer";
236 OriginsDescriptor descriptor(2, 2);
237 Set2dDataValues(descriptor, 1);
238 descriptor.SetConcatAxis(1);
239 TestConcatLayerVisitor visitor(descriptor, layerName);
242 IConnectableLayer *const layer = net.AddConcatLayer(descriptor, layerName);
243 layer->Accept(visitor);
246 BOOST_AUTO_TEST_CASE(CheckConcatLayerVisitorNameNullAndDescriptor)
248 OriginsDescriptor descriptor(2, 2);
249 Set2dDataValues(descriptor, 1);
250 descriptor.SetConcatAxis(1);
251 TestConcatLayerVisitor visitor(descriptor);
254 IConnectableLayer *const layer = net.AddConcatLayer(descriptor);
255 layer->Accept(visitor);
258 BOOST_AUTO_TEST_CASE(CheckResizeLayerVisitorNameAndDescriptor)
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);
268 IConnectableLayer *const layer = net.AddResizeLayer(descriptor, layerName);
269 layer->Accept(visitor);
272 BOOST_AUTO_TEST_CASE(CheckResizeLayerVisitorNameNullAndDescriptor)
274 ResizeDescriptor descriptor;
275 descriptor.m_TargetHeight = 1;
276 descriptor.m_TargetWidth = 1;
277 descriptor.m_DataLayout = DataLayout::NHWC;
278 TestResizeLayerVisitor visitor(descriptor);
281 IConnectableLayer *const layer = net.AddResizeLayer(descriptor);
282 layer->Accept(visitor);
285 BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameAndDescriptor)
287 const char* layerName = "L2NormalizationLayer";
288 L2NormalizationDescriptor descriptor;
289 descriptor.m_DataLayout = DataLayout::NHWC;
290 TestL2NormalizationLayerVisitor visitor(descriptor, layerName);
293 IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor, layerName);
294 layer->Accept(visitor);
297 BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameNullAndDescriptor)
299 L2NormalizationDescriptor descriptor;
300 descriptor.m_DataLayout = DataLayout::NHWC;
301 TestL2NormalizationLayerVisitor visitor(descriptor);
304 IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor);
305 layer->Accept(visitor);
308 BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameAndDescriptor)
310 const char* layerName = "ReshapeLayer";
311 ReshapeDescriptor descriptor({1, 2, 3, 4});
312 TestReshapeLayerVisitor visitor(descriptor, layerName);
315 IConnectableLayer *const layer = net.AddReshapeLayer(descriptor, layerName);
316 layer->Accept(visitor);
319 BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameNullAndDescriptor)
321 ReshapeDescriptor descriptor({1, 2, 3, 4});
322 TestReshapeLayerVisitor visitor(descriptor);
325 IConnectableLayer *const layer = net.AddReshapeLayer(descriptor);
326 layer->Accept(visitor);
329 BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameAndDescriptor)
331 const char* layerName = "SpaceToBatchNdLayer";
332 SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
333 TestSpaceToBatchNdLayerVisitor visitor(descriptor, layerName);
336 IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor, layerName);
337 layer->Accept(visitor);
340 BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameNullAndDescriptor)
342 SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
343 TestSpaceToBatchNdLayerVisitor visitor(descriptor);
346 IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor);
347 layer->Accept(visitor);
351 BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameAndDescriptor)
353 const char* layerName = "MeanLayer";
354 MeanDescriptor descriptor({1, 2}, false);
355 TestMeanLayerVisitor visitor(descriptor, layerName);
358 IConnectableLayer *const layer = net.AddMeanLayer(descriptor, layerName);
359 layer->Accept(visitor);
362 BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameNullAndDescriptor)
364 MeanDescriptor descriptor({1, 2}, false);
365 TestMeanLayerVisitor visitor(descriptor);
368 IConnectableLayer *const layer = net.AddMeanLayer(descriptor);
369 layer->Accept(visitor);
372 BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameAndDescriptor)
374 const char* layerName = "PadLayer";
375 PadDescriptor descriptor({{1, 2}, {3, 4}});
376 TestPadLayerVisitor visitor(descriptor, layerName);
379 IConnectableLayer *const layer = net.AddPadLayer(descriptor, layerName);
380 layer->Accept(visitor);
383 BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameNullAndDescriptor)
385 PadDescriptor descriptor({{1, 2}, {3, 4}});
386 TestPadLayerVisitor visitor(descriptor);
389 IConnectableLayer *const layer = net.AddPadLayer(descriptor);
390 layer->Accept(visitor);
393 BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameAndDescriptor)
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);
406 IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor, layerName);
407 layer->Accept(visitor);
410 BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameNullAndDescriptor)
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);
422 IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor);
423 layer->Accept(visitor);
426 BOOST_AUTO_TEST_SUITE_END()