diff options
2 files changed, 72 insertions, 2 deletions
diff --git a/services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java index 4538cacbf9c4..5c2b8ce4b432 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java @@ -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); } } diff --git a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java index 0d5a7d6c1952..acf2d0e700d4 100644 --- a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java +++ b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java @@ -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++) { |