diff --git a/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp b/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp index a0e927b1a0..6f8aa02892 100644 --- a/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp +++ b/vibrator/1.0/vts/functional/VtsHalVibratorV1_0TargetTest.cpp @@ -24,13 +24,16 @@ #include #include +using ::android::sp; +using ::android::hardware::hidl_enum_range; +using ::android::hardware::Return; +using ::android::hardware::Void; using ::android::hardware::vibrator::V1_0::Effect; using ::android::hardware::vibrator::V1_0::EffectStrength; using ::android::hardware::vibrator::V1_0::IVibrator; using ::android::hardware::vibrator::V1_0::Status; -using ::android::hardware::Return; -using ::android::hardware::Void; -using ::android::sp; + +#define EXPECT_OK(ret) EXPECT_TRUE((ret).isOk()) // Test environment for Vibrator HIDL HAL. class VibratorHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { @@ -70,6 +73,12 @@ static void validatePerformEffect(Status status, uint32_t lengthMs) { } } +static void validatePerformEffectBadInput(Status status, uint32_t lengthMs) { + ASSERT_EQ(Status::UNSUPPORTED_OPERATION, status); + ASSERT_EQ(static_cast(0), lengthMs) + << "Effects that return UNSUPPORTED_OPERATION must have a duration of zero"; +} + TEST_F(VibratorHidlTest, OnThenOffBeforeTimeout) { EXPECT_EQ(Status::OK, vibrator->on(2000)); sleep(1); @@ -81,6 +90,42 @@ TEST_F(VibratorHidlTest, PerformEffect) { vibrator->perform(Effect::DOUBLE_CLICK, EffectStrength::LIGHT, validatePerformEffect); } +/* + * Test to make sure effect values above the valid range are rejected. + */ +TEST_F(VibratorHidlTest, PerformEffect_BadEffects_AboveValidRange) { + Effect effect = *std::prev(hidl_enum_range().end()); + Effect badEffect = static_cast(static_cast(effect) + 1); + EXPECT_OK(vibrator->perform(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput)); +} + +/* + * Test to make sure effect values below the valid range are rejected. + */ +TEST_F(VibratorHidlTest, PerformEffect_BadEffects_BelowValidRange) { + Effect effect = *hidl_enum_range().begin(); + Effect badEffect = static_cast(static_cast(effect) - 1); + EXPECT_OK(vibrator->perform(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput)); +} + +/* + * Test to make sure strength values above the valid range are rejected. + */ +TEST_F(VibratorHidlTest, PerformEffect_BadStrength_AboveValidRange) { + EffectStrength strength = *std::prev(hidl_enum_range().end()); + EffectStrength badStrength = static_cast(static_cast(strength) + 1); + EXPECT_OK(vibrator->perform(Effect::CLICK, badStrength, validatePerformEffectBadInput)); +} + +/* + * Test to make sure strength values below the valid range are rejected. + */ +TEST_F(VibratorHidlTest, PerformEffect_BadStrength_BelowValidRange) { + EffectStrength strength = *hidl_enum_range().begin(); + EffectStrength badStrength = static_cast(static_cast(strength) - 1); + EXPECT_OK(vibrator->perform(Effect::CLICK, badStrength, validatePerformEffectBadInput)); +} + TEST_F(VibratorHidlTest, ChangeVibrationalAmplitude) { if (vibrator->supportsAmplitudeControl()) { EXPECT_EQ(Status::OK, vibrator->setAmplitude(1)); diff --git a/vibrator/1.1/vts/functional/VtsHalVibratorV1_1TargetTest.cpp b/vibrator/1.1/vts/functional/VtsHalVibratorV1_1TargetTest.cpp index 1a47fe9fcb..3c3ebf2329 100644 --- a/vibrator/1.1/vts/functional/VtsHalVibratorV1_1TargetTest.cpp +++ b/vibrator/1.1/vts/functional/VtsHalVibratorV1_1TargetTest.cpp @@ -23,14 +23,16 @@ #include #include -using ::android::hardware::vibrator::V1_0::Effect; +using ::android::sp; +using ::android::hardware::hidl_enum_range; +using ::android::hardware::Return; +using ::android::hardware::Void; using ::android::hardware::vibrator::V1_0::EffectStrength; using ::android::hardware::vibrator::V1_0::Status; using ::android::hardware::vibrator::V1_1::Effect_1_1; using ::android::hardware::vibrator::V1_1::IVibrator; -using ::android::hardware::Return; -using ::android::hardware::Void; -using ::android::sp; + +#define EXPECT_OK(ret) EXPECT_TRUE((ret).isOk()) // Test environment for Vibrator HIDL HAL. class VibratorHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { @@ -72,11 +74,55 @@ static void validatePerformEffect(Status status, uint32_t lengthMs) { } } +static void validatePerformEffectBadInput(Status status, uint32_t lengthMs) { + ASSERT_EQ(Status::UNSUPPORTED_OPERATION, status); + ASSERT_EQ(static_cast(0), lengthMs) + << "Effects that return UNSUPPORTED_OPERATION must have a duration of zero"; +} + TEST_F(VibratorHidlTest_1_1, PerformEffect_1_1) { vibrator->perform_1_1(Effect_1_1::CLICK, EffectStrength::MEDIUM, validatePerformEffect); vibrator->perform_1_1(Effect_1_1::TICK, EffectStrength::STRONG, validatePerformEffect); } +/* + * Test to make sure effect values above the valid range are rejected. + */ +TEST_F(VibratorHidlTest_1_1, PerformEffect_1_1_BadEffects_AboveValidRange) { + Effect_1_1 effect = *std::prev(hidl_enum_range().end()); + Effect_1_1 badEffect = static_cast(static_cast(effect) + 1); + EXPECT_OK( + vibrator->perform_1_1(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput)); +} + +/* + * Test to make sure effect values below the valid range are rejected. + */ +TEST_F(VibratorHidlTest_1_1, PerformEffect_1_1_BadEffects_BelowValidRange) { + Effect_1_1 effect = *hidl_enum_range().begin(); + Effect_1_1 badEffect = static_cast(static_cast(effect) - 1); + EXPECT_OK( + vibrator->perform_1_1(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput)); +} + +/* + * Test to make sure strength values above the valid range are rejected. + */ +TEST_F(VibratorHidlTest_1_1, PerformEffect_1_1_BadStrength_AboveValidRange) { + EffectStrength strength = *std::prev(hidl_enum_range().end()); + EffectStrength badStrength = static_cast(static_cast(strength) + 1); + EXPECT_OK(vibrator->perform_1_1(Effect_1_1::CLICK, badStrength, validatePerformEffectBadInput)); +} + +/* + * Test to make sure strength values below the valid range are rejected. + */ +TEST_F(VibratorHidlTest_1_1, PerformEffect_1_1_BadStrength_BelowValidRange) { + EffectStrength strength = *hidl_enum_range().begin(); + EffectStrength badStrength = static_cast(static_cast(strength) - 1); + EXPECT_OK(vibrator->perform_1_1(Effect_1_1::CLICK, badStrength, validatePerformEffectBadInput)); +} + int main(int argc, char** argv) { ::testing::AddGlobalTestEnvironment(VibratorHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv);