diff --git a/neuralnetworks/1.2/vts/functional/Android.bp b/neuralnetworks/1.2/vts/functional/Android.bp index 0f3ddc4681..0cb9e16fcf 100644 --- a/neuralnetworks/1.2/vts/functional/Android.bp +++ b/neuralnetworks/1.2/vts/functional/Android.bp @@ -20,7 +20,11 @@ cc_test { defaults: ["VtsHalNeuralNetworksTargetTestDefaults"], srcs: [ "GeneratedTestsV1_0.cpp", - ] + ], + cflags: [ + "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE" + ], + test_suites: ["general-tests"], } // Tests for V1_1 models using the V1_2 HAL. @@ -30,6 +34,10 @@ cc_test { srcs: [ "GeneratedTestsV1_1.cpp", ], + cflags: [ + "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE" + ], + test_suites: ["general-tests"], } // Tests for V1_2 models. @@ -40,5 +48,8 @@ cc_test { "BasicTests.cpp", "GeneratedTests.cpp", ], + cflags: [ + "-DNN_TEST_DYNAMIC_OUTPUT_SHAPE" + ], test_suites: ["general-tests"], } diff --git a/neuralnetworks/1.2/vts/functional/GeneratedTests.cpp b/neuralnetworks/1.2/vts/functional/GeneratedTests.cpp index 9bff09cdb7..4bc891f3d1 100644 --- a/neuralnetworks/1.2/vts/functional/GeneratedTests.cpp +++ b/neuralnetworks/1.2/vts/functional/GeneratedTests.cpp @@ -33,7 +33,8 @@ namespace neuralnetworks { namespace generated_tests { using ::test_helper::MixedTypedExample; extern void Execute(const sp&, std::function, - std::function, const std::vector&); + std::function, const std::vector&, + bool testDynamicOutputShape = false); } // namespace generated_tests namespace V1_2 { diff --git a/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_0.cpp b/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_0.cpp index 56a61d4901..956926aaff 100644 --- a/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_0.cpp +++ b/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_0.cpp @@ -33,7 +33,8 @@ namespace neuralnetworks { namespace generated_tests { using ::test_helper::MixedTypedExample; extern void Execute(const sp&, std::function, - std::function, const std::vector&); + std::function, const std::vector&, + bool testDynamicOutputShape = false); } // namespace generated_tests namespace V1_2 { diff --git a/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_1.cpp b/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_1.cpp index 1c781eccf3..425690f321 100644 --- a/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_1.cpp +++ b/neuralnetworks/1.2/vts/functional/GeneratedTestsV1_1.cpp @@ -33,7 +33,8 @@ namespace neuralnetworks { namespace generated_tests { using ::test_helper::MixedTypedExample; extern void Execute(const sp&, std::function, - std::function, const std::vector&); + std::function, const std::vector&, + bool testDynamicOutputShape = false); } // namespace generated_tests namespace V1_2 { diff --git a/neuralnetworks/1.2/vts/functional/ValidateModel.cpp b/neuralnetworks/1.2/vts/functional/ValidateModel.cpp index 65c537206f..bee255613f 100644 --- a/neuralnetworks/1.2/vts/functional/ValidateModel.cpp +++ b/neuralnetworks/1.2/vts/functional/ValidateModel.cpp @@ -172,6 +172,9 @@ static uint32_t getInvalidRank(OperandType type) { static void mutateOperandRankTest(const sp& device, const Model& model) { for (size_t operand = 0; operand < model.operands.size(); ++operand) { const uint32_t invalidRank = getInvalidRank(model.operands[operand].type); + if (invalidRank == 0) { + continue; + } const std::string message = "mutateOperandRankTest: operand " + std::to_string(operand) + " has rank of " + std::to_string(invalidRank); validate(device, message, model, [operand, invalidRank](Model* model) { diff --git a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h index dedab8d996..c0c21bddf0 100644 --- a/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h +++ b/neuralnetworks/1.2/vts/functional/VtsHalNeuralnetworks.h @@ -79,6 +79,9 @@ class ValidationTest : public NeuralnetworksHidlTest { // Tag for the generated tests class GeneratedTest : public NeuralnetworksHidlTest {}; +// Tag for the dynamic output shape tests +class DynamicOutputShapeTest : public NeuralnetworksHidlTest {}; + // Utility function to get PreparedModel from callback and downcast to V1_2. sp getPreparedModel_1_2( const sp& callback);