1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. 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 9*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("OnnxParser_Addition") 10*89c4ff92SAndroid Build Coastguard Worker { 11*89c4ff92SAndroid Build Coastguard Worker struct AddMainFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 12*89c4ff92SAndroid Build Coastguard Worker { AddMainFixtureAddMainFixture13*89c4ff92SAndroid Build Coastguard Worker AddMainFixture(const std::string& dataType) 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 16*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 17*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 18*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 19*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 20*89c4ff92SAndroid Build Coastguard Worker model_version: 1 21*89c4ff92SAndroid Build Coastguard Worker graph { 22*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 23*89c4ff92SAndroid Build Coastguard Worker input { 24*89c4ff92SAndroid Build Coastguard Worker name: "Input0" 25*89c4ff92SAndroid Build Coastguard Worker type { 26*89c4ff92SAndroid Build Coastguard Worker tensor_type { 27*89c4ff92SAndroid Build Coastguard Worker elem_type: )" + dataType + R"( 28*89c4ff92SAndroid Build Coastguard Worker shape { 29*89c4ff92SAndroid Build Coastguard Worker dim { 30*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 31*89c4ff92SAndroid Build Coastguard Worker } 32*89c4ff92SAndroid Build Coastguard Worker dim { 33*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 34*89c4ff92SAndroid Build Coastguard Worker } 35*89c4ff92SAndroid Build Coastguard Worker dim { 36*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 37*89c4ff92SAndroid Build Coastguard Worker } 38*89c4ff92SAndroid Build Coastguard Worker dim { 39*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 40*89c4ff92SAndroid Build Coastguard Worker } 41*89c4ff92SAndroid Build Coastguard Worker } 42*89c4ff92SAndroid Build Coastguard Worker } 43*89c4ff92SAndroid Build Coastguard Worker } 44*89c4ff92SAndroid Build Coastguard Worker } 45*89c4ff92SAndroid Build Coastguard Worker input { 46*89c4ff92SAndroid Build Coastguard Worker name: "Input1" 47*89c4ff92SAndroid Build Coastguard Worker type { 48*89c4ff92SAndroid Build Coastguard Worker tensor_type { 49*89c4ff92SAndroid Build Coastguard Worker elem_type: )" + dataType + R"( 50*89c4ff92SAndroid Build Coastguard Worker shape { 51*89c4ff92SAndroid Build Coastguard Worker dim { 52*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 53*89c4ff92SAndroid Build Coastguard Worker } 54*89c4ff92SAndroid Build Coastguard Worker dim { 55*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 56*89c4ff92SAndroid Build Coastguard Worker } 57*89c4ff92SAndroid Build Coastguard Worker dim { 58*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 59*89c4ff92SAndroid Build Coastguard Worker } 60*89c4ff92SAndroid Build Coastguard Worker dim { 61*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 62*89c4ff92SAndroid Build Coastguard Worker } 63*89c4ff92SAndroid Build Coastguard Worker } 64*89c4ff92SAndroid Build Coastguard Worker } 65*89c4ff92SAndroid Build Coastguard Worker } 66*89c4ff92SAndroid Build Coastguard Worker } 67*89c4ff92SAndroid Build Coastguard Worker node { 68*89c4ff92SAndroid Build Coastguard Worker input: "Input0" 69*89c4ff92SAndroid Build Coastguard Worker input: "Input1" 70*89c4ff92SAndroid Build Coastguard Worker output: "Output" 71*89c4ff92SAndroid Build Coastguard Worker name: "addition" 72*89c4ff92SAndroid Build Coastguard Worker op_type: "Add" 73*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 74*89c4ff92SAndroid Build Coastguard Worker domain: "" 75*89c4ff92SAndroid Build Coastguard Worker } 76*89c4ff92SAndroid Build Coastguard Worker output { 77*89c4ff92SAndroid Build Coastguard Worker name: "Output" 78*89c4ff92SAndroid Build Coastguard Worker type { 79*89c4ff92SAndroid Build Coastguard Worker tensor_type { 80*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 81*89c4ff92SAndroid Build Coastguard Worker shape { 82*89c4ff92SAndroid Build Coastguard Worker dim { 83*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 84*89c4ff92SAndroid Build Coastguard Worker } 85*89c4ff92SAndroid Build Coastguard Worker dim { 86*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 87*89c4ff92SAndroid Build Coastguard Worker } 88*89c4ff92SAndroid Build Coastguard Worker dim { 89*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 90*89c4ff92SAndroid Build Coastguard Worker } 91*89c4ff92SAndroid Build Coastguard Worker dim { 92*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 93*89c4ff92SAndroid Build Coastguard Worker } 94*89c4ff92SAndroid Build Coastguard Worker } 95*89c4ff92SAndroid Build Coastguard Worker } 96*89c4ff92SAndroid Build Coastguard Worker } 97*89c4ff92SAndroid Build Coastguard Worker } 98*89c4ff92SAndroid Build Coastguard Worker } 99*89c4ff92SAndroid Build Coastguard Worker opset_import { 100*89c4ff92SAndroid Build Coastguard Worker version: 7 101*89c4ff92SAndroid Build Coastguard Worker })"; 102*89c4ff92SAndroid Build Coastguard Worker } 103*89c4ff92SAndroid Build Coastguard Worker }; 104*89c4ff92SAndroid Build Coastguard Worker 105*89c4ff92SAndroid Build Coastguard Worker struct AddValidFixture : AddMainFixture 106*89c4ff92SAndroid Build Coastguard Worker { AddValidFixtureAddValidFixture107*89c4ff92SAndroid Build Coastguard Worker AddValidFixture() : AddMainFixture("1") { 108*89c4ff92SAndroid Build Coastguard Worker Setup(); 109*89c4ff92SAndroid Build Coastguard Worker } 110*89c4ff92SAndroid Build Coastguard Worker }; 111*89c4ff92SAndroid Build Coastguard Worker 112*89c4ff92SAndroid Build Coastguard Worker struct AddInvalidFixture : AddMainFixture 113*89c4ff92SAndroid Build Coastguard Worker { AddInvalidFixtureAddInvalidFixture114*89c4ff92SAndroid Build Coastguard Worker AddInvalidFixture() : AddMainFixture("6") { } 115*89c4ff92SAndroid Build Coastguard Worker }; 116*89c4ff92SAndroid Build Coastguard Worker 117*89c4ff92SAndroid Build Coastguard Worker struct AddValidBroadcastFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 118*89c4ff92SAndroid Build Coastguard Worker { AddValidBroadcastFixtureAddValidBroadcastFixture119*89c4ff92SAndroid Build Coastguard Worker AddValidBroadcastFixture() { 120*89c4ff92SAndroid Build Coastguard Worker 121*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 122*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 123*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 124*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 125*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 126*89c4ff92SAndroid Build Coastguard Worker model_version: 1 127*89c4ff92SAndroid Build Coastguard Worker graph { 128*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 129*89c4ff92SAndroid Build Coastguard Worker input { 130*89c4ff92SAndroid Build Coastguard Worker name: "Input0" 131*89c4ff92SAndroid Build Coastguard Worker type { 132*89c4ff92SAndroid Build Coastguard Worker tensor_type { 133*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 134*89c4ff92SAndroid Build Coastguard Worker shape { 135*89c4ff92SAndroid Build Coastguard Worker dim { 136*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 137*89c4ff92SAndroid Build Coastguard Worker } 138*89c4ff92SAndroid Build Coastguard Worker dim { 139*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 140*89c4ff92SAndroid Build Coastguard Worker } 141*89c4ff92SAndroid Build Coastguard Worker dim { 142*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 143*89c4ff92SAndroid Build Coastguard Worker } 144*89c4ff92SAndroid Build Coastguard Worker dim { 145*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 146*89c4ff92SAndroid Build Coastguard Worker } 147*89c4ff92SAndroid Build Coastguard Worker } 148*89c4ff92SAndroid Build Coastguard Worker } 149*89c4ff92SAndroid Build Coastguard Worker } 150*89c4ff92SAndroid Build Coastguard Worker } 151*89c4ff92SAndroid Build Coastguard Worker input { 152*89c4ff92SAndroid Build Coastguard Worker name: "Input1" 153*89c4ff92SAndroid Build Coastguard Worker type { 154*89c4ff92SAndroid Build Coastguard Worker tensor_type { 155*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 156*89c4ff92SAndroid Build Coastguard Worker shape { 157*89c4ff92SAndroid Build Coastguard Worker dim { 158*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 159*89c4ff92SAndroid Build Coastguard Worker } 160*89c4ff92SAndroid Build Coastguard Worker } 161*89c4ff92SAndroid Build Coastguard Worker } 162*89c4ff92SAndroid Build Coastguard Worker } 163*89c4ff92SAndroid Build Coastguard Worker } 164*89c4ff92SAndroid Build Coastguard Worker node { 165*89c4ff92SAndroid Build Coastguard Worker input: "Input0" 166*89c4ff92SAndroid Build Coastguard Worker input: "Input1" 167*89c4ff92SAndroid Build Coastguard Worker output: "Output" 168*89c4ff92SAndroid Build Coastguard Worker name: "addition" 169*89c4ff92SAndroid Build Coastguard Worker op_type: "Add" 170*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 171*89c4ff92SAndroid Build Coastguard Worker domain: "" 172*89c4ff92SAndroid Build Coastguard Worker } 173*89c4ff92SAndroid Build Coastguard Worker output { 174*89c4ff92SAndroid Build Coastguard Worker name: "Output" 175*89c4ff92SAndroid Build Coastguard Worker type { 176*89c4ff92SAndroid Build Coastguard Worker tensor_type { 177*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 178*89c4ff92SAndroid Build Coastguard Worker shape { 179*89c4ff92SAndroid Build Coastguard Worker dim { 180*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 181*89c4ff92SAndroid Build Coastguard Worker } 182*89c4ff92SAndroid Build Coastguard Worker dim { 183*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 184*89c4ff92SAndroid Build Coastguard Worker } 185*89c4ff92SAndroid Build Coastguard Worker dim { 186*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 187*89c4ff92SAndroid Build Coastguard Worker } 188*89c4ff92SAndroid Build Coastguard Worker dim { 189*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 190*89c4ff92SAndroid Build Coastguard Worker } 191*89c4ff92SAndroid Build Coastguard Worker } 192*89c4ff92SAndroid Build Coastguard Worker } 193*89c4ff92SAndroid Build Coastguard Worker } 194*89c4ff92SAndroid Build Coastguard Worker } 195*89c4ff92SAndroid Build Coastguard Worker } 196*89c4ff92SAndroid Build Coastguard Worker opset_import { 197*89c4ff92SAndroid Build Coastguard Worker version: 7 198*89c4ff92SAndroid Build Coastguard Worker })"; 199*89c4ff92SAndroid Build Coastguard Worker Setup(); 200*89c4ff92SAndroid Build Coastguard Worker } 201*89c4ff92SAndroid Build Coastguard Worker }; 202*89c4ff92SAndroid Build Coastguard Worker 203*89c4ff92SAndroid Build Coastguard Worker struct AddInvalidBroadcastFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 204*89c4ff92SAndroid Build Coastguard Worker { AddInvalidBroadcastFixtureAddInvalidBroadcastFixture205*89c4ff92SAndroid Build Coastguard Worker AddInvalidBroadcastFixture() { 206*89c4ff92SAndroid Build Coastguard Worker 207*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 208*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 209*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 210*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 211*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 212*89c4ff92SAndroid Build Coastguard Worker model_version: 1 213*89c4ff92SAndroid Build Coastguard Worker graph { 214*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 215*89c4ff92SAndroid Build Coastguard Worker input { 216*89c4ff92SAndroid Build Coastguard Worker name: "Input0" 217*89c4ff92SAndroid Build Coastguard Worker type { 218*89c4ff92SAndroid Build Coastguard Worker tensor_type { 219*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 220*89c4ff92SAndroid Build Coastguard Worker shape { 221*89c4ff92SAndroid Build Coastguard Worker dim { 222*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 223*89c4ff92SAndroid Build Coastguard Worker } 224*89c4ff92SAndroid Build Coastguard Worker dim { 225*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 226*89c4ff92SAndroid Build Coastguard Worker } 227*89c4ff92SAndroid Build Coastguard Worker dim { 228*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 229*89c4ff92SAndroid Build Coastguard Worker } 230*89c4ff92SAndroid Build Coastguard Worker dim { 231*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 232*89c4ff92SAndroid Build Coastguard Worker } 233*89c4ff92SAndroid Build Coastguard Worker } 234*89c4ff92SAndroid Build Coastguard Worker } 235*89c4ff92SAndroid Build Coastguard Worker } 236*89c4ff92SAndroid Build Coastguard Worker } 237*89c4ff92SAndroid Build Coastguard Worker input { 238*89c4ff92SAndroid Build Coastguard Worker name: "Input1" 239*89c4ff92SAndroid Build Coastguard Worker type { 240*89c4ff92SAndroid Build Coastguard Worker tensor_type { 241*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 242*89c4ff92SAndroid Build Coastguard Worker shape { 243*89c4ff92SAndroid Build Coastguard Worker dim { 244*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 245*89c4ff92SAndroid Build Coastguard Worker } 246*89c4ff92SAndroid Build Coastguard Worker } 247*89c4ff92SAndroid Build Coastguard Worker } 248*89c4ff92SAndroid Build Coastguard Worker } 249*89c4ff92SAndroid Build Coastguard Worker } 250*89c4ff92SAndroid Build Coastguard Worker node { 251*89c4ff92SAndroid Build Coastguard Worker input: "Input0" 252*89c4ff92SAndroid Build Coastguard Worker input: "Input1" 253*89c4ff92SAndroid Build Coastguard Worker output: "Output" 254*89c4ff92SAndroid Build Coastguard Worker name: "addition" 255*89c4ff92SAndroid Build Coastguard Worker op_type: "Add" 256*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 257*89c4ff92SAndroid Build Coastguard Worker domain: "" 258*89c4ff92SAndroid Build Coastguard Worker } 259*89c4ff92SAndroid Build Coastguard Worker output { 260*89c4ff92SAndroid Build Coastguard Worker name: "Output" 261*89c4ff92SAndroid Build Coastguard Worker type { 262*89c4ff92SAndroid Build Coastguard Worker tensor_type { 263*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 264*89c4ff92SAndroid Build Coastguard Worker shape { 265*89c4ff92SAndroid Build Coastguard Worker dim { 266*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 267*89c4ff92SAndroid Build Coastguard Worker } 268*89c4ff92SAndroid Build Coastguard Worker dim { 269*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 270*89c4ff92SAndroid Build Coastguard Worker } 271*89c4ff92SAndroid Build Coastguard Worker dim { 272*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 273*89c4ff92SAndroid Build Coastguard Worker } 274*89c4ff92SAndroid Build Coastguard Worker dim { 275*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 276*89c4ff92SAndroid Build Coastguard Worker } 277*89c4ff92SAndroid Build Coastguard Worker } 278*89c4ff92SAndroid Build Coastguard Worker } 279*89c4ff92SAndroid Build Coastguard Worker } 280*89c4ff92SAndroid Build Coastguard Worker } 281*89c4ff92SAndroid Build Coastguard Worker } 282*89c4ff92SAndroid Build Coastguard Worker opset_import { 283*89c4ff92SAndroid Build Coastguard Worker version: 7 284*89c4ff92SAndroid Build Coastguard Worker })"; 285*89c4ff92SAndroid Build Coastguard Worker } 286*89c4ff92SAndroid Build Coastguard Worker }; 287*89c4ff92SAndroid Build Coastguard Worker 288*89c4ff92SAndroid Build Coastguard Worker struct AddScalarFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 289*89c4ff92SAndroid Build Coastguard Worker { AddScalarFixtureAddScalarFixture290*89c4ff92SAndroid Build Coastguard Worker AddScalarFixture(const std::string& dataType) 291*89c4ff92SAndroid Build Coastguard Worker { 292*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 293*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 294*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 295*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 296*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 297*89c4ff92SAndroid Build Coastguard Worker model_version: 1 298*89c4ff92SAndroid Build Coastguard Worker graph { 299*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 300*89c4ff92SAndroid Build Coastguard Worker input { 301*89c4ff92SAndroid Build Coastguard Worker name: "Input0" 302*89c4ff92SAndroid Build Coastguard Worker type { 303*89c4ff92SAndroid Build Coastguard Worker tensor_type { 304*89c4ff92SAndroid Build Coastguard Worker elem_type: )" + dataType + R"( 305*89c4ff92SAndroid Build Coastguard Worker shape { 306*89c4ff92SAndroid Build Coastguard Worker dim { 307*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 308*89c4ff92SAndroid Build Coastguard Worker } 309*89c4ff92SAndroid Build Coastguard Worker dim { 310*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 311*89c4ff92SAndroid Build Coastguard Worker } 312*89c4ff92SAndroid Build Coastguard Worker dim { 313*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 314*89c4ff92SAndroid Build Coastguard Worker } 315*89c4ff92SAndroid Build Coastguard Worker dim { 316*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 317*89c4ff92SAndroid Build Coastguard Worker } 318*89c4ff92SAndroid Build Coastguard Worker } 319*89c4ff92SAndroid Build Coastguard Worker } 320*89c4ff92SAndroid Build Coastguard Worker } 321*89c4ff92SAndroid Build Coastguard Worker } 322*89c4ff92SAndroid Build Coastguard Worker input { 323*89c4ff92SAndroid Build Coastguard Worker name: "Input1" 324*89c4ff92SAndroid Build Coastguard Worker type { 325*89c4ff92SAndroid Build Coastguard Worker tensor_type { 326*89c4ff92SAndroid Build Coastguard Worker elem_type: )" + dataType + R"( 327*89c4ff92SAndroid Build Coastguard Worker shape { 328*89c4ff92SAndroid Build Coastguard Worker dim { 329*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 330*89c4ff92SAndroid Build Coastguard Worker } 331*89c4ff92SAndroid Build Coastguard Worker } 332*89c4ff92SAndroid Build Coastguard Worker } 333*89c4ff92SAndroid Build Coastguard Worker } 334*89c4ff92SAndroid Build Coastguard Worker } 335*89c4ff92SAndroid Build Coastguard Worker node { 336*89c4ff92SAndroid Build Coastguard Worker input: "Input0" 337*89c4ff92SAndroid Build Coastguard Worker input: "Input1" 338*89c4ff92SAndroid Build Coastguard Worker output: "Output" 339*89c4ff92SAndroid Build Coastguard Worker name: "addition" 340*89c4ff92SAndroid Build Coastguard Worker op_type: "Add" 341*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 342*89c4ff92SAndroid Build Coastguard Worker domain: "" 343*89c4ff92SAndroid Build Coastguard Worker } 344*89c4ff92SAndroid Build Coastguard Worker output { 345*89c4ff92SAndroid Build Coastguard Worker name: "Output" 346*89c4ff92SAndroid Build Coastguard Worker type { 347*89c4ff92SAndroid Build Coastguard Worker tensor_type { 348*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 349*89c4ff92SAndroid Build Coastguard Worker shape { 350*89c4ff92SAndroid Build Coastguard Worker dim { 351*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 352*89c4ff92SAndroid Build Coastguard Worker } 353*89c4ff92SAndroid Build Coastguard Worker dim { 354*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 355*89c4ff92SAndroid Build Coastguard Worker } 356*89c4ff92SAndroid Build Coastguard Worker dim { 357*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 358*89c4ff92SAndroid Build Coastguard Worker } 359*89c4ff92SAndroid Build Coastguard Worker dim { 360*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 361*89c4ff92SAndroid Build Coastguard Worker } 362*89c4ff92SAndroid Build Coastguard Worker } 363*89c4ff92SAndroid Build Coastguard Worker } 364*89c4ff92SAndroid Build Coastguard Worker } 365*89c4ff92SAndroid Build Coastguard Worker } 366*89c4ff92SAndroid Build Coastguard Worker } 367*89c4ff92SAndroid Build Coastguard Worker opset_import { 368*89c4ff92SAndroid Build Coastguard Worker version: 7 369*89c4ff92SAndroid Build Coastguard Worker })"; 370*89c4ff92SAndroid Build Coastguard Worker } 371*89c4ff92SAndroid Build Coastguard Worker }; 372*89c4ff92SAndroid Build Coastguard Worker 373*89c4ff92SAndroid Build Coastguard Worker struct AddValidScalarFixture : AddScalarFixture 374*89c4ff92SAndroid Build Coastguard Worker { AddValidScalarFixtureAddValidScalarFixture375*89c4ff92SAndroid Build Coastguard Worker AddValidScalarFixture() : AddScalarFixture("1") { 376*89c4ff92SAndroid Build Coastguard Worker Setup(); 377*89c4ff92SAndroid Build Coastguard Worker } 378*89c4ff92SAndroid Build Coastguard Worker }; 379*89c4ff92SAndroid Build Coastguard Worker 380*89c4ff92SAndroid Build Coastguard Worker struct AddInvalidScalarFixture : AddScalarFixture 381*89c4ff92SAndroid Build Coastguard Worker { AddInvalidScalarFixtureAddInvalidScalarFixture382*89c4ff92SAndroid Build Coastguard Worker AddInvalidScalarFixture() : AddScalarFixture("6") { } 383*89c4ff92SAndroid Build Coastguard Worker }; 384*89c4ff92SAndroid Build Coastguard Worker 385*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddValidFixture, "ValidAddTest") 386*89c4ff92SAndroid Build Coastguard Worker { 387*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input0", {1.0f, 2.0f, -3.0f, -4.0f}}, 388*89c4ff92SAndroid Build Coastguard Worker {"Input1", {1.0f, 2.0f, 3.0, 4.0f}}}, {{"Output", {2.0, 4.0, 0, 0.0}}}); 389*89c4ff92SAndroid Build Coastguard Worker } 390*89c4ff92SAndroid Build Coastguard Worker 391*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddInvalidFixture, "IncorrectDataTypeAdd") 392*89c4ff92SAndroid Build Coastguard Worker { 393*89c4ff92SAndroid Build Coastguard Worker CHECK_THROWS_AS(Setup(), armnn::ParseException); 394*89c4ff92SAndroid Build Coastguard Worker } 395*89c4ff92SAndroid Build Coastguard Worker 396*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddInvalidBroadcastFixture, "InvalidBroadcastAdd") 397*89c4ff92SAndroid Build Coastguard Worker { 398*89c4ff92SAndroid Build Coastguard Worker CHECK_THROWS_AS(Setup(), armnn::ParseException); 399*89c4ff92SAndroid Build Coastguard Worker } 400*89c4ff92SAndroid Build Coastguard Worker 401*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddValidBroadcastFixture, "ValidBroadcastAdd") 402*89c4ff92SAndroid Build Coastguard Worker { 403*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input0", {1.0f, 2.0f, -3.0f, -4.0f}}, 404*89c4ff92SAndroid Build Coastguard Worker {"Input1", {1.0f, 2.0f, 3.0, 4.0f}}}, {{"Output", {2.0, 4.0, 0, 0.0}}}); 405*89c4ff92SAndroid Build Coastguard Worker } 406*89c4ff92SAndroid Build Coastguard Worker 407*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddValidScalarFixture, "ValidAddScalarTest") 408*89c4ff92SAndroid Build Coastguard Worker { 409*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input0", {1.0f, 2.0f, -3.0f, -4.0f}}, 410*89c4ff92SAndroid Build Coastguard Worker {"Input1", {-8.0f}}}, {{"Output", {-7.0, -6.0, -11.0, -12.0}}}); 411*89c4ff92SAndroid Build Coastguard Worker } 412*89c4ff92SAndroid Build Coastguard Worker 413*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(AddInvalidScalarFixture, "IncorrectDataTypeAddScalar") 414*89c4ff92SAndroid Build Coastguard Worker { 415*89c4ff92SAndroid Build Coastguard Worker CHECK_THROWS_AS(Setup(), armnn::ParseException); 416*89c4ff92SAndroid Build Coastguard Worker } 417*89c4ff92SAndroid Build Coastguard Worker 418*89c4ff92SAndroid Build Coastguard Worker }