163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner/* 263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * Copyright (C) 2016 The Android Open Source Project 363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * 463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * Licensed under the Apache License, Version 2.0 (the "License"); 563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * you may not use this file except in compliance with the License. 663cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * You may obtain a copy of the License at 763cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * 863cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * http://www.apache.org/licenses/LICENSE-2.0 963cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * 1063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * Unless required by applicable law or agreed to in writing, software 1163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * distributed under the License is distributed on an "AS IS" BASIS, 1263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * See the License for the specific language governing permissions and 1463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner * limitations under the License. 1563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner */ 1663cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 1763cd88efba58949ffba23eed199dc8195dc45a25Craig Donner#define LOG_TAG "vr_hidl_hal_test" 183eb7df74b8eae5c902039d1b76402350715a0944Steven Moreland#include <VtsHalHidlTargetTestBase.h> 19e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang#include <VtsHalHidlTargetTestEnvBase.h> 2063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner#include <android-base/logging.h> 2163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner#include <android/hardware/vr/1.0/IVr.h> 2263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner#include <hardware/vr.h> 233eb7df74b8eae5c902039d1b76402350715a0944Steven Moreland#include <log/log.h> 2463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 2563cd88efba58949ffba23eed199dc8195dc45a25Craig Donnerusing ::android::hardware::vr::V1_0::IVr; 2663cd88efba58949ffba23eed199dc8195dc45a25Craig Donnerusing ::android::hardware::Return; 2763cd88efba58949ffba23eed199dc8195dc45a25Craig Donnerusing ::android::hardware::Void; 2863cd88efba58949ffba23eed199dc8195dc45a25Craig Donnerusing ::android::sp; 2963cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 30e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang// Test environment for Vr HIDL HAL. 31e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhangclass VrHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { 32e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang public: 33e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang // get the test environment singleton 34e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang static VrHidlEnvironment* Instance() { 35e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang static VrHidlEnvironment* instance = new VrHidlEnvironment; 36e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang return instance; 37e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang } 38e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang 39e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang virtual void registerTestServices() override { registerTestService<IVr>(); } 40e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang}; 41e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang 4263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner// The main test class for VR HIDL HAL. 43ed2bb4e8f851688c09f7639a9183b1285aa0967cYuexi Maclass VrHidlTest : public ::testing::VtsHalHidlTargetTestBase { 4463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner public: 4563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner void SetUp() override { 46e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang vr = ::testing::VtsHalHidlTargetTestBase::getService<IVr>( 47e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang VrHidlEnvironment::Instance()->getServiceName<IVr>()); 4863cd88efba58949ffba23eed199dc8195dc45a25Craig Donner ASSERT_NE(vr, nullptr); 4963cd88efba58949ffba23eed199dc8195dc45a25Craig Donner } 5063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 5163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner void TearDown() override {} 5263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 5363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner sp<IVr> vr; 5463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner}; 5563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 5663cd88efba58949ffba23eed199dc8195dc45a25Craig Donner// Sanity check that Vr::init does not crash. 5763cd88efba58949ffba23eed199dc8195dc45a25Craig DonnerTEST_F(VrHidlTest, Init) { 5863cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->init().isOk()); 5963cd88efba58949ffba23eed199dc8195dc45a25Craig Donner} 6063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 6163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner// Sanity check Vr::setVrMode is able to enable and disable VR mode. 6263cd88efba58949ffba23eed199dc8195dc45a25Craig DonnerTEST_F(VrHidlTest, SetVrMode) { 6363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->init().isOk()); 6463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->setVrMode(true).isOk()); 6563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->setVrMode(false).isOk()); 6663cd88efba58949ffba23eed199dc8195dc45a25Craig Donner} 6763cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 6863cd88efba58949ffba23eed199dc8195dc45a25Craig Donner// Sanity check that Vr::init and Vr::setVrMode can be used in any order. 6963cd88efba58949ffba23eed199dc8195dc45a25Craig DonnerTEST_F(VrHidlTest, ReInit) { 7063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->init().isOk()); 7163cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->setVrMode(true).isOk()); 7263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->init().isOk()); 7363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->setVrMode(false).isOk()); 7463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->init().isOk()); 7563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner EXPECT_TRUE(vr->setVrMode(false).isOk()); 7663cd88efba58949ffba23eed199dc8195dc45a25Craig Donner} 7763cd88efba58949ffba23eed199dc8195dc45a25Craig Donner 7863cd88efba58949ffba23eed199dc8195dc45a25Craig Donnerint main(int argc, char **argv) { 79e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang ::testing::AddGlobalTestEnvironment(VrHidlEnvironment::Instance()); 8063cd88efba58949ffba23eed199dc8195dc45a25Craig Donner ::testing::InitGoogleTest(&argc, argv); 81e8ca007d3f184992bdd12bdd8c48f78ed13900baZhuoyao Zhang VrHidlEnvironment::Instance()->init(&argc, argv); 8263cd88efba58949ffba23eed199dc8195dc45a25Craig Donner int status = RUN_ALL_TESTS(); 8363cd88efba58949ffba23eed199dc8195dc45a25Craig Donner ALOGI("Test result = %d", status); 8463cd88efba58949ffba23eed199dc8195dc45a25Craig Donner return status; 8563cd88efba58949ffba23eed199dc8195dc45a25Craig Donner} 86