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

Commit 69a91fef authored by Long Ling's avatar Long Ling
Browse files

Add tests for Display White Balance

Test: atest FrameworksMockingServicesTests:DisplayWhiteBalanceTintControllerTest
Test: atest AmbientLuxTest
Bug: 123378284
Change-Id: I4191f2594daf9f115fe5afe53c3e98deb37c2845
parent 22562664
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;

import static com.google.common.truth.Truth.assertWithMessage;

import static org.junit.Assert.assertArrayEquals;

import android.content.Context;
import android.content.res.Resources;
import android.os.Binder;
@@ -184,8 +186,56 @@ public class DisplayWhiteBalanceTintControllerTest {
                .isFalse();
    }

    /**
     * Matrix should match the precalculated one for given cct and display primaries.
     */
    @Test
    public void displayWhiteBalance_validateTransformMatrix() {
        DisplayPrimaries displayPrimaries = new DisplayPrimaries();
        displayPrimaries.red = new CieXyz();
        displayPrimaries.red.X = 0.412315f;
        displayPrimaries.red.Y = 0.212600f;
        displayPrimaries.red.Z = 0.019327f;
        displayPrimaries.green = new CieXyz();
        displayPrimaries.green.X = 0.357600f;
        displayPrimaries.green.Y = 0.715200f;
        displayPrimaries.green.Z = 0.119200f;
        displayPrimaries.blue = new CieXyz();
        displayPrimaries.blue.X = 0.180500f;
        displayPrimaries.blue.Y = 0.072200f;
        displayPrimaries.blue.Z = 0.950633f;
        displayPrimaries.white = new CieXyz();
        displayPrimaries.white.X = 0.950456f;
        displayPrimaries.white.Y = 1.000000f;
        displayPrimaries.white.Z = 1.089058f;
        doReturn(displayPrimaries)
                .when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));

        setUpTintController();
        assertWithMessage("Setup with valid SurfaceControl failed")
                .that(mDisplayWhiteBalanceTintController.mSetUp)
                .isTrue();

        final int cct = 6500;
        mDisplayWhiteBalanceTintController.setMatrix(cct);
        assertWithMessage("Failed to set temperature")
                .that(mDisplayWhiteBalanceTintController.mCurrentColorTemperature)
                .isEqualTo(cct);

        float[] matrixDwb = mDisplayWhiteBalanceTintController.getMatrix();
        final float[] expectedMatrixDwb = {
            0.962880f,  -0.001780f, -0.000158f, 0.0f,
            0.035765f,   0.929988f,  0.000858f, 0.0f,
            0.001354f,  -0.000470f,  0.948327f, 0.0f,
            0.0f,        0.0f,       0.0f,      1.0f
        };
        assertArrayEquals("Unexpected DWB matrix", matrixDwb, expectedMatrixDwb,
            1e-6f /* tolerance */);
    }

    private void setUpTintController() {
        mDisplayWhiteBalanceTintController = new DisplayWhiteBalanceTintController();
        mDisplayWhiteBalanceTintController.setUp(mMockedContext, true);
        mDisplayWhiteBalanceTintController.setActivated(true);
    }
}
+22 −2
Original line number Diff line number Diff line
@@ -78,6 +78,8 @@ public final class AmbientLuxTest {
    @Mock private TypedArray mBiases;
    @Mock private TypedArray mHighLightBrightnesses;
    @Mock private TypedArray mHighLightBiases;
    @Mock private TypedArray mAmbientColorTemperatures;
    @Mock private TypedArray mDisplayColorTemperatures;

    @Before
    public void setUp() throws Exception {
@@ -105,10 +107,10 @@ public final class AmbientLuxTest {
                HIGH_LIGHT_AMBIENT_COLOR_TEMPERATURE);
        when(mResourcesSpy.obtainTypedArray(
                R.array.config_displayWhiteBalanceAmbientColorTemperatures))
                .thenReturn(createTypedArray());
                .thenReturn(mAmbientColorTemperatures);
        when(mResourcesSpy.obtainTypedArray(
                R.array.config_displayWhiteBalanceDisplayColorTemperatures))
                .thenReturn(createTypedArray());
                .thenReturn(mDisplayColorTemperatures);

        when(mResourcesSpy.obtainTypedArray(
                R.array.config_displayWhiteBalanceLowLightAmbientBrightnesses))
@@ -388,6 +390,16 @@ public final class AmbientLuxTest {
        assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, 0.001);
    }

    @Test
    public void testWhiteBalance_updateWithEmptyFilter() throws Exception {
        setAmbientColorTemperatures(5300.0f, 6000.0f, 7000.0f, 8000.0f);
        setDisplayColorTemperatures(6300.0f, 6400.0f, 6850.0f, 7450.0f);
        DisplayWhiteBalanceController controller =
                DisplayWhiteBalanceFactory.create(mHandler, mSensorManagerMock, mResourcesSpy);
        controller.updateAmbientColorTemperature();
        assertEquals(-1.0f, controller.mPendingAmbientColorTemperature, 0);
    }

    void mockThrottler() {
        when(mResourcesSpy.getInteger(
                R.integer.config_displayWhiteBalanceDecreaseDebounce)).thenReturn(0);
@@ -455,6 +467,14 @@ public final class AmbientLuxTest {
        setFloatArrayResource(mHighLightBiases, vals);
    }

    private void setAmbientColorTemperatures(float... vals) {
        setFloatArrayResource(mAmbientColorTemperatures, vals);
    }

    private void setDisplayColorTemperatures(float... vals) {
        setFloatArrayResource(mDisplayColorTemperatures, vals);
    }

    private void setFloatArrayResource(TypedArray array, float[] vals) {
        when(array.length()).thenReturn(vals.length);
        for (int i = 0; i < vals.length; i++) {