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