1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ANDROID_HARDWARE_NEURALNETWORKS_V1_1_GENERATED_TEST_HARNESS_H 18 #define ANDROID_HARDWARE_NEURALNETWORKS_V1_1_GENERATED_TEST_HARNESS_H 19 20 #include <android/hardware/neuralnetworks/1.1/IDevice.h> 21 #include "1.0/Utils.h" 22 #include "TestHarness.h" 23 #include "VtsHalNeuralnetworks.h" 24 25 namespace android::hardware::neuralnetworks::V1_1::vts::functional { 26 27 using NamedModel = Named<const test_helper::TestModel*>; 28 using GeneratedTestParam = std::tuple<NamedDevice, NamedModel>; 29 30 class GeneratedTestBase : public testing::TestWithParam<GeneratedTestParam> { 31 protected: 32 void SetUp() override; 33 const sp<IDevice> kDevice = getData(std::get<NamedDevice>(GetParam())); 34 const test_helper::TestModel& kTestModel = *getData(std::get<NamedModel>(GetParam())); 35 }; 36 37 using FilterFn = std::function<bool(const test_helper::TestModel&)>; 38 std::vector<NamedModel> getNamedModels(const FilterFn& filter); 39 40 using FilterNameFn = std::function<bool(const std::string&)>; 41 std::vector<NamedModel> getNamedModels(const FilterNameFn& filter); 42 43 std::string printGeneratedTest(const testing::TestParamInfo<GeneratedTestParam>& info); 44 45 #define INSTANTIATE_GENERATED_TEST(TestSuite, filter) \ 46 GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TestSuite); \ 47 INSTANTIATE_TEST_SUITE_P(TestGenerated, TestSuite, \ 48 testing::Combine(testing::ValuesIn(getNamedDevices()), \ 49 testing::ValuesIn(getNamedModels(filter))), \ 50 printGeneratedTest) 51 52 // Tag for the validation tests, instantiated in VtsHalNeuralnetworks.cpp. 53 // TODO: Clean up the hierarchy for ValidationTest. 54 class ValidationTest : public GeneratedTestBase {}; 55 56 Model createModel(const test_helper::TestModel& testModel); 57 58 } // namespace android::hardware::neuralnetworks::V1_1::vts::functional 59 60 #endif // ANDROID_HARDWARE_NEURALNETWORKS_V1_1_GENERATED_TEST_HARNESS_H 61