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

Commit acec532d authored by tangrobin's avatar tangrobin
Browse files

gui: add additional test for region sampling

Add additional test that help verify the region sampling function.

Bug: 119639245
Test: ./libgui_test --gtest_filter="RegionSamplingTest.*"
Change-Id: Ie42b4cd5767b846f247781ab3b14a22ff9b7ad83
parent 44c2eaec
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
@@ -297,4 +297,70 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromTwoRegions) {
    composer->removeRegionSamplingListener(grayListener);
}

TEST_F(RegionSamplingTest, DISABLED_TestIfInvalidInputParameters) {
    sp<ISurfaceComposer> composer = ComposerService::getComposerService();
    sp<Listener> listener = new Listener();
    const Rect sampleArea{100, 100, 200, 200};
    // Invalid input sampleArea
    EXPECT_EQ(BAD_VALUE,
              composer->addRegionSamplingListener(Rect::INVALID_RECT, mTopLayer->getHandle(),
                                                  listener));
    listener->reset();
    // Invalid input binder
    EXPECT_EQ(NO_ERROR, composer->addRegionSamplingListener(sampleArea, NULL, listener));
    // Invalid input listener
    EXPECT_EQ(BAD_VALUE,
              composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), NULL));
    EXPECT_EQ(BAD_VALUE, composer->removeRegionSamplingListener(NULL));
    // remove the listener
    composer->removeRegionSamplingListener(listener);
}

TEST_F(RegionSamplingTest, DISABLED_TestCallbackAfterRemoveListener) {
    fill_render(rgba_green);
    sp<ISurfaceComposer> composer = ComposerService::getComposerService();
    sp<Listener> listener = new Listener();
    const Rect sampleArea{100, 100, 200, 200};
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);
    fill_render(rgba_green);

    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);

    listener->reset();
    composer->removeRegionSamplingListener(listener);
    fill_render(rgba_green);
    EXPECT_FALSE(listener->wait_event(100ms))
            << "callback should stop after remove the region sampling listener";
}

TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromMovingLayer) {
    sp<ISurfaceComposer> composer = ComposerService::getComposerService();
    sp<Listener> listener = new Listener();
    Rect sampleArea{100, 100, 200, 200};

    // Test: listener in (100, 100). See layer before move, no layer after move.
    fill_render(rgba_blue);
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_blue, error_margin);
    listener->reset();
    SurfaceComposerClient::Transaction{}.setPosition(mContentLayer, 600, 600).apply();
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_gray, error_margin);
    composer->removeRegionSamplingListener(listener);

    // Test: listener offset to (600, 600). No layer before move, see layer after move.
    fill_render(rgba_green);
    sampleArea.offsetTo(600, 600);
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_gray, error_margin);
    listener->reset();
    SurfaceComposerClient::Transaction{}.setPosition(mContentLayer, 600, 600).apply();
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);
    composer->removeRegionSamplingListener(listener);
}

} // namespace android::test