diff options
Diffstat (limited to 'ir/aidl/vts/VtsHalIrTargetTest.cpp')
-rw-r--r-- | ir/aidl/vts/VtsHalIrTargetTest.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/ir/aidl/vts/VtsHalIrTargetTest.cpp b/ir/aidl/vts/VtsHalIrTargetTest.cpp new file mode 100644 index 0000000000..3527625ae6 --- /dev/null +++ b/ir/aidl/vts/VtsHalIrTargetTest.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "ir_aidl_hal_test" + +#include <aidl/Gtest.h> +#include <aidl/Vintf.h> +#include <aidl/android/hardware/ir/IConsumerIr.h> +#include <android-base/logging.h> +#include <android/binder_auto_utils.h> +#include <android/binder_manager.h> +#include <gtest/gtest.h> +#include <algorithm> +#include <vector> + +using ::aidl::android::hardware::ir::ConsumerIrFreqRange; +using ::aidl::android::hardware::ir::IConsumerIr; +using ::ndk::SpAIBinder; + +class ConsumerIrTest : public ::testing::TestWithParam<std::string> { + public: + virtual void SetUp() override { + mIr = IConsumerIr::fromBinder( + SpAIBinder(AServiceManager_waitForService(GetParam().c_str()))); + ASSERT_NE(mIr, nullptr); + } + + std::shared_ptr<IConsumerIr> mIr; +}; + +// Test transmit() for the min and max frequency of every available range +TEST_P(ConsumerIrTest, TransmitTest) { + std::vector<ConsumerIrFreqRange> ranges; + const auto& ret = mIr->getCarrierFreqs(&ranges); + ASSERT_TRUE(ret.isOk()); + + if (ranges.size() > 0) { + uint32_t len = 16; + std::vector<int32_t> vec; + vec.resize(len); + std::fill(vec.begin(), vec.end(), 1000); + for (auto range = ranges.begin(); range != ranges.end(); range++) { + EXPECT_TRUE(mIr->transmit(range->minHz, vec).isOk()); + EXPECT_TRUE(mIr->transmit(range->maxHz, vec).isOk()); + } + } +} + +// Test transmit() when called with invalid frequencies +TEST_P(ConsumerIrTest, BadFreqTest) { + uint32_t len = 16; + std::vector<int32_t> vec; + vec.resize(len); + std::fill(vec.begin(), vec.end(), 1); + const auto& res = mIr->transmit(-1, vec); + EXPECT_FALSE(res.isOk()); + EXPECT_EQ(res.getExceptionCode(), EX_UNSUPPORTED_OPERATION); +} + +GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ConsumerIrTest); +INSTANTIATE_TEST_SUITE_P( + PerInstance, ConsumerIrTest, + testing::ValuesIn(android::getAidlHalInstanceNames(IConsumerIr::descriptor)), + ::android::PrintInstanceNameToString); |