Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24775d8b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add functional tests for bad input to 1.2"

parents e8f2d42a 47cde04e
Loading
Loading
Loading
Loading
+54 −4
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::sp;

#define EXPECT_OK(ret) ASSERT_TRUE((ret).isOk())

// Test environment for Vibrator HIDL HAL.
class VibratorHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase {
   public:
@@ -65,20 +67,68 @@ class VibratorHidlTest_1_2 : public ::testing::VtsHalHidlTargetTestBase {
static void validatePerformEffect(Status status, uint32_t lengthMs) {
    ASSERT_TRUE(status == Status::OK || status == Status::UNSUPPORTED_OPERATION);
    if (status == Status::OK) {
        ASSERT_GT(lengthMs, static_cast<uint32_t>(0))
            << "Effects that return OK must return a non-zero duration";
        ASSERT_LT(static_cast<uint32_t>(0), lengthMs)
            << "Effects that return OK must return a positive duration";
    } else {
        ASSERT_EQ(lengthMs, static_cast<uint32_t>(0))
        ASSERT_EQ(static_cast<uint32_t>(0), lengthMs)
            << "Effects that return UNSUPPORTED_OPERATION must have a duration of zero";
    }
}

static void validatePerformEffectBadInput(Status status, uint32_t lengthMs) {
    ASSERT_EQ(Status::UNSUPPORTED_OPERATION, status);
    ASSERT_EQ(static_cast<uint32_t>(0), lengthMs)
        << "Effects that return UNSUPPORTED_OPERATION must have a duration of zero";
}

/*
 * Test to make sure effects within the valid range return are either supported and return OK with
 * a valid duration, or are unsupported and return UNSUPPORTED_OPERATION with a duration of 0.
 */
TEST_F(VibratorHidlTest_1_2, PerformEffect_1_2) {
    for (const auto& effect : hidl_enum_iterator<Effect>()) {
        for (const auto& strength : hidl_enum_iterator<EffectStrength>()) {
            vibrator->perform_1_2(effect, strength, validatePerformEffect);
            EXPECT_OK(vibrator->perform_1_2(effect, strength, validatePerformEffect));
        }
    }
}

/*
 * Test to make sure effect values above the valid range are rejected.
 */
TEST_F(VibratorHidlTest_1_2, PerformEffect_1_2_BadEffects_AboveValidRange) {
    Effect effect = *std::prev(hidl_enum_iterator<Effect>().end());
    Effect badEffect = static_cast<Effect>(static_cast<int32_t>(effect) + 1);
    EXPECT_OK(
        vibrator->perform_1_2(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput));
}

/*
 * Test to make sure effect values below the valid range are rejected.
 */
TEST_F(VibratorHidlTest_1_2, PerformEffect_1_2_BadEffects_BelowValidRange) {
    Effect effect = *hidl_enum_iterator<Effect>().begin();
    Effect badEffect = static_cast<Effect>(static_cast<int32_t>(effect) - 1);
    EXPECT_OK(
        vibrator->perform_1_2(badEffect, EffectStrength::LIGHT, validatePerformEffectBadInput));
}

/*
 * Test to make sure strength values above the valid range are rejected.
 */
TEST_F(VibratorHidlTest_1_2, PerformEffect_1_2_BadStrength_AboveValidRange) {
    EffectStrength strength = *std::prev(hidl_enum_iterator<EffectStrength>().end());
    EffectStrength badStrength = static_cast<EffectStrength>(static_cast<int32_t>(strength) + 1);
    EXPECT_OK(vibrator->perform_1_2(Effect::THUD, badStrength, validatePerformEffectBadInput));
}

/*
 * Test to make sure strength values below the valid range are rejected.
 */
TEST_F(VibratorHidlTest_1_2, PerformEffect_1_2_BadStrength_BelowValidRange) {
    EffectStrength strength = *hidl_enum_iterator<EffectStrength>().begin();
    EffectStrength badStrength = static_cast<EffectStrength>(static_cast<int32_t>(strength) - 1);
    EXPECT_OK(vibrator->perform_1_2(Effect::THUD, badStrength, validatePerformEffectBadInput));
}

int main(int argc, char** argv) {