Loading tests/unit/src/com/android/settings/applications/HibernatedAppsPreferenceControllerTest.java +59 −18 Original line number Diff line number Diff line Loading @@ -24,17 +24,24 @@ import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.usage.IUsageStatsManager; import android.app.usage.UsageStats; import android.app.usage.UsageStatsManager; import android.apphibernation.AppHibernationManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.res.Resources; import android.os.RemoteException; import android.provider.DeviceConfig; import androidx.test.core.app.ApplicationProvider; Loading @@ -58,11 +65,11 @@ public class HibernatedAppsPreferenceControllerTest { PackageManager mPackageManager; @Mock AppHibernationManager mAppHibernationManager; @Mock IUsageStatsManager mIUsageStatsManager; private static final String KEY = "key"; private Context mContext; private HibernatedAppsPreferenceController mController; private PackageInfo mHibernatedPackage; private PackageInfo mAutoRevokedPackage; @Before public void setUp() { Loading @@ -73,10 +80,9 @@ public class HibernatedAppsPreferenceControllerTest { when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(AppHibernationManager.class)) .thenReturn(mAppHibernationManager); when(mContext.getSystemService(UsageStatsManager.class)).thenReturn( new UsageStatsManager(mContext, mIUsageStatsManager)); mController = new HibernatedAppsPreferenceController(mContext, KEY); mHibernatedPackage = getHibernatedPackage(mAppHibernationManager, mPackageManager, mContext); mAutoRevokedPackage = getAutoRevokedPackage(mPackageManager, mContext); } @Test Loading @@ -88,36 +94,71 @@ public class HibernatedAppsPreferenceControllerTest { } @Test public void getSummary_shouldReturnCorrectly() { public void getSummary_getsRightCountForHibernatedPackage() { final PackageInfo hibernatedPkg = getHibernatedPackage(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(hibernatedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); mController.getSummary(); verify(mContext.getResources()).getQuantityString(anyInt(), eq(1), eq(1)); } @Test public void getSummary_getsRightCountForUnusedAutoRevokedPackage() { final PackageInfo autoRevokedPkg = getAutoRevokedPackage(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(autoRevokedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); mController.getSummary(); verify(mContext.getResources()).getQuantityString(anyInt(), eq(1), eq(1)); } @Test public void getSummary_getsRightCountForUsedAutoRevokedPackage() { final PackageInfo usedAutoRevokedPkg = getAutoRevokedPackage(); setAutoRevokedPackageUsageStats(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(mHibernatedPackage, mAutoRevokedPackage, new PackageInfo())); Arrays.asList(usedAutoRevokedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); final int totalHibernated = 2; mController.getSummary(); verify(mContext.getResources()).getQuantityString( anyInt(), eq(totalHibernated), eq(totalHibernated)); verify(mContext.getResources()).getQuantityString(anyInt(), eq(0), eq(0)); } private static PackageInfo getHibernatedPackage( AppHibernationManager apm, PackageManager pm, Context context) { private PackageInfo getHibernatedPackage() { final PackageInfo pi = new PackageInfo(); pi.packageName = HIBERNATED_PACKAGE_NAME; pi.requestedPermissions = new String[] {PERMISSION}; when(apm.getHibernatingPackagesForUser()).thenReturn(Arrays.asList(pi.packageName)); when(pm.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, context.getUser())) when(mAppHibernationManager.getHibernatingPackagesForUser()) .thenReturn(Arrays.asList(pi.packageName)); when(mPackageManager.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, mContext.getUser())) .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED); return pi; } private static PackageInfo getAutoRevokedPackage(PackageManager pm, Context context) { private PackageInfo getAutoRevokedPackage() { final PackageInfo pi = new PackageInfo(); pi.packageName = AUTO_REVOKED_PACKAGE_NAME; pi.requestedPermissions = new String[] {PERMISSION}; when(pm.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, context.getUser())) when(mPackageManager.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, mContext.getUser())) .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED); return pi; } private void setAutoRevokedPackageUsageStats() { final UsageStats us = new UsageStats(); us.mPackageName = AUTO_REVOKED_PACKAGE_NAME; us.mLastTimeVisible = System.currentTimeMillis(); try { when(mIUsageStatsManager.queryUsageStats( anyInt(), anyLong(), anyLong(), anyString(), anyInt())) .thenReturn(new ParceledListSlice(Arrays.asList(us))); } catch (RemoteException e) { // no-op } } } Loading
tests/unit/src/com/android/settings/applications/HibernatedAppsPreferenceControllerTest.java +59 −18 Original line number Diff line number Diff line Loading @@ -24,17 +24,24 @@ import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.usage.IUsageStatsManager; import android.app.usage.UsageStats; import android.app.usage.UsageStatsManager; import android.apphibernation.AppHibernationManager; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.res.Resources; import android.os.RemoteException; import android.provider.DeviceConfig; import androidx.test.core.app.ApplicationProvider; Loading @@ -58,11 +65,11 @@ public class HibernatedAppsPreferenceControllerTest { PackageManager mPackageManager; @Mock AppHibernationManager mAppHibernationManager; @Mock IUsageStatsManager mIUsageStatsManager; private static final String KEY = "key"; private Context mContext; private HibernatedAppsPreferenceController mController; private PackageInfo mHibernatedPackage; private PackageInfo mAutoRevokedPackage; @Before public void setUp() { Loading @@ -73,10 +80,9 @@ public class HibernatedAppsPreferenceControllerTest { when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(AppHibernationManager.class)) .thenReturn(mAppHibernationManager); when(mContext.getSystemService(UsageStatsManager.class)).thenReturn( new UsageStatsManager(mContext, mIUsageStatsManager)); mController = new HibernatedAppsPreferenceController(mContext, KEY); mHibernatedPackage = getHibernatedPackage(mAppHibernationManager, mPackageManager, mContext); mAutoRevokedPackage = getAutoRevokedPackage(mPackageManager, mContext); } @Test Loading @@ -88,36 +94,71 @@ public class HibernatedAppsPreferenceControllerTest { } @Test public void getSummary_shouldReturnCorrectly() { public void getSummary_getsRightCountForHibernatedPackage() { final PackageInfo hibernatedPkg = getHibernatedPackage(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(hibernatedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); mController.getSummary(); verify(mContext.getResources()).getQuantityString(anyInt(), eq(1), eq(1)); } @Test public void getSummary_getsRightCountForUnusedAutoRevokedPackage() { final PackageInfo autoRevokedPkg = getAutoRevokedPackage(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(autoRevokedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); mController.getSummary(); verify(mContext.getResources()).getQuantityString(anyInt(), eq(1), eq(1)); } @Test public void getSummary_getsRightCountForUsedAutoRevokedPackage() { final PackageInfo usedAutoRevokedPkg = getAutoRevokedPackage(); setAutoRevokedPackageUsageStats(); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn( Arrays.asList(mHibernatedPackage, mAutoRevokedPackage, new PackageInfo())); Arrays.asList(usedAutoRevokedPkg, new PackageInfo())); when(mContext.getResources()).thenReturn(mock(Resources.class)); final int totalHibernated = 2; mController.getSummary(); verify(mContext.getResources()).getQuantityString( anyInt(), eq(totalHibernated), eq(totalHibernated)); verify(mContext.getResources()).getQuantityString(anyInt(), eq(0), eq(0)); } private static PackageInfo getHibernatedPackage( AppHibernationManager apm, PackageManager pm, Context context) { private PackageInfo getHibernatedPackage() { final PackageInfo pi = new PackageInfo(); pi.packageName = HIBERNATED_PACKAGE_NAME; pi.requestedPermissions = new String[] {PERMISSION}; when(apm.getHibernatingPackagesForUser()).thenReturn(Arrays.asList(pi.packageName)); when(pm.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, context.getUser())) when(mAppHibernationManager.getHibernatingPackagesForUser()) .thenReturn(Arrays.asList(pi.packageName)); when(mPackageManager.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, mContext.getUser())) .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED); return pi; } private static PackageInfo getAutoRevokedPackage(PackageManager pm, Context context) { private PackageInfo getAutoRevokedPackage() { final PackageInfo pi = new PackageInfo(); pi.packageName = AUTO_REVOKED_PACKAGE_NAME; pi.requestedPermissions = new String[] {PERMISSION}; when(pm.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, context.getUser())) when(mPackageManager.getPermissionFlags( pi.requestedPermissions[0], pi.packageName, mContext.getUser())) .thenReturn(PackageManager.FLAG_PERMISSION_AUTO_REVOKED); return pi; } private void setAutoRevokedPackageUsageStats() { final UsageStats us = new UsageStats(); us.mPackageName = AUTO_REVOKED_PACKAGE_NAME; us.mLastTimeVisible = System.currentTimeMillis(); try { when(mIUsageStatsManager.queryUsageStats( anyInt(), anyLong(), anyLong(), anyString(), anyInt())) .thenReturn(new ParceledListSlice(Arrays.asList(us))); } catch (RemoteException e) { // no-op } } }