1a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang/* 2a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * Copyright (C) 2018 The Android Open Source Project 3a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * 4a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * you may not use this file except in compliance with the License. 6a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * You may obtain a copy of the License at 7a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * 8a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * http://www.apache.org/licenses/LICENSE-2.0 9a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * 10a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * Unless required by applicable law or agreed to in writing, software 11a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * distributed under the License is distributed on an "AS IS" BASIS, 12a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * See the License for the specific language governing permissions and 14a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang * limitations under the License. 15a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang */ 16a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 17a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang#define LOG_TAG "neuralnetworks_hidl_hal_test" 18a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 19f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler#include "VtsHalNeuralnetworks.h" 20a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 21a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace android { 22a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace hardware { 23a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace neuralnetworks { 24a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace V1_1 { 25a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace vts { 26a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangnamespace functional { 27a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 28a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang// A class for test environment setup 29a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao WangNeuralnetworksHidlEnvironment::NeuralnetworksHidlEnvironment() {} 30a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 31a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao WangNeuralnetworksHidlEnvironment::~NeuralnetworksHidlEnvironment() {} 32a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 33a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao WangNeuralnetworksHidlEnvironment* NeuralnetworksHidlEnvironment::getInstance() { 34a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang // This has to return a "new" object because it is freed inside 35a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang // ::testing::AddGlobalTestEnvironment when the gtest is being torn down 36a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang static NeuralnetworksHidlEnvironment* instance = new NeuralnetworksHidlEnvironment(); 37a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang return instance; 38a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} 39a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 40a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangvoid NeuralnetworksHidlEnvironment::registerTestServices() { 41f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler registerTestService<IDevice>(); 42a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} 43a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 44a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang// The main test class for NEURALNETWORK HIDL HAL. 45f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael ButlerNeuralnetworksHidlTest::NeuralnetworksHidlTest() {} 46f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 47a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao WangNeuralnetworksHidlTest::~NeuralnetworksHidlTest() {} 48a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 49a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wangvoid NeuralnetworksHidlTest::SetUp() { 50f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler ::testing::VtsHalHidlTargetTestBase::SetUp(); 51f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler device = ::testing::VtsHalHidlTargetTestBase::getService<IDevice>( 52a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang NeuralnetworksHidlEnvironment::getInstance()); 53a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang ASSERT_NE(nullptr, device.get()); 54a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} 55a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 56f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butlervoid NeuralnetworksHidlTest::TearDown() { 57f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler device = nullptr; 58f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler ::testing::VtsHalHidlTargetTestBase::TearDown(); 59f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler} 60a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang 61a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace functional 62a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace vts 63f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 64f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler::std::ostream& operator<<(::std::ostream& os, ErrorStatus errorStatus) { 65f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler return os << toString(errorStatus); 66f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler} 67f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 68f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler::std::ostream& operator<<(::std::ostream& os, DeviceStatus deviceStatus) { 69f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler return os << toString(deviceStatus); 70f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler} 71f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 72a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace V1_1 73a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace neuralnetworks 74a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace hardware 75a2d04c828e98bdadc6dd44c6235556451e4e2a88Miao Wang} // namespace android 76f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 77f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butlerusing android::hardware::neuralnetworks::V1_1::vts::functional::NeuralnetworksHidlEnvironment; 78f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 79f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butlerint main(int argc, char** argv) { 80f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler ::testing::AddGlobalTestEnvironment(NeuralnetworksHidlEnvironment::getInstance()); 81f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler ::testing::InitGoogleTest(&argc, argv); 82f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler NeuralnetworksHidlEnvironment::getInstance()->init(&argc, argv); 83f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler 84f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler int status = RUN_ALL_TESTS(); 85f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler return status; 86f76acd0312f7d47bd2e371f027a54bca581d8f8fMichael Butler} 87