1226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi/* 2226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * Copyright (C) 2017 The Android Open Source Project 3226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * 4226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * use this file except in compliance with the License. You may obtain a copy of 6226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * the License at 7226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * 8226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * http://www.apache.org/licenses/LICENSE-2.0 9226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * 10226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * Unless required by applicable law or agreed to in writing, software 11226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * License for the specific language governing permissions and limitations under 14226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi * the License. 15226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi */ 16226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 17226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishipackage com.android.storagemanager.deletionhelper; 18226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 19226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport static com.google.common.truth.Truth.assertThat; 20226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 21226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport static org.mockito.Mockito.mock; 22226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport static org.mockito.Mockito.spy; 23226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport static org.mockito.Mockito.when; 24226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 25226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport android.content.Context; 26226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport android.graphics.Bitmap; 27226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport android.graphics.drawable.BitmapDrawable; 28226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport android.support.v7.preference.PreferenceManager; 29226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 30226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport com.android.storagemanager.testing.StorageManagerRobolectricTestRunner; 31226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport com.android.storagemanager.testing.TestingConstants; 32226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport com.android.storagemanager.utils.IconProvider; 33226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 34226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.junit.Before; 35226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.junit.Rule; 36226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.junit.Test; 37226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.junit.rules.TemporaryFolder; 38226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.junit.runner.RunWith; 39226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.mockito.Mock; 40226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.mockito.MockitoAnnotations; 41226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.robolectric.RuntimeEnvironment; 42226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport org.robolectric.annotation.Config; 43226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 44226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishiimport java.io.File; 45226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 46226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi@RunWith(StorageManagerRobolectricTestRunner.class) 47226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi@Config(manifest = TestingConstants.MANIFEST, sdk = TestingConstants.SDK_VERSION) 48226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishipublic class DownloadsDeletionPreferenceGroupTest { 49226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); 50226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 51226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi @Mock private IconProvider mIconProvider; 52226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 53226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi private Context mContext; 54226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi private DownloadsDeletionPreferenceGroup mGroup; 55226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi private DownloadsDeletionType mType; 56226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi private File mTempDir; 57226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 58226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi @Before 59226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi public void setUp() throws Exception { 60226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi MockitoAnnotations.initMocks(this); 61226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mContext = RuntimeEnvironment.application; 62226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 63226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mGroup = spy(new DownloadsDeletionPreferenceGroup(mContext)); 64226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi final PreferenceManager preferenceManager = mock(PreferenceManager.class); 65226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi when(mGroup.getPreferenceManager()).thenReturn(preferenceManager); 66226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mType = new DownloadsDeletionType(mContext, new String[0]); 67226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 68226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mTempDir = temporaryFolder.newFolder(); 69226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 70226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mGroup.registerDeletionService(mType); 71226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mGroup.injectIconProvider(mIconProvider); 72226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 73226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 74226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi @Test 75226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi public void thumbnailsArePopulated() { 76226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi FetchDownloadsLoader.DownloadsResult result = new FetchDownloadsLoader.DownloadsResult(); 77226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi File imageFile = new File(mTempDir, "test.bmp"); 78226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi result.files.add(imageFile); 79226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi result.thumbnails.put(imageFile, Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)); 80226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi File nonImageFile = new File(mTempDir, "test.txt"); 81226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi result.files.add(nonImageFile); 82226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 83226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi mType.onLoadFinished(null, result); 84226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi 85226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi assertThat(mGroup.getPreferenceCount()).isEqualTo(2); 86226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi assertThat(mGroup.getPreference(0).getIcon() instanceof BitmapDrawable).isTrue(); 87226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi assertThat(mGroup.getPreference(1).getIcon() instanceof BitmapDrawable).isFalse(); 88226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi } 89226b81d78ef325e18e6cb202856040d34cda0058Daniel Nishi} 90