19df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi/* 29df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * Copyright (C) 2016 The Android Open Source Project 39df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * 49df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * Licensed under the Apache License, Version 2.0 (the "License"); you may not 59df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * use this file except in compliance with the License. You may obtain a copy of 69df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * the License at 79df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * 89df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * http://www.apache.org/licenses/LICENSE-2.0 99df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * 109df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * Unless required by applicable law or agreed to in writing, software 119df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 129df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 139df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * License for the specific language governing permissions and limitations under 149df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi * the License. 159df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi */ 169df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 179df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishipackage com.android.storagemanager.deletionhelper; 189df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 199df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport android.content.Context; 20dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinezimport com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo; 219df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport com.android.storagemanager.testing.TestingConstants; 229df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.junit.Before; 239df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.junit.Test; 249df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.junit.runner.RunWith; 259df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.mockito.MockitoAnnotations; 269df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.robolectric.RobolectricTestRunner; 279df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.robolectric.RuntimeEnvironment; 289df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishiimport org.robolectric.annotation.Config; 299df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 302e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritzeimport static com.google.common.truth.Truth.assertThat; 319df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 329df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi@RunWith(RobolectricTestRunner.class) 33fff597ce52cbc1693f1a3d781991e19c103e08f2Daniel Nishi@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION) 349df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishipublic class AppDeletionPreferenceTest { 3519927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez 369df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi private static final String TEST_PACKAGE_LABEL = "App"; 379df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi private static final String TEST_PACKAGE_NAME = "com.package.mcpackageface"; 3819927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez public static final long KILOBYTE = 1024L; 3919927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez public static final long HUNDRED_BYTES = 100L; 4019927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez public static final String KB_STRING = "1.00KB"; 4119927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez public static final String HUNDRED_BYTE_STRING = "100B"; 429df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi private Context mContext; 439df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 449df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi @Before 459df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi public void setUp() throws Exception { 469df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi MockitoAnnotations.initMocks(this); 479df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi mContext = RuntimeEnvironment.application; 489df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi } 499df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 509df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi @Test 519df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi public void testPreferenceSummary() { 52dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez PackageInfo app = 53dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez new PackageInfo.Builder() 54dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setDaysSinceLastUse(30) 55dd4f3f0854b75a6ee20587d0d000829f38433617Daniel Nishi .setDaysSinceFirstInstall(30) 56dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setPackageName(TEST_PACKAGE_NAME) 5719927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez .setSize(KILOBYTE) 58dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setLabel(TEST_PACKAGE_LABEL) 59dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .build(); 60dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 619df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi preference.updateSummary(); 629df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 632e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 642e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 6519927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("30 days ago"); 6619927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 679df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi } 689df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 699df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi @Test 70888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez public void testTwoDayPreferenceSummary() { 71888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez PackageInfo app = 72888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez new PackageInfo.Builder() 73888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceLastUse(2) 74888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceFirstInstall(30) 75888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setPackageName(TEST_PACKAGE_NAME) 76888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setSize(KILOBYTE) 77888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setLabel(TEST_PACKAGE_LABEL) 78888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .build(); 79888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 80888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez preference.updateSummary(); 81888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 82888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 83888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 84888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("2 days ago"); 85888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 86888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez } 87888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 88888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez @Test 89888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez public void testYesterdayPreferenceSummary() { 90888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez PackageInfo app = 91888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez new PackageInfo.Builder() 92888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceLastUse(1) 93888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceFirstInstall(30) 94888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setPackageName(TEST_PACKAGE_NAME) 95888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setSize(KILOBYTE) 96888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setLabel(TEST_PACKAGE_LABEL) 97888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .build(); 98888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 99888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez preference.updateSummary(); 100888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 101888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 102888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 103888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("Yesterday"); 104888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 105888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez } 106888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 107888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez @Test 108888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez public void testTodayPreferenceSummary() { 109888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez PackageInfo app = 110888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez new PackageInfo.Builder() 111888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceLastUse(0) 112888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setDaysSinceFirstInstall(30) 113888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setPackageName(TEST_PACKAGE_NAME) 114888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setSize(KILOBYTE) 115888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .setLabel(TEST_PACKAGE_LABEL) 116888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez .build(); 117888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 118888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez preference.updateSummary(); 119888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 120888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 121888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 122888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("Today"); 123888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 124888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez } 125888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez 126888d716205bf1dad9caa2950b7eccb5286bb947dSalvador Martinez @Test 1279df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi public void testNeverUsedPreferenceSummary() { 128dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez PackageInfo app = 129dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez new PackageInfo.Builder() 130dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setDaysSinceLastUse(AppsAsyncLoader.NEVER_USED) 131dd4f3f0854b75a6ee20587d0d000829f38433617Daniel Nishi .setDaysSinceFirstInstall(30) 132dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setPackageName(TEST_PACKAGE_NAME) 13319927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez .setSize(KILOBYTE) 134dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setLabel(TEST_PACKAGE_LABEL) 135dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .build(); 136dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 1379df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi preference.updateSummary(); 1389df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 1392e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 1402e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 14119927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("Not used in last year"); 14219927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 1439df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi } 1449df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 1459df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi @Test 1469df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi public void testUnknownLastUsePreferenceSummary() { 147dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez PackageInfo app = 148dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez new PackageInfo.Builder() 149dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setDaysSinceLastUse(AppsAsyncLoader.UNKNOWN_LAST_USE) 150dd4f3f0854b75a6ee20587d0d000829f38433617Daniel Nishi .setDaysSinceFirstInstall(30) 151dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setPackageName(TEST_PACKAGE_NAME) 15219927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez .setSize(KILOBYTE) 153dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setLabel(TEST_PACKAGE_LABEL) 154dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .build(); 155dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez 156dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 1579df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi preference.updateSummary(); 1589df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 1592e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 1602e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 16119927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("Not sure when last used"); 16219927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 1639df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi } 1649df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 1659df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi @Test 1669df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi public void testSizeSummary() { 167dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez PackageInfo app = 168dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez new PackageInfo.Builder() 169dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setDaysSinceLastUse(30) 170dd4f3f0854b75a6ee20587d0d000829f38433617Daniel Nishi .setDaysSinceFirstInstall(30) 171dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setPackageName(TEST_PACKAGE_NAME) 17219927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez .setSize(HUNDRED_BYTES) 173dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .setLabel(TEST_PACKAGE_LABEL) 174dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez .build(); 175dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez 176dee882c960b4db9bae9f2c9144b84c6ba001a051Salvador Martinez AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 1779df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi preference.updateSummary(); 1789df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi 1792e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 1802e95e842919a07037094742b9b8c70fbd8be2d2eMatthew Fritze assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 18119927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getSummary().toString()).isEqualTo("30 days ago"); 18219927f56b15a4cb8820f6bf9189b17799e08a3f4Salvador Martinez assertThat(preference.getItemSize()).isEqualTo(HUNDRED_BYTE_STRING); 1839df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi } 1849df16b0531a5d16aee3731628af7a6580966e70bDaniel Nishi} 185