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 <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. 34class ConsumerIrHidlTest : public ::testing::VtsHalHidlTargetTestBase { 35 public: 36 virtual void SetUp() override { 37 ir = ::testing::VtsHalHidlTargetTestBase::getService<IConsumerIr>(); 38 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 bool success; 49 hidl_vec<ConsumerIrFreqRange> ranges; 50 auto cb = [&](bool s, hidl_vec<ConsumerIrFreqRange> v) { 51 ranges = v; 52 success = s; 53 }; 54 Return<void> ret = ir->getCarrierFreqs(cb); 55 ASSERT_TRUE(ret.isOk()); 56 ASSERT_TRUE(success); 57 58 if (ranges.size() > 0) { 59 uint32_t len = 16; 60 hidl_vec<int32_t> vec; 61 vec.resize(len); 62 std::fill(vec.begin(), vec.end(), 1000); 63 for (auto range = ranges.begin(); range != ranges.end(); range++) { 64 EXPECT_TRUE(ir->transmit(range->min, vec)); 65 EXPECT_TRUE(ir->transmit(range->max, vec)); 66 } 67 } 68} 69 70// Test transmit() when called with invalid frequencies 71TEST_F(ConsumerIrHidlTest, BadFreqTest) { 72 uint32_t len = 16; 73 hidl_vec<int32_t> vec; 74 vec.resize(len); 75 std::fill(vec.begin(), vec.end(), 1); 76 EXPECT_FALSE(ir->transmit(-1, vec)); 77} 78 79int main(int argc, char **argv) { 80 ::testing::InitGoogleTest(&argc, argv); 81 int status = RUN_ALL_TESTS(); 82 LOG(INFO) << "Test result = " << status; 83 return status; 84} 85