Parameterize PowerManagerServiceTest

Bug: 291888211
Test: atest PowerManagerServiceTest
Change-Id: I6eed668c86fbacaf840a99c9555880fe14fc8dc6
diff --git a/services/tests/powerservicetests/Android.bp b/services/tests/powerservicetests/Android.bp
index 9384015..7351fc5f 100644
--- a/services/tests/powerservicetests/Android.bp
+++ b/services/tests/powerservicetests/Android.bp
@@ -17,6 +17,7 @@
         "services.core",
         "servicestests-utils",
         "testables",
+        "TestParameterInjector",
     ],
 
     libs: [
diff --git a/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
index 9bce536..0b1e338 100644
--- a/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/powerservicetests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -111,6 +111,9 @@
 import com.android.server.power.batterysaver.BatterySavingStats;
 import com.android.server.testutils.OffsettableClock;
 
+import com.google.testing.junit.testparameterinjector.TestParameter;
+import com.google.testing.junit.testparameterinjector.TestParameterInjector;
+
 import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
 import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
 
@@ -119,6 +122,7 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
@@ -140,6 +144,7 @@
  *  atest FrameworksServicesTests:PowerManagerServiceTest
  */
 @SuppressWarnings("GuardedBy")
+@RunWith(TestParameterInjector.class)
 public class PowerManagerServiceTest {
     private static final String SYSTEM_PROPERTY_QUIESCENT = "ro.boot.quiescent";
     private static final String SYSTEM_PROPERTY_REBOOT_REASON = "sys.boot.reason";
@@ -2768,12 +2773,13 @@
     }
 
     @Test
-    public void testFeatureEnabledProcStateUncachedToCached_fullWakeLockDisabled() {
+    public void testFeatureEnabledProcStateUncachedToCached_screenWakeLockDisabled(
+            @TestParameter PowerManagerServiceTest.ScreenWakeLockTestParameter param) {
         doReturn(true).when(mDeviceParameterProvider)
                 .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
         createService();
         startSystem();
-        WakeLock wakeLock = acquireWakeLock("fullWakeLock", PowerManager.FULL_WAKE_LOCK);
+        WakeLock wakeLock = acquireWakeLock(param.mDescr, param.mFlags);
         setUncachedUidProcState(wakeLock.mOwnerUid);
 
         setCachedUidProcState(wakeLock.mOwnerUid);
@@ -2781,12 +2787,13 @@
     }
 
     @Test
-    public void testFeatureDisabledProcStateUncachedToCached_fullWakeLockEnabled() {
+    public void testFeatureDisabledProcStateUncachedToCached_screenWakeLockEnabled(
+            @TestParameter PowerManagerServiceTest.ScreenWakeLockTestParameter param) {
         doReturn(false).when(mDeviceParameterProvider)
                 .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
         createService();
         startSystem();
-        WakeLock wakeLock = acquireWakeLock("fullWakeLock", PowerManager.FULL_WAKE_LOCK);
+        WakeLock wakeLock = acquireWakeLock(param.mDescr, param.mFlags);
         setUncachedUidProcState(wakeLock.mOwnerUid);
 
         setCachedUidProcState(wakeLock.mOwnerUid);
@@ -2794,68 +2801,27 @@
     }
 
     @Test
-    public void testFeatureEnabledProcStateUncachedToCached_screenBrightWakeLockDisabled() {
+    public void testFeatureEnabledProcStateCachedToUncached_screenWakeLockEnabled(
+            @TestParameter PowerManagerServiceTest.ScreenWakeLockTestParameter param) {
         doReturn(true).when(mDeviceParameterProvider)
                 .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
         createService();
         startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenBrightWakeLock",
-                PowerManager.SCREEN_BRIGHT_WAKE_LOCK);
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-
+        WakeLock wakeLock = acquireWakeLock(param.mDescr, param.mFlags);
         setCachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isTrue();
+
+        setUncachedUidProcState(wakeLock.mOwnerUid);
+        assertThat(wakeLock.mDisabled).isFalse();
     }
 
     @Test
-    public void testFeatureDisabledProcStateUncachedToCached_screenBrightWakeLockEnabled() {
+    public void testFeatureDisabledProcStateCachedToUncached_screenWakeLockEnabled(
+            @TestParameter PowerManagerServiceTest.ScreenWakeLockTestParameter param) {
         doReturn(false).when(mDeviceParameterProvider)
                 .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
         createService();
         startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenBrightWakeLock",
-                PowerManager.SCREEN_BRIGHT_WAKE_LOCK);
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-
-        setCachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureEnabledProcStateUncachedToCached_screenDimWakeLockDisabled() {
-        doReturn(true).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenDimWakeLock",
-                PowerManager.SCREEN_DIM_WAKE_LOCK);
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-
-        setCachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isTrue();
-    }
-
-    @Test
-    public void testFeatureDisabledProcStateUncachedToCached_screenDimWakeLockEnabled() {
-        doReturn(false).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenDimWakeLock",
-                PowerManager.SCREEN_DIM_WAKE_LOCK);
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-
-        setCachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureEnabledProcStateCachedToUncached_fullWakeLockEnabled() {
-        doReturn(true).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("fullWakeLock", PowerManager.FULL_WAKE_LOCK);
+        WakeLock wakeLock = acquireWakeLock(param.mDescr, param.mFlags);
         setCachedUidProcState(wakeLock.mOwnerUid);
 
         setUncachedUidProcState(wakeLock.mOwnerUid);
@@ -2863,76 +2829,7 @@
     }
 
     @Test
-    public void testFeatureDisabledProcStateCachedToUncached_fullWakeLockEnabled() {
-        doReturn(false).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("fullWakeLock", PowerManager.FULL_WAKE_LOCK);
-        setCachedUidProcState(wakeLock.mOwnerUid);
-
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureEnabledProcStateCachedToUncached_screenBrightWakeLockEnabled() {
-        doReturn(true).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenBrightWakeLock",
-                PowerManager.SCREEN_BRIGHT_WAKE_LOCK);
-        setCachedUidProcState(wakeLock.mOwnerUid);
-
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureDisabledProcStateCachedToUncached_screenBrightWakeLockEnabled() {
-        doReturn(false).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenBrightWakeLock",
-                PowerManager.SCREEN_BRIGHT_WAKE_LOCK);
-        setCachedUidProcState(wakeLock.mOwnerUid);
-
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureEnabledProcStateCachedToUncached_screenDimWakeLockEnabled() {
-        doReturn(true).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenDimWakeLock",
-                PowerManager.SCREEN_DIM_WAKE_LOCK);
-        setCachedUidProcState(wakeLock.mOwnerUid);
-
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureDisabledProcStateCachedToUncached_screenDimWakeLockEnabled() {
-        doReturn(false).when(mDeviceParameterProvider)
-                .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
-        createService();
-        startSystem();
-        WakeLock wakeLock = acquireWakeLock("screenDimWakeLock",
-                PowerManager.SCREEN_DIM_WAKE_LOCK);
-        setCachedUidProcState(wakeLock.mOwnerUid);
-
-        setUncachedUidProcState(wakeLock.mOwnerUid);
-        assertThat(wakeLock.mDisabled).isFalse();
-    }
-
-    @Test
-    public void testFeatureDynamicallyDisabledProcStateUncachedToCached_fullWakeLockEnabled() {
+    public void testFeatureDynamicallyDisabledProcStateUncachedToCached_screenWakeLockEnabled() {
         doReturn(true).when(mDeviceParameterProvider)
                 .isDisableScreenWakeLocksWhileCachedFeatureEnabled();
         ArgumentCaptor<DeviceConfig.OnPropertiesChangedListener> listenerCaptor =
@@ -2960,4 +2857,18 @@
     private void setUncachedUidProcState(int uid) {
         mService.updateUidProcStateInternal(uid, PROCESS_STATE_RECEIVER);
     }
+
+    private enum ScreenWakeLockTestParameter {
+        FULL_WAKE_LOCK("fullWakeLock", PowerManager.FULL_WAKE_LOCK),
+        SCREEN_BRIGHT_WAKE_LOCK("screenBrightWakeLock", PowerManager.SCREEN_BRIGHT_WAKE_LOCK),
+        SCREEN_DIM_WAKE_LOCK("screenDimWakeLock", PowerManager.SCREEN_DIM_WAKE_LOCK);
+
+        final String mDescr;
+        final int mFlags;
+
+        ScreenWakeLockTestParameter(String descr, int flags) {
+            this.mDescr = descr;
+            this.mFlags = flags;
+        }
+    }
 }