/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_HARDWARE_NEURALNETWORKS_V1_2_GENERATED_TEST_HARNESS_H #define ANDROID_HARDWARE_NEURALNETWORKS_V1_2_GENERATED_TEST_HARNESS_H #include #include #include #include #include #include "1.0/Utils.h" #include "TestHarness.h" #include "VtsHalNeuralnetworks.h" namespace android::hardware::neuralnetworks::V1_2::vts::functional { using NamedModel = Named; using GeneratedTestParam = std::tuple; class GeneratedTestBase : public testing::TestWithParam { protected: void SetUp() override; const sp kDevice = getData(std::get(GetParam())); const test_helper::TestModel& kTestModel = *getData(std::get(GetParam())); }; using FilterFn = std::function; std::vector getNamedModels(const FilterFn& filter); using FilterNameFn = std::function; std::vector getNamedModels(const FilterNameFn& filter); std::string printGeneratedTest(const testing::TestParamInfo& info); #define INSTANTIATE_GENERATED_TEST(TestSuite, filter) \ GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TestSuite); \ INSTANTIATE_TEST_SUITE_P(TestGenerated, TestSuite, \ testing::Combine(testing::ValuesIn(getNamedDevices()), \ testing::ValuesIn(getNamedModels(filter))), \ printGeneratedTest) // Tag for the validation tests, instantiated in VtsHalNeuralnetworks.cpp. // TODO: Clean up the hierarchy for ValidationTest. class ValidationTest : public GeneratedTestBase {}; Model createModel(const test_helper::TestModel& testModel); void PrepareModel(const sp& device, const Model& model, sp* preparedModel); void EvaluatePreparedModel(const sp& preparedModel, const test_helper::TestModel& testModel, bool testDynamicOutputShape); } // namespace android::hardware::neuralnetworks::V1_2::vts::functional #endif // ANDROID_HARDWARE_NEURALNETWORKS_V1_2_GENERATED_TEST_HARNESS_H