aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp
diff options
context:
space:
mode:
authorFrancisMurtagh <francis.murtagh@arm.com>2019-02-04 15:41:17 +0000
committerFrancisMurtagh <francis.murtagh@arm.com>2019-02-04 15:41:17 +0000
commitf08876fce2b472a8c31f09d976fbcfeaaa94d228 (patch)
tree7793c6ab6cb6db1f1b74b937de45c410e346e0dc /src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp
parentbc67cef3e3dc9e7fe9c4331495009eda48c89527 (diff)
downloadarmnn-f08876fce2b472a8c31f09d976fbcfeaaa94d228.tar.gz
IVGCVSW-2551 Add Descriptor and name only unit tests for Visitor
* Add concrete subclasses for layers taking descriptor as argument * Add unit test cases for all layers Change-Id: Ie0135b34a5a41e5ce654b7c3186eccea392ab919 Signed-off-by: FrancisMurtagh <francis.murtagh@arm.com>
Diffstat (limited to 'src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp')
-rw-r--r--src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp428
1 files changed, 428 insertions, 0 deletions
diff --git a/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp b/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp
new file mode 100644
index 0000000000..dbadb75a09
--- /dev/null
+++ b/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp
@@ -0,0 +1,428 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#include "TestNameAndDescriptorLayerVisitor.hpp"
+#include "Network.hpp"
+
+namespace armnn
+{
+
+void Set2dDataValues(SplitterDescriptor descriptor, u_int32_t value)
+{
+ for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
+ {
+ for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
+ {
+ descriptor.SetViewOriginCoord(i, j, value);
+ descriptor.SetViewSize(i, j, value);
+ }
+ }
+}
+
+void Set2dDataValues(MergerDescriptor descriptor, u_int32_t value)
+{
+ for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i)
+ {
+ for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j)
+ {
+ descriptor.SetViewOriginCoord(i, j, value);
+ }
+ }
+}
+
+BOOST_AUTO_TEST_SUITE(TestNameAndDescriptorLayerVisitor)
+
+BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "PermuteLayer";
+ PermuteDescriptor descriptor({0, 1, 2, 3});
+ TestPermuteLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPermuteLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameNullAndDescriptor)
+{
+ PermuteDescriptor descriptor({0, 1, 2, 3});
+ TestPermuteLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPermuteLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "BatchToSpaceNdLayer";
+ BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}});
+ descriptor.m_DataLayout = armnn::DataLayout::NHWC;
+ TestBatchToSpaceNdLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameNullAndDescriptor)
+{
+ BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}});
+ descriptor.m_DataLayout = armnn::DataLayout::NHWC;
+ TestBatchToSpaceNdLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "Pooling2dLayer";
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Max;
+ descriptor.m_PadLeft = 1;
+ descriptor.m_PadRight = 1;
+ descriptor.m_PadTop = 1;
+ descriptor.m_PadBottom = 1;
+ descriptor.m_PoolWidth = 1;
+ descriptor.m_PoolHeight = 1;
+ descriptor.m_StrideX = 1;
+ descriptor.m_StrideY = 1;
+ descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling;
+ descriptor.m_PaddingMethod = PaddingMethod::IgnoreValue;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestPooling2dLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameNullAndDescriptor)
+{
+ Pooling2dDescriptor descriptor;
+ descriptor.m_PoolType = PoolingAlgorithm::Max;
+ descriptor.m_PadLeft = 1;
+ descriptor.m_PadRight = 1;
+ descriptor.m_PadTop = 1;
+ descriptor.m_PadBottom = 1;
+ descriptor.m_PoolWidth = 1;
+ descriptor.m_PoolHeight = 1;
+ descriptor.m_StrideX = 1;
+ descriptor.m_StrideY = 1;
+ descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling;
+ descriptor.m_PaddingMethod = PaddingMethod::IgnoreValue;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestPooling2dLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "ActivationLayer";
+ ActivationDescriptor descriptor;
+ descriptor.m_Function = ActivationFunction::Linear;
+ descriptor.m_A = 2;
+ descriptor.m_B = 2;
+ TestActivationLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddActivationLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameNullAndDescriptor)
+{
+ ActivationDescriptor descriptor;
+ descriptor.m_Function = ActivationFunction::Linear;
+ descriptor.m_A = 2;
+ descriptor.m_B = 2;
+ TestActivationLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddActivationLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "NormalizationLayer";
+ NormalizationDescriptor descriptor;
+ descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within;
+ descriptor.m_NormMethodType = NormalizationAlgorithmMethod::LocalContrast;
+ descriptor.m_NormSize = 1;
+ descriptor.m_Alpha = 1;
+ descriptor.m_Beta = 1;
+ descriptor.m_K = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestNormalizationLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameNullAndDescriptor)
+{
+ NormalizationDescriptor descriptor;
+ descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within;
+ descriptor.m_NormMethodType = NormalizationAlgorithmMethod::LocalContrast;
+ descriptor.m_NormSize = 1;
+ descriptor.m_Alpha = 1;
+ descriptor.m_Beta = 1;
+ descriptor.m_K = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestNormalizationLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "SoftmaxLayer";
+ SoftmaxDescriptor descriptor;
+ descriptor.m_Beta = 2;
+ TestSoftmaxLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameNullAndDescriptor)
+{
+ SoftmaxDescriptor descriptor;
+ descriptor.m_Beta = 2;
+ TestSoftmaxLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "SplitterLayer";
+ SplitterDescriptor descriptor(2, 2);
+ Set2dDataValues(descriptor, 1);
+ TestSplitterLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSplitterLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameNullAndDescriptor)
+{
+ SplitterDescriptor descriptor(2, 2);
+ Set2dDataValues(descriptor, 1);
+ TestSplitterLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSplitterLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckMergerLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "MergerLayer";
+ MergerDescriptor descriptor(2, 2);
+ Set2dDataValues(descriptor, 1);
+ descriptor.SetConcatAxis(1);
+ TestMergerLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddMergerLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckMergerLayerVisitorNameNullAndDescriptor)
+{
+ MergerDescriptor descriptor(2, 2);
+ Set2dDataValues(descriptor, 1);
+ descriptor.SetConcatAxis(1);
+ TestMergerLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddMergerLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckResizeBilinearLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "ResizeBilinearLayer";
+ ResizeBilinearDescriptor descriptor;
+ descriptor.m_TargetHeight = 1;
+ descriptor.m_TargetWidth = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestResizeBilinearLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddResizeBilinearLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckResizeBilinearLayerVisitorNameNullAndDescriptor)
+{
+ ResizeBilinearDescriptor descriptor;
+ descriptor.m_TargetHeight = 1;
+ descriptor.m_TargetWidth = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestResizeBilinearLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddResizeBilinearLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "L2NormalizationLayer";
+ L2NormalizationDescriptor descriptor;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestL2NormalizationLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameNullAndDescriptor)
+{
+ L2NormalizationDescriptor descriptor;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestL2NormalizationLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "ReshapeLayer";
+ ReshapeDescriptor descriptor({1, 2, 3, 4});
+ TestReshapeLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddReshapeLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameNullAndDescriptor)
+{
+ ReshapeDescriptor descriptor({1, 2, 3, 4});
+ TestReshapeLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddReshapeLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "SpaceToBatchNdLayer";
+ SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
+ TestSpaceToBatchNdLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameNullAndDescriptor)
+{
+ SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}});
+ TestSpaceToBatchNdLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+
+BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "MeanLayer";
+ MeanDescriptor descriptor({1, 2}, false);
+ TestMeanLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddMeanLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameNullAndDescriptor)
+{
+ MeanDescriptor descriptor({1, 2}, false);
+ TestMeanLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddMeanLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "PadLayer";
+ PadDescriptor descriptor({{1, 2}, {3, 4}});
+ TestPadLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPadLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameNullAndDescriptor)
+{
+ PadDescriptor descriptor({{1, 2}, {3, 4}});
+ TestPadLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddPadLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameAndDescriptor)
+{
+ const char* layerName = "StridedSliceLayer";
+ StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4});
+ descriptor.m_BeginMask = 1;
+ descriptor.m_EndMask = 1;
+ descriptor.m_ShrinkAxisMask = 1;
+ descriptor.m_EllipsisMask = 1;
+ descriptor.m_NewAxisMask = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestStridedSliceLayerVisitor visitor(descriptor, layerName);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor, layerName);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameNullAndDescriptor)
+{
+ StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4});
+ descriptor.m_BeginMask = 1;
+ descriptor.m_EndMask = 1;
+ descriptor.m_ShrinkAxisMask = 1;
+ descriptor.m_EllipsisMask = 1;
+ descriptor.m_NewAxisMask = 1;
+ descriptor.m_DataLayout = DataLayout::NHWC;
+ TestStridedSliceLayerVisitor visitor(descriptor);
+ Network net;
+
+ IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor);
+ layer->Accept(visitor);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} //namespace armnn \ No newline at end of file