1 // 2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "ParserFlatbuffersSerializeFixture.hpp" 7 #include <armnnDeserializer/IDeserializer.hpp> 8 9 #include <string> 10 11 TEST_SUITE("Deserializer_Rank") 12 { 13 struct RankFixture : public ParserFlatbuffersSerializeFixture 14 { RankFixtureRankFixture15 explicit RankFixture(const std::string &inputShape, 16 const std::string &dataType) 17 { 18 m_JsonString = R"( 19 { 20 inputIds: [0], 21 outputIds: [2], 22 layers: [ 23 { 24 layer_type: "InputLayer", 25 layer: { 26 base: { 27 base: { 28 layerName: "", 29 layerType: "Input", 30 inputSlots: [ 31 32 ], 33 outputSlots: [ 34 { 35 tensorInfo: { 36 dimensions: )" + inputShape + R"(, 37 dataType: )" + dataType + R"(, 38 quantizationScale: 0.0 39 } 40 } 41 ] 42 } 43 } 44 } 45 }, 46 { 47 layer_type: "RankLayer", 48 layer: { 49 base: { 50 index: 1, 51 layerName: "rank", 52 layerType: "Rank", 53 inputSlots: [ 54 { 55 connection: { 56 sourceLayerIndex: 0, 57 outputSlotIndex: 0 58 } 59 } 60 ], 61 outputSlots: [ 62 { 63 tensorInfo: { 64 dimensions: [ 1 ], 65 dataType: "Signed32", 66 quantizationScale: 0.0, 67 dimensionality: 2 68 } 69 } 70 ] 71 } 72 } 73 }, 74 { 75 layer_type: "OutputLayer", 76 layer: { 77 base: { 78 base: { 79 index: 2, 80 layerName: "", 81 layerType: "Output", 82 inputSlots: [ 83 { 84 connection: { 85 sourceLayerIndex: 1, 86 outputSlotIndex: 0 87 } 88 } 89 ], 90 outputSlots: [] 91 } 92 } 93 } 94 } 95 ], 96 } 97 )"; 98 Setup(); 99 } 100 }; 101 102 struct SimpleRankDimSize1Fixture : RankFixture 103 { SimpleRankDimSize1FixtureSimpleRankDimSize1Fixture104 SimpleRankDimSize1Fixture() : RankFixture("[ 8 ]", "QSymmS16") {} 105 }; 106 107 struct SimpleRankDimSize2Fixture : RankFixture 108 { SimpleRankDimSize2FixtureSimpleRankDimSize2Fixture109 SimpleRankDimSize2Fixture() : RankFixture("[ 3, 3 ]", "QSymmS8") {} 110 }; 111 112 struct SimpleRankDimSize3Fixture : RankFixture 113 { SimpleRankDimSize3FixtureSimpleRankDimSize3Fixture114 SimpleRankDimSize3Fixture() : RankFixture("[ 2, 2, 1 ]", "Signed32") {} 115 }; 116 117 struct SimpleRankDimSize4Fixture : RankFixture 118 { SimpleRankDimSize4FixtureSimpleRankDimSize4Fixture119 SimpleRankDimSize4Fixture() : RankFixture("[ 2, 2, 1, 1 ]", "Float32") {} 120 }; 121 122 TEST_CASE_FIXTURE(SimpleRankDimSize1Fixture, "RankDimSize1Float16") 123 { 124 RunTest<1, armnn::DataType::QSymmS16, armnn::DataType::Signed32>( 0, 125 { 1, 2, 3, 4, 5, 6, 7, 8 }, 126 { 1 }); 127 } 128 129 TEST_CASE_FIXTURE(SimpleRankDimSize2Fixture, "RankDimSize2QAsymmU8") 130 { 131 RunTest<1, armnn::DataType::QSymmS8, armnn::DataType::Signed32>( 0, 132 { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, 133 { 2 }); 134 } 135 136 TEST_CASE_FIXTURE(SimpleRankDimSize3Fixture, "RankDimSize3Signed32") 137 { 138 RunTest<1, armnn::DataType::Signed32, armnn::DataType::Signed32>( 0, 139 { 111, 85, 226, 3 }, 140 { 3 }); 141 } 142 143 TEST_CASE_FIXTURE(SimpleRankDimSize4Fixture, "RankDimSize4Float32") 144 { 145 RunTest<1, armnn::DataType::Float32, armnn::DataType::Signed32>( 0, 146 { 111, 85, 226, 3 }, 147 { 4 }); 148 } 149 150 }