• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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 #define LOG_TAG "ir_hidl_hal_test"
18 
19 #include <android-base/logging.h>
20 
21 #include <android/hardware/ir/1.0/IConsumerIr.h>
22 #include <android/hardware/ir/1.0/types.h>
23 
24 #include <VtsHalHidlTargetTestBase.h>
25 #include <VtsHalHidlTargetTestEnvBase.h>
26 #include <algorithm>
27 
28 using ::android::hardware::ir::V1_0::IConsumerIr;
29 using ::android::hardware::ir::V1_0::ConsumerIrFreqRange;
30 using ::android::hardware::hidl_vec;
31 using ::android::hardware::Return;
32 using ::android::sp;
33 
34 // Test environment for Ir
35 class ConsumerIrHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase {
36  public:
37   // get the test environment singleton
Instance()38   static ConsumerIrHidlEnvironment* Instance() {
39     static ConsumerIrHidlEnvironment* instance = new ConsumerIrHidlEnvironment;
40     return instance;
41   }
42 
registerTestServices()43   virtual void registerTestServices() override { registerTestService<IConsumerIr>(); }
44  private:
ConsumerIrHidlEnvironment()45   ConsumerIrHidlEnvironment() {}
46 };
47 
48 // The main test class for IR HIDL HAL.
49 class ConsumerIrHidlTest : public ::testing::VtsHalHidlTargetTestBase {
50  public:
SetUp()51   virtual void SetUp() override {
52     ir = ::testing::VtsHalHidlTargetTestBase::getService<IConsumerIr>(
53       ConsumerIrHidlEnvironment::Instance()->getServiceName<IConsumerIr>());
54     ASSERT_NE(ir, nullptr);
55   }
56 
TearDown()57   virtual void TearDown() override {}
58 
59   sp<IConsumerIr> ir;
60 };
61 
62 // Test transmit() for the min and max frequency of every available range
TEST_F(ConsumerIrHidlTest,TransmitTest)63 TEST_F(ConsumerIrHidlTest, TransmitTest) {
64   bool success;
65   hidl_vec<ConsumerIrFreqRange> ranges;
66   auto cb = [&](bool s, hidl_vec<ConsumerIrFreqRange> v) {
67     ranges = v;
68     success = s;
69   };
70   Return<void> ret = ir->getCarrierFreqs(cb);
71   ASSERT_TRUE(ret.isOk());
72   ASSERT_TRUE(success);
73 
74   if (ranges.size() > 0) {
75     uint32_t len = 16;
76     hidl_vec<int32_t> vec;
77     vec.resize(len);
78     std::fill(vec.begin(), vec.end(), 1000);
79     for (auto range = ranges.begin(); range != ranges.end(); range++) {
80       EXPECT_TRUE(ir->transmit(range->min, vec));
81       EXPECT_TRUE(ir->transmit(range->max, vec));
82     }
83   }
84 }
85 
86 // Test transmit() when called with invalid frequencies
TEST_F(ConsumerIrHidlTest,BadFreqTest)87 TEST_F(ConsumerIrHidlTest, BadFreqTest) {
88   uint32_t len = 16;
89   hidl_vec<int32_t> vec;
90   vec.resize(len);
91   std::fill(vec.begin(), vec.end(), 1);
92   EXPECT_FALSE(ir->transmit(-1, vec));
93 }
94 
main(int argc,char ** argv)95 int main(int argc, char **argv) {
96   ::testing::AddGlobalTestEnvironment(ConsumerIrHidlEnvironment::Instance());
97   ::testing::InitGoogleTest(&argc, argv);
98   ConsumerIrHidlEnvironment::Instance()->init(&argc, argv);
99   int status = RUN_ALL_TESTS();
100   LOG(INFO) << "Test result = " << status;
101   return status;
102 }
103