blob: 1dd040565fa8168aeb8584bfda41909c887f7eb6 [file] [log] [blame]
Connor O'Brienc7577102016-12-20 15:19:08 -08001/*
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
Yuexi Ma178dfd52017-02-24 13:17:02 -080024#include <VtsHalHidlTargetBaseTest.h>
Connor O'Brienc7577102016-12-20 15:19:08 -080025#include <algorithm>
26
27using ::android::hardware::ir::V1_0::IConsumerIr;
28using ::android::hardware::ir::V1_0::ConsumerIrFreqRange;
29using ::android::hardware::hidl_vec;
30using ::android::hardware::Return;
31using ::android::sp;
32
33// The main test class for IR HIDL HAL.
Yuexi Ma178dfd52017-02-24 13:17:02 -080034class ConsumerIrHidlTest : public ::testing::VtsHalHidlTargetBaseTest {
Connor O'Brienc7577102016-12-20 15:19:08 -080035 public:
36 virtual void SetUp() override {
Yuexi Ma178dfd52017-02-24 13:17:02 -080037 ir = testing::VtsHalHidlTargetBaseTest::getService<IConsumerIr>();
Connor O'Brienc7577102016-12-20 15:19:08 -080038 ASSERT_NE(ir, nullptr);
39 }
40
41 virtual void TearDown() override {}
42
43 sp<IConsumerIr> ir;
44};
45
46// Test transmit() for the min and max frequency of every available range
47TEST_F(ConsumerIrHidlTest, TransmitTest) {
48 int32_t freqs;
49 bool success;
50 hidl_vec<ConsumerIrFreqRange> ranges;
51 auto cb = [&](bool s, hidl_vec<ConsumerIrFreqRange> v) {
52 ranges = v;
53 success = s;
54 };
55 Return<void> ret = ir->getCarrierFreqs(cb);
56 ASSERT_TRUE(ret.isOk());
57 ASSERT_TRUE(success);
58
59 if (ranges.size() > 0) {
60 uint32_t len = 16;
61 hidl_vec<int32_t> vec;
62 vec.resize(len);
63 std::fill(vec.begin(), vec.end(), 1);
64 for (auto range = ranges.begin(); range != ranges.end(); range++) {
65 EXPECT_TRUE(ir->transmit(range->min, vec));
66 EXPECT_TRUE(ir->transmit(range->max, vec));
67 }
68 }
69}
70
71// Test transmit() when called with invalid frequencies
72TEST_F(ConsumerIrHidlTest, BadFreqTest) {
73 uint32_t len = 16;
74 hidl_vec<int32_t> vec;
75 vec.resize(len);
76 std::fill(vec.begin(), vec.end(), 1);
77 EXPECT_FALSE(ir->transmit(-1, vec));
78 EXPECT_FALSE(ir->transmit(0, vec));
79}
80
81int main(int argc, char **argv) {
82 ::testing::InitGoogleTest(&argc, argv);
83 int status = RUN_ALL_TESTS();
84 LOG(INFO) << "Test result = " << status;
85 return status;
86}