Test ITuner::setConfiguration against bad input.
Bug: b/33382424
Test: VTS
Change-Id: I9c1f31e1a55e6b45e24daaec029c43c535a2e600
diff --git a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
index 4268ddd..42af276 100644
--- a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
+++ b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp
@@ -42,6 +42,7 @@
using ::android::hardware::broadcastradio::V1_0::Result;
using ::android::hardware::broadcastradio::V1_0::Class;
using ::android::hardware::broadcastradio::V1_0::Properties;
+using ::android::hardware::broadcastradio::V1_0::Band;
using ::android::hardware::broadcastradio::V1_0::BandConfig;
using ::android::hardware::broadcastradio::V1_0::Direction;
using ::android::hardware::broadcastradio::V1_0::ProgramInfo;
@@ -373,6 +374,38 @@
}
/**
+ * Test ITuner::setConfiguration() with invalid arguments.
+ *
+ * Verifies that:
+ * - the methods returns INVALID_ARGUMENTS on invalid arguments
+ * - the method recovers and succeeds after passing correct arguments
+ */
+TEST_F(BroadcastRadioHidlTest, SetConfigurationFails) {
+ ASSERT_EQ(true, openTuner());
+
+ // Let's define a config that's bad for sure.
+ BandConfig badConfig = {};
+ badConfig.type = Band::FM;
+ badConfig.lowerLimit = 0xFFFFFFFF;
+ badConfig.upperLimit = 0;
+ badConfig.spacings = (std::vector<uint32_t>){ 0 };
+
+ // Test setConfiguration failing on bad data.
+ mCallbackCalled = false;
+ auto setResult = mTuner->setConfiguration(badConfig);
+ EXPECT_TRUE(setResult.isOk());
+ EXPECT_EQ(Result::INVALID_ARGUMENTS, setResult);
+
+ // Test setConfiguration recovering after passing good data.
+ mCallbackCalled = false;
+ setResult = mTuner->setConfiguration(mHalProperties.bands[0]);
+ EXPECT_TRUE(setResult.isOk());
+ EXPECT_EQ(Result::OK, setResult);
+ EXPECT_EQ(true, waitForCallback(kConfigCallbacktimeoutNs));
+ EXPECT_EQ(Result::OK, mResultCallbackData);
+}
+
+/**
* Test ITuner::scan
*
* Verifies that: