• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 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.documentsui.sidebar;
18 
19 import static junit.framework.Assert.assertTrue;
20 
21 import static org.junit.Assert.assertEquals;
22 
23 import android.content.pm.ResolveInfo;
24 
25 import androidx.test.filters.MediumTest;
26 import androidx.test.platform.app.InstrumentationRegistry;
27 import androidx.test.runner.AndroidJUnit4;
28 
29 import com.android.documentsui.base.RootInfo;
30 import com.android.documentsui.base.State;
31 import com.android.documentsui.base.UserId;
32 import com.android.documentsui.testing.TestProvidersAccess;
33 import com.android.documentsui.testing.TestResolveInfo;
34 
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.junit.runner.RunWith;
38 
39 import java.util.ArrayList;
40 import java.util.Collections;
41 import java.util.List;
42 
43 /**
44  * An unit test for RootsFragment.
45  */
46 @RunWith(AndroidJUnit4.class)
47 @MediumTest
48 public class RootsFragmentTest {
49 
50     private RootsFragment mRootsFragment;
51 
52     private static final String[] EXPECTED_SORTED_RESULT = {
53             TestProvidersAccess.RECENTS.title,
54             TestProvidersAccess.IMAGE.title,
55             TestProvidersAccess.VIDEO.title,
56             TestProvidersAccess.AUDIO.title,
57             TestProvidersAccess.DOCUMENT.title,
58             TestProvidersAccess.DOWNLOADS.title,
59             "" /* SpacerItem */,
60             TestProvidersAccess.EXTERNALSTORAGE.title,
61             TestProvidersAccess.HAMMY.title,
62             "" /* SpacerItem */,
63             TestProvidersAccess.INSPECTOR.title,
64             TestProvidersAccess.PICKLES.title};
65 
66     @Before
setUp()67     public void setUp() {
68         mRootsFragment = new RootsFragment();
69     }
70 
71     @Test
testSortLoadResult_WithCorrectOrder()72     public void testSortLoadResult_WithCorrectOrder() {
73         List<Item> items = mRootsFragment.sortLoadResult(
74                 InstrumentationRegistry.getInstrumentation().getTargetContext().getResources(),
75                 new State(),
76                 createFakeRootInfoList(),
77                 null /* excludePackage */, null /* handlerAppIntent */, new TestProvidersAccess(),
78                 UserId.DEFAULT_USER,
79                 Collections.singletonList(UserId.DEFAULT_USER),
80                 /* maybeShowBadge */ false);
81         assertTrue(assertSortedResult(items));
82     }
83 
84     @Test
testItemComparator_WithCorrectOrder()85     public void testItemComparator_WithCorrectOrder() {
86         final String testPackageName = "com.test1";
87         final String errorTestPackageName = "com.test2";
88         final RootsFragment.ItemComparator comp = new RootsFragment.ItemComparator(testPackageName);
89         final List<Item> rootList = new ArrayList<>();
90         rootList.add(new RootItem(TestProvidersAccess.HAMMY, null /* actionHandler */,
91                 errorTestPackageName, /* maybeShowBadge= */ false));
92         rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, null /* actionHandler */,
93                 errorTestPackageName, /* maybeShowBadge= */ false));
94         rootList.add(new RootItem(TestProvidersAccess.PICKLES, null /* actionHandler */,
95                 testPackageName, /* maybeShowBadge= */ false));
96         Collections.sort(rootList, comp);
97 
98         assertEquals(rootList.get(0).title, TestProvidersAccess.PICKLES.title);
99         assertEquals(rootList.get(1).title, TestProvidersAccess.HAMMY.title);
100         assertEquals(rootList.get(2).title, TestProvidersAccess.INSPECTOR.title);
101     }
102 
103     @Test
testItemComparator_differentItemTypes_WithCorrectOrder()104     public void testItemComparator_differentItemTypes_WithCorrectOrder() {
105         final String testPackageName = "com.test1";
106         final RootsFragment.ItemComparator comp = new RootsFragment.ItemComparator(testPackageName);
107         final List<Item> rootList = new ArrayList<>();
108         rootList.add(new RootItem(TestProvidersAccess.HAMMY, null /* actionHandler */,
109                 testPackageName, /* maybeShowBadge= */ false));
110 
111         final ResolveInfo info = TestResolveInfo.create();
112         info.activityInfo.packageName = testPackageName;
113 
114         rootList.add(new AppItem(info, TestProvidersAccess.PICKLES.title, UserId.DEFAULT_USER,
115                 null /* actionHandler */));
116         rootList.add(new RootAndAppItem(TestProvidersAccess.INSPECTOR, info,
117                 null /* actionHandler */, /* maybeShowBadge= */ false));
118 
119         Collections.sort(rootList, comp);
120 
121         assertEquals(rootList.get(0).title, TestProvidersAccess.HAMMY.title);
122         assertEquals(rootList.get(1).title, TestProvidersAccess.INSPECTOR.title);
123         assertEquals(rootList.get(2).title, TestProvidersAccess.PICKLES.title);
124     }
125 
assertSortedResult(List<Item> items)126     private boolean assertSortedResult(List<Item> items) {
127         for (int i = 0; i < items.size(); i++) {
128             Item item = items.get(i);
129             if (item instanceof RootItem) {
130                 assertEquals(EXPECTED_SORTED_RESULT[i], ((RootItem) item).root.title);
131             } else if (item instanceof SpacerItem) {
132                 assertTrue(EXPECTED_SORTED_RESULT[i].isEmpty());
133             } else {
134                 return false;
135             }
136         }
137         return true;
138     }
139 
createFakeRootInfoList()140     private List<RootInfo> createFakeRootInfoList() {
141         final List<RootInfo> fakeRootInfoList = new ArrayList<>();
142         fakeRootInfoList.add(TestProvidersAccess.PICKLES);
143         fakeRootInfoList.add(TestProvidersAccess.HAMMY);
144         fakeRootInfoList.add(TestProvidersAccess.INSPECTOR);
145         fakeRootInfoList.add(TestProvidersAccess.DOWNLOADS);
146         fakeRootInfoList.add(TestProvidersAccess.AUDIO);
147         fakeRootInfoList.add(TestProvidersAccess.VIDEO);
148         fakeRootInfoList.add(TestProvidersAccess.RECENTS);
149         fakeRootInfoList.add(TestProvidersAccess.IMAGE);
150         fakeRootInfoList.add(TestProvidersAccess.EXTERNALSTORAGE);
151         fakeRootInfoList.add(TestProvidersAccess.DOCUMENT);
152         return fakeRootInfoList;
153     }
154 }
155