aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAron Virginas-Tar <Aron.Virginas-Tar@arm.com>2019-09-16 16:30:59 +0100
committerÁron Virginás-Tar <aron.virginas-tar@arm.com>2019-09-17 13:04:46 +0000
commit10e0786f15bdb60e1d632c9a368fce2737852ae4 (patch)
treee8f93e23d077fbd2bae2f8b433764772217a06f9
parent636ab40d3741e12eaad11d5b50e4b34bfbb258b5 (diff)
downloadarmnn-10e0786f15bdb60e1d632c9a368fce2737852ae4.tar.gz
IVGCVSW-3877 Reduce code duplication in TestNameOnlyLayerVisitor
* Defined macros for common class structure and near-identical test cases Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> Change-Id: I47a2ece3e1797496c196f63c7fcd71e5748295c6
-rw-r--r--src/armnn/test/TestNameOnlyLayerVisitor.cpp263
-rw-r--r--src/armnn/test/TestNameOnlyLayerVisitor.hpp201
2 files changed, 92 insertions, 372 deletions
diff --git a/src/armnn/test/TestNameOnlyLayerVisitor.cpp b/src/armnn/test/TestNameOnlyLayerVisitor.cpp
index c4c4a479eb..c738caeb1f 100644
--- a/src/armnn/test/TestNameOnlyLayerVisitor.cpp
+++ b/src/armnn/test/TestNameOnlyLayerVisitor.cpp
@@ -2,242 +2,63 @@
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
-#include <boost/test/unit_test.hpp>
-#include "TestNameOnlyLayerVisitor.hpp"
-#include "Network.hpp"
-
-namespace armnn {
-
-BOOST_AUTO_TEST_SUITE(TestNameOnlyLayerVisitor)
-
-// Addition
-BOOST_AUTO_TEST_CASE(CheckAdditionLayerVisitorName)
-{
- TestAdditionLayerVisitor visitor("AdditionLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddAdditionLayer("AdditionLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckAdditionLayerVisitorNameNullptr)
-{
- TestAdditionLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddAdditionLayer();
- layer->Accept(visitor);
-}
-
-// Division
-BOOST_AUTO_TEST_CASE(CheckDivisionLayerVisitorName)
-{
- TestDivisionLayerVisitor visitor("DivisionLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddAdditionLayer("DivisionLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckDivisionLayerVisitorNameNullptr)
-{
- TestDivisionLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddDivisionLayer();
- layer->Accept(visitor);
-}
-
-// Equal
-BOOST_AUTO_TEST_CASE(CheckEqualLayerVisitorName)
-{
- TestEqualLayerVisitor visitor("EqualLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddEqualLayer("EqualLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckEqualLayerVisitorNameNullptr)
-{
- TestEqualLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddEqualLayer();
- layer->Accept(visitor);
-}
-
-// Floor
-BOOST_AUTO_TEST_CASE(CheckFloorLayerVisitorName)
-{
- TestFloorLayerVisitor visitor("FloorLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddFloorLayer("FloorLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckFloorLayerVisitorNameNullptr)
-{
- TestFloorLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddFloorLayer();
- layer->Accept(visitor);
-}
-
-// Gather
-BOOST_AUTO_TEST_CASE(CheckGatherLayerVisitorName)
-{
- TestGatherLayerVisitor visitor("GatherLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddGatherLayer("GatherLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckGatherLayerVisitorNameNullptr)
-{
- TestGatherLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddGatherLayer();
- layer->Accept(visitor);
-}
-// Greater
-BOOST_AUTO_TEST_CASE(CheckGreaterLayerVisitorName)
-{
- TestGreaterLayerVisitor visitor("GreaterLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddGreaterLayer("GreaterLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckGreaterLayerVisitorNameNullptr)
-{
- TestGreaterLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddGreaterLayer();
- layer->Accept(visitor);
-}
-
-// Maximum
-BOOST_AUTO_TEST_CASE(CheckMaximumLayerVisitorName)
-{
- TestMaximumLayerVisitor visitor("MaximumLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddMaximumLayer("MaximumLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckMaximumLayerVisitorNameNullptr)
-{
- TestMaximumLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddMaximumLayer();
- layer->Accept(visitor);
-}
-
-// Minimum
-BOOST_AUTO_TEST_CASE(CheckMinimumLayerVisitorName)
-{
- TestMinimumLayerVisitor visitor("MinimumLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddMinimumLayer("MinimumLayer");
- layer->Accept(visitor);
-}
-
-BOOST_AUTO_TEST_CASE(CheckMinimumLayerVisitorNameNullptr)
-{
- TestMinimumLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddMinimumLayer();
- layer->Accept(visitor);
-}
-
-// Multiplication
-BOOST_AUTO_TEST_CASE(CheckMultiplicationLayerVisitorName)
-{
- TestMultiplicationLayerVisitor visitor("MultiplicationLayer");
- Network net;
+#include "TestNameOnlyLayerVisitor.hpp"
- IConnectableLayer *const layer = net.AddMultiplicationLayer("MultiplicationLayer");
- layer->Accept(visitor);
-}
+#include <Network.hpp>
-BOOST_AUTO_TEST_CASE(CheckMultiplicationLayerVisitorNameNullptr)
-{
- TestMultiplicationLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddMultiplicationLayer();
- layer->Accept(visitor);
-}
+#include <boost/test/unit_test.hpp>
-// Rsqrt
-BOOST_AUTO_TEST_CASE(CheckRsqrtLayerVisitorName)
+namespace
{
- TestRsqrtLayerVisitor visitor("RsqrtLayer");
- Network net;
-
- IConnectableLayer *const layer = net.AddRsqrtLayer("RsqrtLayer");
- layer->Accept(visitor);
-}
-BOOST_AUTO_TEST_CASE(CheckRsqrtLayerVisitorNameNullptr)
-{
- TestRsqrtLayerVisitor visitor;
- Network net;
+#define ADD_LAYER_METHOD_1_PARAM(name) net.Add##name##Layer("name##Layer")
+#define ADD_LAYER_METHOD_2_PARAM(name) net.Add##name##Layer(armnn::name##Descriptor(), "name##Layer")
- IConnectableLayer *const layer = net.AddRsqrtLayer();
- layer->Accept(visitor);
+#define TEST_CASE_CHECK_LAYER_VISITOR_NAME(name, numParams) \
+BOOST_AUTO_TEST_CASE(Check##name##LayerVisitorName) \
+{ \
+ Test##name##LayerVisitor visitor("name##Layer"); \
+ armnn::Network net; \
+ armnn::IConnectableLayer *const layer = ADD_LAYER_METHOD_##numParams##_PARAM(name); \
+ layer->Accept(visitor); \
}
-// Slice
-BOOST_AUTO_TEST_CASE(CheckSliceLayerVisitorName)
-{
- TestSliceLayerVisitor visitor("SliceLayer");
- Network net;
+#define ADD_LAYER_METHOD_NULLPTR_1_PARAM(name) net.Add##name##Layer()
+#define ADD_LAYER_METHOD_NULLPTR_2_PARAM(name) net.Add##name##Layer(armnn::name##Descriptor())
- IConnectableLayer *const layer = net.AddSliceLayer(SliceDescriptor(), "SliceLayer");
- layer->Accept(visitor);
+#define TEST_CASE_CHECK_LAYER_VISITOR_NAME_NULLPTR(name, numParams) \
+BOOST_AUTO_TEST_CASE(Check##name##LayerVisitorNameNullptr) \
+{ \
+ Test##name##LayerVisitor visitor; \
+ armnn::Network net; \
+ armnn::IConnectableLayer *const layer = ADD_LAYER_METHOD_NULLPTR_##numParams##_PARAM(name); \
+ layer->Accept(visitor); \
}
-BOOST_AUTO_TEST_CASE(CheckSliceLayerVisitorNameNullptr)
-{
- TestSliceLayerVisitor visitor;
- Network net;
+#define TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(name) \
+TEST_CASE_CHECK_LAYER_VISITOR_NAME(name, 1) \
+TEST_CASE_CHECK_LAYER_VISITOR_NAME_NULLPTR(name, 1)
- IConnectableLayer *const layer = net.AddSliceLayer(SliceDescriptor());
- layer->Accept(visitor);
-}
+#define TEST_SUITE_NAME_ONLY_LAYER_VISITOR_2_PARAM(name) \
+TEST_CASE_CHECK_LAYER_VISITOR_NAME(name, 2) \
+TEST_CASE_CHECK_LAYER_VISITOR_NAME_NULLPTR(name, 2)
-// Subtraction
-BOOST_AUTO_TEST_CASE(CheckSubtractionLayerVisitorName)
-{
- TestSubtractionLayerVisitor visitor("SubtractionLayer");
- Network net;
+} // anonymous namespace
- IConnectableLayer *const layer = net.AddSubtractionLayer("SubtractionLayer");
- layer->Accept(visitor);
-}
+BOOST_AUTO_TEST_SUITE(TestNameOnlyLayerVisitor)
-BOOST_AUTO_TEST_CASE(CheckSubtractionLayerVisitorNameNullptr)
-{
- TestSubtractionLayerVisitor visitor;
- Network net;
-
- IConnectableLayer *const layer = net.AddSubtractionLayer();
- layer->Accept(visitor);
-}
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Addition)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Division)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Equal)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Floor)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Gather)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Greater)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Maximum)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Minimum)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Multiplication)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Rsqrt)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_2_PARAM(Slice)
+TEST_SUITE_NAME_ONLY_LAYER_VISITOR_1_PARAM(Subtraction)
BOOST_AUTO_TEST_SUITE_END()
-
-} // namespace armnn
diff --git a/src/armnn/test/TestNameOnlyLayerVisitor.hpp b/src/armnn/test/TestNameOnlyLayerVisitor.hpp
index dec0d15a96..1c5ede0802 100644
--- a/src/armnn/test/TestNameOnlyLayerVisitor.hpp
+++ b/src/armnn/test/TestNameOnlyLayerVisitor.hpp
@@ -6,154 +6,53 @@
#include "TestLayerVisitor.hpp"
-namespace armnn
-{
-
-// Concrete TestLayerVisitor subclasses for layers taking Name argument with overridden VisitLayer methods
-class TestAdditionLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestAdditionLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitAdditionLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestDivisionLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestDivisionLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitDivisionLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestEqualLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestEqualLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitEqualLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestFloorLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestFloorLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitFloorLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestGatherLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestGatherLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitGatherLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestGreaterLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestGreaterLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitGreaterLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestMultiplicationLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestMultiplicationLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitMultiplicationLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestMaximumLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestMaximumLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitMaximumLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestMinimumLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestMinimumLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitMinimumLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestRsqrtLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestRsqrtLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitRsqrtLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestSliceLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestSliceLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitSliceLayer(const IConnectableLayer* layer,
- const SliceDescriptor& sliceDescriptor,
- const char* name = nullptr) override
- {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-class TestSubtractionLayerVisitor : public TestLayerVisitor
-{
-public:
- explicit TestSubtractionLayerVisitor(const char* name = nullptr) : TestLayerVisitor(name) {};
-
- void VisitSubtractionLayer(const IConnectableLayer* layer,
- const char* name = nullptr) override {
- CheckLayerPointer(layer);
- CheckLayerName(name);
- };
-};
-
-} // namespace armnn
+namespace
+{
+
+// Defines a visitor function with 1 required parameter to be used
+// with layers that do not have a descriptor
+#define VISIT_METHOD_1_PARAM(name) \
+void Visit##name##Layer(const armnn::IConnectableLayer* layer, const char* layerName = nullptr) override
+
+// Defines a visitor function with 2 required parameters to be used
+// with layers that have a descriptor
+#define VISIT_METHOD_2_PARAM(name) \
+void Visit##name##Layer(const armnn::IConnectableLayer* layer, \
+ const armnn::name##Descriptor&, \
+ const char* layerName = nullptr) override
+
+#define TEST_LAYER_VISITOR(name, numVisitorParams) \
+class Test##name##LayerVisitor : public armnn::TestLayerVisitor \
+{ \
+public: \
+ explicit Test##name##LayerVisitor(const char* layerName = nullptr) : armnn::TestLayerVisitor(layerName) {}; \
+ \
+ VISIT_METHOD_##numVisitorParams##_PARAM(name) \
+ { \
+ CheckLayerPointer(layer); \
+ CheckLayerName(layerName); \
+ } \
+};
+
+// Defines a test layer visitor class for a layer, of a given name,
+// that does not require a descriptor
+#define TEST_LAYER_VISITOR_1_PARAM(name) TEST_LAYER_VISITOR(name, 1)
+
+// Defines a test layer visitor class for a layer, of a given name,
+// that requires a descriptor
+#define TEST_LAYER_VISITOR_2_PARAM(name) TEST_LAYER_VISITOR(name, 2)
+
+} // anonymous namespace
+
+TEST_LAYER_VISITOR_1_PARAM(Addition)
+TEST_LAYER_VISITOR_1_PARAM(Division)
+TEST_LAYER_VISITOR_1_PARAM(Equal)
+TEST_LAYER_VISITOR_1_PARAM(Floor)
+TEST_LAYER_VISITOR_1_PARAM(Gather)
+TEST_LAYER_VISITOR_1_PARAM(Greater)
+TEST_LAYER_VISITOR_1_PARAM(Maximum)
+TEST_LAYER_VISITOR_1_PARAM(Minimum)
+TEST_LAYER_VISITOR_1_PARAM(Multiplication)
+TEST_LAYER_VISITOR_1_PARAM(Rsqrt)
+TEST_LAYER_VISITOR_2_PARAM(Slice)
+TEST_LAYER_VISITOR_1_PARAM(Subtraction)