xref: /aosp_15_r20/external/armnn/src/armnnOnnxParser/test/Concat.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include "armnnOnnxParser/IOnnxParser.hpp"
7*89c4ff92SAndroid Build Coastguard Worker #include "ParserPrototxtFixture.hpp"
8*89c4ff92SAndroid Build Coastguard Worker #include "OnnxParserTestUtils.hpp"
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("OnnxParser_Concat")
11*89c4ff92SAndroid Build Coastguard Worker {
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker struct ConcatFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser>
14*89c4ff92SAndroid Build Coastguard Worker {
ConcatFixtureConcatFixture15*89c4ff92SAndroid Build Coastguard Worker     ConcatFixture(const std::string& axis,
16*89c4ff92SAndroid Build Coastguard Worker                   const std::vector<int>& input0Shape,
17*89c4ff92SAndroid Build Coastguard Worker                   const std::vector<int>& input1Shape,
18*89c4ff92SAndroid Build Coastguard Worker                   const std::vector<int>& outputShape)
19*89c4ff92SAndroid Build Coastguard Worker     {
20*89c4ff92SAndroid Build Coastguard Worker         m_Prototext = R"(
21*89c4ff92SAndroid Build Coastguard Worker                     ir_version: 8
22*89c4ff92SAndroid Build Coastguard Worker                     producer_name: "onnx-example"
23*89c4ff92SAndroid Build Coastguard Worker                     graph {
24*89c4ff92SAndroid Build Coastguard Worker                       node {
25*89c4ff92SAndroid Build Coastguard Worker                         input: "Input0"
26*89c4ff92SAndroid Build Coastguard Worker                         input: "Input1"
27*89c4ff92SAndroid Build Coastguard Worker                         output: "Output"
28*89c4ff92SAndroid Build Coastguard Worker                         op_type: "Concat"
29*89c4ff92SAndroid Build Coastguard Worker                         attribute {
30*89c4ff92SAndroid Build Coastguard Worker                           name: "axis"
31*89c4ff92SAndroid Build Coastguard Worker                           i: )" + axis + R"(
32*89c4ff92SAndroid Build Coastguard Worker                           type: INT
33*89c4ff92SAndroid Build Coastguard Worker                         }
34*89c4ff92SAndroid Build Coastguard Worker                       }
35*89c4ff92SAndroid Build Coastguard Worker                       name: "concat-model"
36*89c4ff92SAndroid Build Coastguard Worker                       input {
37*89c4ff92SAndroid Build Coastguard Worker                         name: "Input0"
38*89c4ff92SAndroid Build Coastguard Worker                         type {
39*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
40*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
41*89c4ff92SAndroid Build Coastguard Worker                             shape {
42*89c4ff92SAndroid Build Coastguard Worker                               )" + armnnUtils::ConstructTensorShapeString(input0Shape) + R"(
43*89c4ff92SAndroid Build Coastguard Worker                             }
44*89c4ff92SAndroid Build Coastguard Worker                           }
45*89c4ff92SAndroid Build Coastguard Worker                         }
46*89c4ff92SAndroid Build Coastguard Worker                       }
47*89c4ff92SAndroid Build Coastguard Worker                       input {
48*89c4ff92SAndroid Build Coastguard Worker                         name: "Input1"
49*89c4ff92SAndroid Build Coastguard Worker                         type {
50*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
51*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
52*89c4ff92SAndroid Build Coastguard Worker                             shape {
53*89c4ff92SAndroid Build Coastguard Worker                               )" + armnnUtils::ConstructTensorShapeString(input1Shape) + R"(
54*89c4ff92SAndroid Build Coastguard Worker                             }
55*89c4ff92SAndroid Build Coastguard Worker                           }
56*89c4ff92SAndroid Build Coastguard Worker                         }
57*89c4ff92SAndroid Build Coastguard Worker                       }
58*89c4ff92SAndroid Build Coastguard Worker                       output {
59*89c4ff92SAndroid Build Coastguard Worker                         name: "Output"
60*89c4ff92SAndroid Build Coastguard Worker                         type {
61*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
62*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
63*89c4ff92SAndroid Build Coastguard Worker                             shape {
64*89c4ff92SAndroid Build Coastguard Worker                               )" + armnnUtils::ConstructTensorShapeString(outputShape) + R"(
65*89c4ff92SAndroid Build Coastguard Worker                             }
66*89c4ff92SAndroid Build Coastguard Worker                           }
67*89c4ff92SAndroid Build Coastguard Worker                         }
68*89c4ff92SAndroid Build Coastguard Worker                       }
69*89c4ff92SAndroid Build Coastguard Worker                     })";
70*89c4ff92SAndroid Build Coastguard Worker         Setup();
71*89c4ff92SAndroid Build Coastguard Worker     }
72*89c4ff92SAndroid Build Coastguard Worker };
73*89c4ff92SAndroid Build Coastguard Worker 
74*89c4ff92SAndroid Build Coastguard Worker struct ConcatAxis0Fixture : ConcatFixture
75*89c4ff92SAndroid Build Coastguard Worker {
ConcatAxis0FixtureConcatAxis0Fixture76*89c4ff92SAndroid Build Coastguard Worker     ConcatAxis0Fixture() : ConcatFixture("0", { 1, 3, 2, 5 }, { 1, 3, 2, 5 }, { 2, 3, 2, 5 }) {}
77*89c4ff92SAndroid Build Coastguard Worker };
78*89c4ff92SAndroid Build Coastguard Worker 
79*89c4ff92SAndroid Build Coastguard Worker struct ConcatAxis1Fixture : ConcatFixture
80*89c4ff92SAndroid Build Coastguard Worker {
ConcatAxis1FixtureConcatAxis1Fixture81*89c4ff92SAndroid Build Coastguard Worker     ConcatAxis1Fixture() : ConcatFixture("1", { 2, 2, 1, 3 }, { 2, 1, 1, 3 }, { 2, 3, 1, 3 }) {}
82*89c4ff92SAndroid Build Coastguard Worker };
83*89c4ff92SAndroid Build Coastguard Worker 
84*89c4ff92SAndroid Build Coastguard Worker struct ConcatAxis2Fixture : ConcatFixture
85*89c4ff92SAndroid Build Coastguard Worker {
ConcatAxis2FixtureConcatAxis2Fixture86*89c4ff92SAndroid Build Coastguard Worker     ConcatAxis2Fixture() : ConcatFixture("2", { 2, 3, 1, 1 }, { 2, 3, 2, 1 }, { 2, 3, 3, 1 }) {}
87*89c4ff92SAndroid Build Coastguard Worker };
88*89c4ff92SAndroid Build Coastguard Worker 
89*89c4ff92SAndroid Build Coastguard Worker struct ConcatAxis3Fixture : ConcatFixture
90*89c4ff92SAndroid Build Coastguard Worker {
ConcatAxis3FixtureConcatAxis3Fixture91*89c4ff92SAndroid Build Coastguard Worker     ConcatAxis3Fixture() : ConcatFixture("3", { 1, 3, 2, 2 }, { 1, 3, 2, 2 }, { 1, 3, 2, 4 }) {}
92*89c4ff92SAndroid Build Coastguard Worker };
93*89c4ff92SAndroid Build Coastguard Worker 
94*89c4ff92SAndroid Build Coastguard Worker struct ConcatNegativeAxisFixture : ConcatFixture
95*89c4ff92SAndroid Build Coastguard Worker {
ConcatNegativeAxisFixtureConcatNegativeAxisFixture96*89c4ff92SAndroid Build Coastguard Worker     ConcatNegativeAxisFixture() : ConcatFixture("-1", { 1, 2, 5 }, { 1, 2, 3 }, { 1, 2, 8 }) {}
97*89c4ff92SAndroid Build Coastguard Worker };
98*89c4ff92SAndroid Build Coastguard Worker 
99*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatAxis0Fixture, "ConcatAxis0Test")
100*89c4ff92SAndroid Build Coastguard Worker {
101*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
102*89c4ff92SAndroid Build Coastguard Worker                                     6.0f, 7.0f, 8.0f, 9.0f, 10.0f,
103*89c4ff92SAndroid Build Coastguard Worker                                     11.0f, 12.0f, 13.0f, 14.0f, 15.0f,
104*89c4ff92SAndroid Build Coastguard Worker                                     16.0f, 17.0f, 18.0f, 19.0f, 20.0f,
105*89c4ff92SAndroid Build Coastguard Worker                                     21.0f, 22.0f, 23.0f, 24.0f, 25.0f,
106*89c4ff92SAndroid Build Coastguard Worker                                     26.0f, 27.0f, 28.0f, 29.0f, 30.0f }},
107*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
108*89c4ff92SAndroid Build Coastguard Worker                                     36.0f, 37.0f, 38.0f, 39.0f, 40.0f,
109*89c4ff92SAndroid Build Coastguard Worker                                     41.0f, 42.0f, 43.0f, 44.0f, 45.0f,
110*89c4ff92SAndroid Build Coastguard Worker                                     46.0f, 47.0f, 48.0f, 49.0f, 50.0f,
111*89c4ff92SAndroid Build Coastguard Worker                                     51.0f, 52.0f, 53.0f, 54.0f, 55.0f,
112*89c4ff92SAndroid Build Coastguard Worker                                     56.0f, 57.0f, 58.0f, 59.0f, 60.0f }}},
113*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
114*89c4ff92SAndroid Build Coastguard Worker                                     6.0f, 7.0f, 8.0f, 9.0f, 10.0f,
115*89c4ff92SAndroid Build Coastguard Worker                                     11.0f, 12.0f, 13.0f, 14.0f, 15.0f,
116*89c4ff92SAndroid Build Coastguard Worker                                     16.0f, 17.0f, 18.0f, 19.0f, 20.0f,
117*89c4ff92SAndroid Build Coastguard Worker                                     21.0f, 22.0f, 23.0f, 24.0f, 25.0f,
118*89c4ff92SAndroid Build Coastguard Worker                                     26.0f, 27.0f, 28.0f, 29.0f, 30.0f,
119*89c4ff92SAndroid Build Coastguard Worker                                     31.0f, 32.0f, 33.0f, 34.0f, 35.0f,
120*89c4ff92SAndroid Build Coastguard Worker                                     36.0f, 37.0f, 38.0f, 39.0f, 40.0f,
121*89c4ff92SAndroid Build Coastguard Worker                                     41.0f, 42.0f, 43.0f, 44.0f, 45.0f,
122*89c4ff92SAndroid Build Coastguard Worker                                     46.0f, 47.0f, 48.0f, 49.0f, 50.0f,
123*89c4ff92SAndroid Build Coastguard Worker                                     51.0f, 52.0f, 53.0f, 54.0f, 55.0f,
124*89c4ff92SAndroid Build Coastguard Worker                                     56.0f, 57.0f, 58.0f, 59.0f, 60.0f }}});
125*89c4ff92SAndroid Build Coastguard Worker }
126*89c4ff92SAndroid Build Coastguard Worker 
127*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatAxis1Fixture, "ConcatAxis1est")
128*89c4ff92SAndroid Build Coastguard Worker {
129*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f }},
130*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f }}},
131*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 2.0f, 3.0f,
132*89c4ff92SAndroid Build Coastguard Worker                                     4.0f, 5.0f, 6.0f,
133*89c4ff92SAndroid Build Coastguard Worker                                     13.0f, 14.0f, 15.0f,
134*89c4ff92SAndroid Build Coastguard Worker                                     7.0f, 8.0f, 9.0f,
135*89c4ff92SAndroid Build Coastguard Worker                                     10.0f, 11.0f, 12.0f,
136*89c4ff92SAndroid Build Coastguard Worker                                     16.0f, 17.0f, 18.0f }}});
137*89c4ff92SAndroid Build Coastguard Worker }
138*89c4ff92SAndroid Build Coastguard Worker 
139*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatAxis2Fixture, "ConcatAxis2Test")
140*89c4ff92SAndroid Build Coastguard Worker {
141*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f }},
142*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f }}},
143*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 7.0f, 8.0f,
144*89c4ff92SAndroid Build Coastguard Worker                                     2.0f, 9.0f, 10.0f,
145*89c4ff92SAndroid Build Coastguard Worker                                     3.0f, 11.0f, 12.0f,
146*89c4ff92SAndroid Build Coastguard Worker                                     4.0f, 13.0f, 14.0f,
147*89c4ff92SAndroid Build Coastguard Worker                                     5.0f, 15.0f, 16.0f,
148*89c4ff92SAndroid Build Coastguard Worker                                     6.0f, 17.0f, 18.0f }}});
149*89c4ff92SAndroid Build Coastguard Worker }
150*89c4ff92SAndroid Build Coastguard Worker 
151*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatAxis3Fixture, "ConcatAxis3Test")
152*89c4ff92SAndroid Build Coastguard Worker {
153*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
154*89c4ff92SAndroid Build Coastguard Worker                                     7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f }},
155*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
156*89c4ff92SAndroid Build Coastguard Worker                                     19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f }}},
157*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 2.0f, 13.0f, 14.0f,
158*89c4ff92SAndroid Build Coastguard Worker                                     3.0f, 4.0f, 15.0f, 16.0f,
159*89c4ff92SAndroid Build Coastguard Worker                                     5.0f, 6.0f, 17.0f, 18.0f,
160*89c4ff92SAndroid Build Coastguard Worker                                     7.0f, 8.0f, 19.0f, 20.0f,
161*89c4ff92SAndroid Build Coastguard Worker                                     9.0f, 10.0f, 21.0f, 22.0f,
162*89c4ff92SAndroid Build Coastguard Worker                                     11.0f, 12.0f, 23.0f, 24.0f }}});
163*89c4ff92SAndroid Build Coastguard Worker }
164*89c4ff92SAndroid Build Coastguard Worker 
165*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatNegativeAxisFixture, "ConcatNegativeAxisTest")
166*89c4ff92SAndroid Build Coastguard Worker {
167*89c4ff92SAndroid Build Coastguard Worker     RunTest<3, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
168*89c4ff92SAndroid Build Coastguard Worker                                     6.0f, 7.0f, 8.0f, 9.0f, 10.0f }},
169*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f }}},
170*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 11.0f, 12.0f, 13.0f,
171*89c4ff92SAndroid Build Coastguard Worker                                     6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 14.0f, 15.0f, 16.0f }}});
172*89c4ff92SAndroid Build Coastguard Worker }
173*89c4ff92SAndroid Build Coastguard Worker 
174*89c4ff92SAndroid Build Coastguard Worker struct ConcatMultipleInputsFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser>
175*89c4ff92SAndroid Build Coastguard Worker {
ConcatMultipleInputsFixtureConcatMultipleInputsFixture176*89c4ff92SAndroid Build Coastguard Worker     ConcatMultipleInputsFixture()
177*89c4ff92SAndroid Build Coastguard Worker     {
178*89c4ff92SAndroid Build Coastguard Worker         m_Prototext = R"(
179*89c4ff92SAndroid Build Coastguard Worker                     ir_version: 8
180*89c4ff92SAndroid Build Coastguard Worker                     producer_name: "onnx-example"
181*89c4ff92SAndroid Build Coastguard Worker                     graph {
182*89c4ff92SAndroid Build Coastguard Worker                       node {
183*89c4ff92SAndroid Build Coastguard Worker                         input: "Input0"
184*89c4ff92SAndroid Build Coastguard Worker                         input: "Input1"
185*89c4ff92SAndroid Build Coastguard Worker                         input: "Input2"
186*89c4ff92SAndroid Build Coastguard Worker                         output: "Output"
187*89c4ff92SAndroid Build Coastguard Worker                         op_type: "Concat"
188*89c4ff92SAndroid Build Coastguard Worker                         attribute {
189*89c4ff92SAndroid Build Coastguard Worker                           name: "axis"
190*89c4ff92SAndroid Build Coastguard Worker                           i: 1
191*89c4ff92SAndroid Build Coastguard Worker                           type: INT
192*89c4ff92SAndroid Build Coastguard Worker                         }
193*89c4ff92SAndroid Build Coastguard Worker                       }
194*89c4ff92SAndroid Build Coastguard Worker                       name: "concat-model"
195*89c4ff92SAndroid Build Coastguard Worker                       input {
196*89c4ff92SAndroid Build Coastguard Worker                         name: "Input0"
197*89c4ff92SAndroid Build Coastguard Worker                         type {
198*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
199*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
200*89c4ff92SAndroid Build Coastguard Worker                             shape {
201*89c4ff92SAndroid Build Coastguard Worker                               dim {
202*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 3
203*89c4ff92SAndroid Build Coastguard Worker                               }
204*89c4ff92SAndroid Build Coastguard Worker                               dim {
205*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 2
206*89c4ff92SAndroid Build Coastguard Worker                               }
207*89c4ff92SAndroid Build Coastguard Worker                             }
208*89c4ff92SAndroid Build Coastguard Worker                           }
209*89c4ff92SAndroid Build Coastguard Worker                         }
210*89c4ff92SAndroid Build Coastguard Worker                       }
211*89c4ff92SAndroid Build Coastguard Worker                       input {
212*89c4ff92SAndroid Build Coastguard Worker                         name: "Input1"
213*89c4ff92SAndroid Build Coastguard Worker                         type {
214*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
215*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
216*89c4ff92SAndroid Build Coastguard Worker                             shape {
217*89c4ff92SAndroid Build Coastguard Worker                               dim {
218*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 3
219*89c4ff92SAndroid Build Coastguard Worker                               }
220*89c4ff92SAndroid Build Coastguard Worker                               dim {
221*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 3
222*89c4ff92SAndroid Build Coastguard Worker                               }
223*89c4ff92SAndroid Build Coastguard Worker                             }
224*89c4ff92SAndroid Build Coastguard Worker                           }
225*89c4ff92SAndroid Build Coastguard Worker                         }
226*89c4ff92SAndroid Build Coastguard Worker                       }
227*89c4ff92SAndroid Build Coastguard Worker                       input {
228*89c4ff92SAndroid Build Coastguard Worker                         name: "Input2"
229*89c4ff92SAndroid Build Coastguard Worker                         type {
230*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
231*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
232*89c4ff92SAndroid Build Coastguard Worker                             shape {
233*89c4ff92SAndroid Build Coastguard Worker                               dim {
234*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 3
235*89c4ff92SAndroid Build Coastguard Worker                               }
236*89c4ff92SAndroid Build Coastguard Worker                               dim {
237*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 1
238*89c4ff92SAndroid Build Coastguard Worker                               }
239*89c4ff92SAndroid Build Coastguard Worker                             }
240*89c4ff92SAndroid Build Coastguard Worker                           }
241*89c4ff92SAndroid Build Coastguard Worker                         }
242*89c4ff92SAndroid Build Coastguard Worker                       }
243*89c4ff92SAndroid Build Coastguard Worker                       output {
244*89c4ff92SAndroid Build Coastguard Worker                         name: "Output"
245*89c4ff92SAndroid Build Coastguard Worker                         type {
246*89c4ff92SAndroid Build Coastguard Worker                           tensor_type {
247*89c4ff92SAndroid Build Coastguard Worker                             elem_type: 1
248*89c4ff92SAndroid Build Coastguard Worker                             shape {
249*89c4ff92SAndroid Build Coastguard Worker                               dim {
250*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 3
251*89c4ff92SAndroid Build Coastguard Worker                               }
252*89c4ff92SAndroid Build Coastguard Worker                               dim {
253*89c4ff92SAndroid Build Coastguard Worker                                 dim_value: 6
254*89c4ff92SAndroid Build Coastguard Worker                               }
255*89c4ff92SAndroid Build Coastguard Worker                             }
256*89c4ff92SAndroid Build Coastguard Worker                           }
257*89c4ff92SAndroid Build Coastguard Worker                         }
258*89c4ff92SAndroid Build Coastguard Worker                       }
259*89c4ff92SAndroid Build Coastguard Worker                     })";
260*89c4ff92SAndroid Build Coastguard Worker         Setup();
261*89c4ff92SAndroid Build Coastguard Worker     }
262*89c4ff92SAndroid Build Coastguard Worker };
263*89c4ff92SAndroid Build Coastguard Worker 
264*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ConcatMultipleInputsFixture, "ConcatMultipleInputsTest")
265*89c4ff92SAndroid Build Coastguard Worker {
266*89c4ff92SAndroid Build Coastguard Worker     RunTest<2, float>({{"Input0", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f }},
267*89c4ff92SAndroid Build Coastguard Worker                        {"Input1", { 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }},
268*89c4ff92SAndroid Build Coastguard Worker                        {"Input2", { 16.0f, 17.0f, 18.0f }}},
269*89c4ff92SAndroid Build Coastguard Worker                       {{"Output", { 1.0f, 2.0f, 7.0f, 8.0f, 9.0f, 16.0f,
270*89c4ff92SAndroid Build Coastguard Worker                                     3.0f, 4.0f, 10.0f, 11.0f, 12.0f, 17.0f,
271*89c4ff92SAndroid Build Coastguard Worker                                     5.0f, 6.0f, 13.0f, 14.0f, 15.0f, 18.0f }}});
272*89c4ff92SAndroid Build Coastguard Worker }
273*89c4ff92SAndroid Build Coastguard Worker 
274*89c4ff92SAndroid Build Coastguard Worker }
275