1 // 2 // Copyright © 2017,2019-2021,2023 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include "TestLayerVisitor.hpp" 8 9 #include <doctest/doctest.h> 10 11 namespace 12 { 13 14 #define DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(name) \ 15 class Test##name##LayerVisitor : public armnn::TestLayerVisitor \ 16 { \ 17 private: \ 18 using Descriptor = armnn::name##Descriptor; \ 19 Descriptor m_Descriptor; \ 20 \ 21 bool CheckDescriptor(const Descriptor& descriptor) \ 22 { \ 23 return descriptor == m_Descriptor; \ 24 } \ 25 \ 26 public: \ 27 explicit Test##name##LayerVisitor(const Descriptor& descriptor, \ 28 const char* layerName = nullptr) \ 29 : armnn::TestLayerVisitor(layerName) \ 30 , m_Descriptor(descriptor) {}; \ 31 \ 32 void ExecuteStrategy(const armnn::IConnectableLayer* layer, \ 33 const armnn::BaseDescriptor& descriptor, \ 34 const std::vector<armnn::ConstTensor>& constants, \ 35 const char* layerName, \ 36 const armnn::LayerBindingId id = 0) override \ 37 { \ 38 armnn::IgnoreUnused(descriptor, constants, id); \ 39 switch (layer->GetType()) \ 40 { \ 41 case armnn::LayerType::Input: break; \ 42 case armnn::LayerType::Output: break; \ 43 case armnn::LayerType::name: break; \ 44 { \ 45 CheckLayerPointer(layer); \ 46 CheckDescriptor(static_cast<const Descriptor&>(descriptor)); \ 47 CheckLayerName(layerName); \ 48 break; \ 49 } \ 50 default: \ 51 { \ 52 m_DefaultStrategy.Apply(GetLayerTypeAsCString(layer->GetType())); \ 53 } \ 54 } \ 55 } \ 56 }; \ 57 58 } // anonymous namespace 59 60 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Activation) 61 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(ArgMinMax) 62 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(BatchToSpaceNd) 63 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Comparison) 64 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Concat) 65 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(DepthToSpace) 66 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(ElementwiseBinary) 67 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(ElementwiseUnary) 68 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Fill) 69 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Gather) 70 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(InstanceNormalization) 71 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(L2Normalization) 72 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(LogicalBinary) 73 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(LogSoftmax) 74 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Mean) 75 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Normalization) 76 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Pad) 77 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Permute) 78 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Pooling2d) 79 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Reduce) 80 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Reshape) 81 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Resize) 82 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Slice) 83 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Softmax) 84 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(SpaceToBatchNd) 85 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(SpaceToDepth) 86 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Splitter) 87 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Stack) 88 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(StandIn) 89 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(StridedSlice) 90 DECLARE_TEST_NAME_AND_DESCRIPTOR_LAYER_VISITOR_CLASS(Transpose) 91