1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 * use this file except in compliance with the License. You may obtain a copy of 6 * the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 17package com.android.storagemanager.deletionhelper; 18 19import android.content.Context; 20import com.android.storagemanager.deletionhelper.AppsAsyncLoader.PackageInfo; 21import com.android.storagemanager.testing.TestingConstants; 22import org.junit.Before; 23import org.junit.Test; 24import org.junit.runner.RunWith; 25import org.mockito.MockitoAnnotations; 26import org.robolectric.RobolectricTestRunner; 27import org.robolectric.RuntimeEnvironment; 28import org.robolectric.annotation.Config; 29 30import static com.google.common.truth.Truth.assertThat; 31 32@RunWith(RobolectricTestRunner.class) 33@Config(manifest=TestingConstants.MANIFEST, sdk=TestingConstants.SDK_VERSION) 34public class AppDeletionPreferenceTest { 35 36 private static final String TEST_PACKAGE_LABEL = "App"; 37 private static final String TEST_PACKAGE_NAME = "com.package.mcpackageface"; 38 public static final long KILOBYTE = 1024L; 39 public static final long HUNDRED_BYTES = 100L; 40 public static final String KB_STRING = "1.00KB"; 41 public static final String HUNDRED_BYTE_STRING = "100B"; 42 private Context mContext; 43 44 @Before 45 public void setUp() throws Exception { 46 MockitoAnnotations.initMocks(this); 47 mContext = RuntimeEnvironment.application; 48 } 49 50 @Test 51 public void testPreferenceSummary() { 52 PackageInfo app = 53 new PackageInfo.Builder() 54 .setDaysSinceLastUse(30) 55 .setDaysSinceFirstInstall(30) 56 .setPackageName(TEST_PACKAGE_NAME) 57 .setSize(KILOBYTE) 58 .setLabel(TEST_PACKAGE_LABEL) 59 .build(); 60 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 61 preference.updateSummary(); 62 63 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 64 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 65 assertThat(preference.getSummary().toString()).isEqualTo("30 days ago"); 66 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 67 } 68 69 @Test 70 public void testTwoDayPreferenceSummary() { 71 PackageInfo app = 72 new PackageInfo.Builder() 73 .setDaysSinceLastUse(2) 74 .setDaysSinceFirstInstall(30) 75 .setPackageName(TEST_PACKAGE_NAME) 76 .setSize(KILOBYTE) 77 .setLabel(TEST_PACKAGE_LABEL) 78 .build(); 79 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 80 preference.updateSummary(); 81 82 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 83 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 84 assertThat(preference.getSummary().toString()).isEqualTo("2 days ago"); 85 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 86 } 87 88 @Test 89 public void testYesterdayPreferenceSummary() { 90 PackageInfo app = 91 new PackageInfo.Builder() 92 .setDaysSinceLastUse(1) 93 .setDaysSinceFirstInstall(30) 94 .setPackageName(TEST_PACKAGE_NAME) 95 .setSize(KILOBYTE) 96 .setLabel(TEST_PACKAGE_LABEL) 97 .build(); 98 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 99 preference.updateSummary(); 100 101 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 102 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 103 assertThat(preference.getSummary().toString()).isEqualTo("Yesterday"); 104 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 105 } 106 107 @Test 108 public void testTodayPreferenceSummary() { 109 PackageInfo app = 110 new PackageInfo.Builder() 111 .setDaysSinceLastUse(0) 112 .setDaysSinceFirstInstall(30) 113 .setPackageName(TEST_PACKAGE_NAME) 114 .setSize(KILOBYTE) 115 .setLabel(TEST_PACKAGE_LABEL) 116 .build(); 117 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 118 preference.updateSummary(); 119 120 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 121 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 122 assertThat(preference.getSummary().toString()).isEqualTo("Today"); 123 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 124 } 125 126 @Test 127 public void testNeverUsedPreferenceSummary() { 128 PackageInfo app = 129 new PackageInfo.Builder() 130 .setDaysSinceLastUse(AppsAsyncLoader.NEVER_USED) 131 .setDaysSinceFirstInstall(30) 132 .setPackageName(TEST_PACKAGE_NAME) 133 .setSize(KILOBYTE) 134 .setLabel(TEST_PACKAGE_LABEL) 135 .build(); 136 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 137 preference.updateSummary(); 138 139 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 140 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 141 assertThat(preference.getSummary().toString()).isEqualTo("Not used in last year"); 142 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 143 } 144 145 @Test 146 public void testUnknownLastUsePreferenceSummary() { 147 PackageInfo app = 148 new PackageInfo.Builder() 149 .setDaysSinceLastUse(AppsAsyncLoader.UNKNOWN_LAST_USE) 150 .setDaysSinceFirstInstall(30) 151 .setPackageName(TEST_PACKAGE_NAME) 152 .setSize(KILOBYTE) 153 .setLabel(TEST_PACKAGE_LABEL) 154 .build(); 155 156 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 157 preference.updateSummary(); 158 159 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 160 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 161 assertThat(preference.getSummary().toString()).isEqualTo("Not sure when last used"); 162 assertThat(preference.getItemSize()).isEqualTo(KB_STRING); 163 } 164 165 @Test 166 public void testSizeSummary() { 167 PackageInfo app = 168 new PackageInfo.Builder() 169 .setDaysSinceLastUse(30) 170 .setDaysSinceFirstInstall(30) 171 .setPackageName(TEST_PACKAGE_NAME) 172 .setSize(HUNDRED_BYTES) 173 .setLabel(TEST_PACKAGE_LABEL) 174 .build(); 175 176 AppDeletionPreference preference = new AppDeletionPreference(mContext, app); 177 preference.updateSummary(); 178 179 assertThat(preference.getPackageName()).isEqualTo(TEST_PACKAGE_NAME); 180 assertThat(preference.getTitle()).isEqualTo(TEST_PACKAGE_LABEL); 181 assertThat(preference.getSummary().toString()).isEqualTo("30 days ago"); 182 assertThat(preference.getItemSize()).isEqualTo(HUNDRED_BYTE_STRING); 183 } 184} 185