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

Commit 9b72886d authored by Christine Franks's avatar Christine Franks
Browse files

Move DisplayTransformManagerTest

Move it to FrameworksMockingServicesTests, so that we can mock
SystemProperties and make the tests work even without disabling
security policies.

Bug: 130442008
Test: atest FrameworksMockingServicesTests:DisplayTransformManagerTest
Change-Id: Ia4afbb843ec1f95d8de9b275ce8b74d99135f775
parent cd7b9b71
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.frameworks.mockingservicestests">

    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.HARDWARE_TEST"/>
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

    <application android:testOnly="true"
+49 −17
Original line number Diff line number Diff line
@@ -16,87 +16,119 @@

package com.android.server.display.color;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyString;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.server.display.color.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY;
import static com.android.server.display.color.DisplayTransformManager.PERSISTENT_PROPERTY_DISPLAY_COLOR;
import static com.android.server.display.color.DisplayTransformManager.PERSISTENT_PROPERTY_SATURATION;

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

import static org.mockito.ArgumentMatchers.any;

import android.hardware.display.ColorDisplayManager;
import android.os.SystemProperties;

import androidx.test.runner.AndroidJUnit4;

import com.android.dx.mockito.inline.extended.ExtendedMockito;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;
import org.mockito.stubbing.Answer;

import java.util.HashMap;

@RunWith(AndroidJUnit4.class)
public class DisplayTransformManagerTest {

    private MockitoSession mSession;
    private DisplayTransformManager mDtm;
    private float[] mNightDisplayMatrix;
    private HashMap<String, String> mSystemProperties;

    @Before
    public void setUp() {
        mDtm = new DisplayTransformManager();
        mNightDisplayMatrix = mDtm.getColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY);

        SystemProperties.set(PERSISTENT_PROPERTY_DISPLAY_COLOR, null);
        SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, null);
        mSession = ExtendedMockito.mockitoSession()
                .initMocks(this)
                .strictness(Strictness.LENIENT)
                .spyStatic(SystemProperties.class)
                .startMocking();
        mSystemProperties = new HashMap<>();

        doAnswer((Answer<Void>) invocationOnMock -> {
                    mSystemProperties.put(invocationOnMock.getArgument(0),
                            invocationOnMock.getArgument(1));
                    return null;
                }
        ).when(() -> SystemProperties.set(anyString(), any()));
    }

    @After
    public void tearDown() throws Exception {
        mSession.finishMocking();
        mSystemProperties.clear();
    }

    @Test
    public void setColorMode_natural() {
        mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo("0" /* managed */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo("1.0" /* natural */);
    }

    @Test
    public void setColorMode_boosted() {
        mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))

        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo("0" /* managed */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo("1.1" /* boosted */);
    }

    @Test
    public void setColorMode_saturated() {
        mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo("1" /* unmanaged */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo("1.0" /* natural */);
    }

    @Test
    public void setColorMode_automatic() {
        mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo("2" /* enhanced */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo("1.0" /* natural */);
    }

    @Test
    public void setColorMode_vendor() {
        mDtm.setColorMode(0x100, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo(Integer.toString(0x100) /* pass-through */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
                .isEqualTo("1.0" /* default */);
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo("1.0" /* natural */);
    }

    @Test
    public void setColorMode_outOfBounds() {
        mDtm.setColorMode(0x50, mNightDisplayMatrix);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
                .isEqualTo("" /* default */);
        assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
                .isEqualTo("" /* default */);
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR))
                .isEqualTo(null);
        assertThat(mSystemProperties.get(PERSISTENT_PROPERTY_SATURATION))
                .isEqualTo(null);
    }
}