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

Commit 902c7a49 authored by Long Ling's avatar Long Ling Committed by Android (Google) Code Review
Browse files

Merge "Add tests for Display White Balance"

parents 821c77af 69a91fef
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++) {