• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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 
18 package com.android.settings.search;
19 
20 import android.content.Context;
21 
22 import android.util.ArrayMap;
23 import com.android.internal.hardware.AmbientDisplayConfiguration;
24 import com.android.settings.SettingsRobolectricTestRunner;
25 import com.android.settings.TestConfig;
26 import com.android.settings.core.PreferenceController;
27 import com.android.settings.display.AutoBrightnessPreferenceController;
28 import com.android.settings.gestures.DoubleTapPowerPreferenceController;
29 import com.android.settings.gestures.DoubleTapScreenPreferenceController;
30 import com.android.settings.gestures.DoubleTwistPreferenceController;
31 import com.android.settings.gestures.PickupGesturePreferenceController;
32 import com.android.settings.gestures.SwipeToNotificationPreferenceController;
33 import com.android.settings.search2.DatabaseIndexingUtils;
34 
35 import com.android.settings.search2.IntentPayload;
36 import com.android.settings.search2.ResultPayload;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.junit.runner.RunWith;
40 import org.mockito.Mock;
41 import org.mockito.MockitoAnnotations;
42 import org.robolectric.annotation.Config;
43 import org.robolectric.shadows.ShadowApplication;
44 
45 import java.util.Map;
46 
47 import static com.google.common.truth.Truth.assertThat;
48 
49 @RunWith(SettingsRobolectricTestRunner.class)
50 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
51 public class DatabaseIndexingUtilsTest {
52 
53     private Context mContext;
54     @Mock
55     private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
56 
57     @Before
setUp()58     public void setUp() {
59         MockitoAnnotations.initMocks(this);
60         mContext = ShadowApplication.getInstance().getApplicationContext();
61     }
62 
63     @Test
testGetPreferenceControllerUriMap_BadClassName_ReturnsNull()64     public void testGetPreferenceControllerUriMap_BadClassName_ReturnsNull() {
65         Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap("dummy", mContext);
66         assertThat(map).isNull();
67     }
68 
69     @Test
testGetPreferenceControllerUriMap_NullContext_ReturnsNull()70     public void testGetPreferenceControllerUriMap_NullContext_ReturnsNull() {
71         Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap("dummy", null);
72         assertThat(map).isNull();
73     }
74 
75     @Test
testGetPreferenceControllerUriMap_CompatibleClass_ReturnsValidMap()76     public void testGetPreferenceControllerUriMap_CompatibleClass_ReturnsValidMap() {
77         String className = "com.android.settings.DisplaySettings";
78 
79         Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap(className, mContext);
80         assertThat(map.get("auto_brightness"))
81                 .isInstanceOf(AutoBrightnessPreferenceController.class);
82     }
83 
84     @Test
testGetPayloadFromMap_NullMap_ReturnsNull()85     public void testGetPayloadFromMap_NullMap_ReturnsNull() {
86         ResultPayload payload = DatabaseIndexingUtils.getPayloadFromUriMap(null, "");
87         assertThat(payload).isNull();
88     }
89 
90     @Test
testGetPayloadFromMap_MatchingKey_ReturnsPayload()91     public void testGetPayloadFromMap_MatchingKey_ReturnsPayload() {
92         final String key = "key";
93         PreferenceController prefController = new PreferenceController(mContext) {
94             @Override
95             public boolean isAvailable() {
96                 return false;
97             }
98 
99             @Override
100             public String getPreferenceKey() {
101                 return key;
102             }
103 
104             @Override
105             public ResultPayload getResultPayload() {
106                 return new IntentPayload(null);
107             }
108         };
109         ArrayMap<String,PreferenceController> map = new ArrayMap<>();
110         map.put(key, prefController);
111 
112         ResultPayload payload = DatabaseIndexingUtils.getPayloadFromUriMap(map, key);
113         assertThat(payload).isInstanceOf(IntentPayload.class);
114     }
115 }