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

Commit 38d054e4 authored by Lais Andrade's avatar Lais Andrade
Browse files

Fix vibrator compose VTS tests

Add TearDown method to reset the vibrator state between tests to avoid
illegal state errors caused by unrelated tests.

Add calls to vibrator->off between vibrator->compose invocations within
the same test, so calls are tested individually.

Test runs with this change on failing targets:

Bug: 323087313
Test: atest VtsHalVibratorTargetTest
Change-Id: I1e9aa243da07040b33df2474977fc8becac440a5
parent 74e851c0
Loading
Loading
Loading
Loading
+135 −123
Original line number Diff line number Diff line
@@ -109,6 +109,11 @@ class VibratorAidl : public testing::TestWithParam<std::tuple<int32_t, int32_t>>
        ASSERT_TRUE(vibrator->getCapabilities(&capabilities).isOk());
    }

    virtual void TearDown() override {
        // Reset vibrator state between tests.
        EXPECT_TRUE(vibrator->off().isOk());
    }

    sp<IVibrator> vibrator;
    int32_t capabilities;
};
@@ -429,7 +434,10 @@ TEST_P(VibratorAidl, GetPrimitiveDuration) {
}

TEST_P(VibratorAidl, ComposeValidPrimitives) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    std::vector<CompositePrimitive> supported;
    int32_t maxDelay, maxSize;

@@ -448,21 +456,21 @@ TEST_P(VibratorAidl, ComposeValidPrimitives) {
        composite.emplace_back(effect);

        if (composite.size() == maxSize) {
                EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
                composite.clear();
                vibrator->off();
            break;
        }
    }

    if (composite.size() != 0) {
        EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
            vibrator->off();
        }
        EXPECT_TRUE(vibrator->off().isOk());
    }
}

TEST_P(VibratorAidl, ComposeUnsupportedPrimitives) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    auto unsupported = kInvalidPrimitives;
    std::vector<CompositePrimitive> supported;

@@ -487,13 +495,14 @@ TEST_P(VibratorAidl, ComposeUnsupportedPrimitives) {
        }
        Status status = vibrator->compose(composite, nullptr);
        EXPECT_TRUE(isUnknownOrUnsupported(status)) << status;
            vibrator->off();
        }
    }
}

TEST_P(VibratorAidl, ComposeScaleBoundary) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    std::vector<CompositeEffect> composite(1);
    CompositeEffect& effect = composite[0];

@@ -501,25 +510,25 @@ TEST_P(VibratorAidl, ComposeScaleBoundary) {
    effect.primitive = CompositePrimitive::CLICK;

    effect.scale = std::nextafter(0.0f, -1.0f);
        EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT,
                  vibrator->compose(composite, nullptr).exceptionCode());
    EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT, vibrator->compose(composite, nullptr).exceptionCode());

    effect.scale = 0.0f;
    EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
    EXPECT_TRUE(vibrator->off().isOk());

    effect.scale = 1.0f;
    EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
    EXPECT_TRUE(vibrator->off().isOk());

    effect.scale = std::nextafter(1.0f, 2.0f);
        EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT,
                  vibrator->compose(composite, nullptr).exceptionCode());

        vibrator->off();
    }
    EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT, vibrator->compose(composite, nullptr).exceptionCode());
}

TEST_P(VibratorAidl, ComposeDelayBoundary) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    int32_t maxDelay;

    EXPECT_EQ(Status::EX_NONE, vibrator->getCompositionDelayMax(&maxDelay).exceptionCode());
@@ -533,18 +542,19 @@ TEST_P(VibratorAidl, ComposeDelayBoundary) {

    std::fill(composite.begin(), composite.end(), effect);
    EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
    EXPECT_TRUE(vibrator->off().isOk());

    effect.delayMs = maxDelay + 1;

    std::fill(composite.begin(), composite.end(), effect);
        EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT,
                  vibrator->compose(composite, nullptr).exceptionCode());
        vibrator->off();
    }
    EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT, vibrator->compose(composite, nullptr).exceptionCode());
}

TEST_P(VibratorAidl, ComposeSizeBoundary) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    int32_t maxSize;

    EXPECT_EQ(Status::EX_NONE, vibrator->getCompositionSizeMax(&maxSize).exceptionCode());
@@ -558,16 +568,17 @@ TEST_P(VibratorAidl, ComposeSizeBoundary) {

    std::fill(composite.begin(), composite.end(), effect);
    EXPECT_EQ(Status::EX_NONE, vibrator->compose(composite, nullptr).exceptionCode());
    EXPECT_TRUE(vibrator->off().isOk());

    composite.emplace_back(effect);
        EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT,
                  vibrator->compose(composite, nullptr).exceptionCode());
        vibrator->off();
    }
    EXPECT_EQ(Status::EX_ILLEGAL_ARGUMENT, vibrator->compose(composite, nullptr).exceptionCode());
}

TEST_P(VibratorAidl, ComposeCallback) {
    if (capabilities & IVibrator::CAP_COMPOSE_EFFECTS) {
    if (!(capabilities & IVibrator::CAP_COMPOSE_EFFECTS)) {
        GTEST_SKIP() << "CAP_COMPOSE_EFFECTS not supported";
    }

    std::vector<CompositePrimitive> supported;

    ASSERT_TRUE(vibrator->getSupportedPrimitives(&supported).isOk());
@@ -611,7 +622,8 @@ TEST_P(VibratorAidl, ComposeCallback) {

        elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
        EXPECT_GE(elapsed.count(), duration.count()) << toString(primitive);
        }

        EXPECT_TRUE(vibrator->off().isOk());
    }
}