• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of 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,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.applications.manageapplications;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import static org.mockito.Mockito.mock;
22 
23 import android.content.pm.ApplicationInfo;
24 
25 import androidx.test.filters.SmallTest;
26 import androidx.test.runner.AndroidJUnit4;
27 
28 import com.android.settingslib.applications.AppUtils;
29 import com.android.settingslib.applications.ApplicationsState;
30 import com.android.settingslib.applications.ApplicationsState.AppFilter;
31 import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
32 import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
33 
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 
37 import java.lang.reflect.Field;
38 
39 @SmallTest
40 @RunWith(AndroidJUnit4.class)
41 public class ManageApplicationsUnitTest {
42     @Test
getCompositeFilter_filtersVolumeForAudio()43     public void getCompositeFilter_filtersVolumeForAudio() {
44         AppFilter filter =
45                 ManageApplications.getCompositeFilter(
46                         ManageApplications.LIST_TYPE_STORAGE,
47                         ManageApplications.STORAGE_TYPE_MUSIC,
48                         "uuid");
49         final ApplicationInfo info = new ApplicationInfo();
50         info.volumeUuid = "uuid";
51         info.category = ApplicationInfo.CATEGORY_AUDIO;
52         final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
53         appEntry.info = info;
54 
55         assertThat(filter.filterApp(appEntry)).isTrue();
56     }
57 
58     @Test
getCompositeFilter_filtersVolumeForVideo()59     public void getCompositeFilter_filtersVolumeForVideo() {
60         AppFilter filter =
61                 ManageApplications.getCompositeFilter(
62                         ManageApplications.LIST_TYPE_MOVIES,
63                         ManageApplications.STORAGE_TYPE_DEFAULT,
64                         "uuid");
65         final ApplicationInfo info = new ApplicationInfo();
66         info.volumeUuid = "uuid";
67         info.category = ApplicationInfo.CATEGORY_VIDEO;
68         final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
69         appEntry.info = info;
70 
71         assertThat(filter.filterApp(appEntry)).isTrue();
72     }
73 
74     @Test
getCompositeFilter_filtersVolumeForGames()75     public void getCompositeFilter_filtersVolumeForGames() {
76         ApplicationsState.AppFilter filter =
77                 ManageApplications.getCompositeFilter(
78                         ManageApplications.LIST_TYPE_GAMES,
79                         ManageApplications.STORAGE_TYPE_DEFAULT,
80                         "uuid");
81         final ApplicationInfo info = new ApplicationInfo();
82         info.volumeUuid = "uuid";
83         info.category = ApplicationInfo.CATEGORY_GAME;
84         final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
85         appEntry.info = info;
86 
87         assertThat(filter.filterApp(appEntry)).isTrue();
88     }
89 
90     @Test
getCompositeFilter_isEmptyNormally()91     public void getCompositeFilter_isEmptyNormally() {
92         ApplicationsState.AppFilter filter =
93                 ManageApplications.getCompositeFilter(
94                         ManageApplications.LIST_TYPE_MAIN,
95                         ManageApplications.STORAGE_TYPE_DEFAULT,
96                         "uuid");
97         assertThat(filter).isNull();
98     }
99 
100     @Test
getCompositeFilter_worksWithInstantApps()101     public void getCompositeFilter_worksWithInstantApps() throws Exception {
102         Field field = AppUtils.class.getDeclaredField("sInstantAppDataProvider");
103         field.setAccessible(true);
104         field.set(AppUtils.class, (InstantAppDataProvider) (i -> true));
105 
106         AppFilter filter =
107                 ManageApplications.getCompositeFilter(
108                         ManageApplications.LIST_TYPE_STORAGE,
109                         ManageApplications.STORAGE_TYPE_MUSIC,
110                         "uuid");
111         AppFilter composedFilter = new CompoundFilter(ApplicationsState.FILTER_INSTANT, filter);
112 
113         final ApplicationInfo info = new ApplicationInfo();
114         info.volumeUuid = "uuid";
115         info.category = ApplicationInfo.CATEGORY_AUDIO;
116         info.privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT;
117         final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
118         appEntry.info = info;
119 
120         assertThat(composedFilter.filterApp(appEntry)).isTrue();
121     }
122 
123     @Test
getCompositeFilter_worksForLegacyPrivateSettings()124     public void getCompositeFilter_worksForLegacyPrivateSettings() throws Exception {
125         ApplicationsState.AppFilter filter =
126                 ManageApplications.getCompositeFilter(
127                         ManageApplications.LIST_TYPE_STORAGE,
128                         ManageApplications.STORAGE_TYPE_LEGACY,
129                         "uuid");
130         final ApplicationInfo info = new ApplicationInfo();
131         info.volumeUuid = "uuid";
132         info.category = ApplicationInfo.CATEGORY_GAME;
133         final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
134         appEntry.info = info;
135 
136         assertThat(filter.filterApp(appEntry)).isTrue();
137     }
138 }
139