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