• 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.slices;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import android.net.Uri;
22 
23 import com.android.settings.testutils.SettingsRobolectricTestRunner;
24 
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 
28 @RunWith(SettingsRobolectricTestRunner.class)
29 public class SliceDataTest {
30 
31     private final String KEY = "KEY";
32     private final String TITLE = "title";
33     private final String SUMMARY = "summary";
34     private final String SCREEN_TITLE = "screen title";
35     private final String KEYWORDS = "a, b, c";
36     private final String FRAGMENT_NAME = "fragment name";
37     private final int ICON = 1234; // I declare a thumb war
38     private final Uri URI = Uri.parse("content://com.android.settings.slices/test");
39     private final String PREF_CONTROLLER = "com.android.settings.slices.tester";
40     private final int SLICE_TYPE = SliceData.SliceType.SWITCH;
41     private final boolean IS_PLATFORM_DEFINED = true;
42 
43     @Test
testBuilder_buildsMatchingObject()44     public void testBuilder_buildsMatchingObject() {
45         SliceData.Builder builder = new SliceData.Builder()
46                 .setKey(KEY)
47                 .setTitle(TITLE)
48                 .setSummary(SUMMARY)
49                 .setScreenTitle(SCREEN_TITLE)
50                 .setKeywords(KEYWORDS)
51                 .setIcon(ICON)
52                 .setFragmentName(FRAGMENT_NAME)
53                 .setUri(URI)
54                 .setPreferenceControllerClassName(PREF_CONTROLLER)
55                 .setSliceType(SLICE_TYPE)
56                 .setPlatformDefined(IS_PLATFORM_DEFINED);
57 
58         SliceData data = builder.build();
59 
60         assertThat(data.getKey()).isEqualTo(KEY);
61         assertThat(data.getTitle()).isEqualTo(TITLE);
62         assertThat(data.getSummary()).isEqualTo(SUMMARY);
63         assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
64         assertThat(data.getKeywords()).isEqualTo(KEYWORDS);
65         assertThat(data.getIconResource()).isEqualTo(ICON);
66         assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
67         assertThat(data.getUri()).isEqualTo(URI);
68         assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
69         assertThat(data.getSliceType()).isEqualTo(SLICE_TYPE);
70         assertThat(data.isPlatformDefined()).isEqualTo(IS_PLATFORM_DEFINED);
71     }
72 
73     @Test(expected = SliceData.InvalidSliceDataException.class)
testBuilder_noKey_throwsIllegalStateException()74     public void testBuilder_noKey_throwsIllegalStateException() {
75         new SliceData.Builder()
76                 .setTitle(TITLE)
77                 .setSummary(SUMMARY)
78                 .setScreenTitle(SCREEN_TITLE)
79                 .setIcon(ICON)
80                 .setFragmentName(FRAGMENT_NAME)
81                 .setUri(URI)
82                 .setPreferenceControllerClassName(PREF_CONTROLLER)
83                 .build();
84     }
85 
86     @Test(expected = SliceData.InvalidSliceDataException.class)
testBuilder_noTitle_throwsIllegalStateException()87     public void testBuilder_noTitle_throwsIllegalStateException() {
88         new SliceData.Builder()
89                 .setKey(KEY)
90                 .setSummary(SUMMARY)
91                 .setScreenTitle(SCREEN_TITLE)
92                 .setIcon(ICON)
93                 .setFragmentName(FRAGMENT_NAME)
94                 .setUri(URI)
95                 .setPreferenceControllerClassName(PREF_CONTROLLER)
96                 .build();
97     }
98 
99     @Test(expected = SliceData.InvalidSliceDataException.class)
testBuilder_noFragment_throwsIllegalStateException()100     public void testBuilder_noFragment_throwsIllegalStateException() {
101         new SliceData.Builder()
102                 .setKey(KEY)
103                 .setFragmentName(FRAGMENT_NAME)
104                 .setSummary(SUMMARY)
105                 .setScreenTitle(SCREEN_TITLE)
106                 .setIcon(ICON)
107                 .setUri(URI)
108                 .setPreferenceControllerClassName(PREF_CONTROLLER)
109                 .build();
110     }
111 
112     @Test(expected = SliceData.InvalidSliceDataException.class)
testBuilder_noPrefController_throwsIllegalStateException()113     public void testBuilder_noPrefController_throwsIllegalStateException() {
114         new SliceData.Builder()
115                 .setKey(KEY)
116                 .setTitle(TITLE)
117                 .setSummary(SUMMARY)
118                 .setScreenTitle(SCREEN_TITLE)
119                 .setIcon(ICON)
120                 .setUri(URI)
121                 .setFragmentName(FRAGMENT_NAME)
122                 .build();
123     }
124 
125     @Test
testBuilder_noSubtitle_buildsMatchingObject()126     public void testBuilder_noSubtitle_buildsMatchingObject() {
127         SliceData.Builder builder = new SliceData.Builder()
128                 .setKey(KEY)
129                 .setTitle(TITLE)
130                 .setScreenTitle(SCREEN_TITLE)
131                 .setIcon(ICON)
132                 .setFragmentName(FRAGMENT_NAME)
133                 .setUri(URI)
134                 .setPreferenceControllerClassName(PREF_CONTROLLER);
135 
136         SliceData data = builder.build();
137 
138         assertThat(data.getKey()).isEqualTo(KEY);
139         assertThat(data.getTitle()).isEqualTo(TITLE);
140         assertThat(data.getSummary()).isNull();
141         assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
142         assertThat(data.getIconResource()).isEqualTo(ICON);
143         assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
144         assertThat(data.getUri()).isEqualTo(URI);
145         assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
146     }
147 
148     @Test
testBuilder_noScreenTitle_buildsMatchingObject()149     public void testBuilder_noScreenTitle_buildsMatchingObject() {
150         SliceData.Builder builder = new SliceData.Builder()
151                 .setKey(KEY)
152                 .setTitle(TITLE)
153                 .setSummary(SUMMARY)
154                 .setIcon(ICON)
155                 .setFragmentName(FRAGMENT_NAME)
156                 .setUri(URI)
157                 .setPreferenceControllerClassName(PREF_CONTROLLER);
158 
159         SliceData data = builder.build();
160 
161         assertThat(data.getKey()).isEqualTo(KEY);
162         assertThat(data.getTitle()).isEqualTo(TITLE);
163         assertThat(data.getSummary()).isEqualTo(SUMMARY);
164         assertThat(data.getScreenTitle()).isNull();
165         assertThat(data.getIconResource()).isEqualTo(ICON);
166         assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
167         assertThat(data.getUri()).isEqualTo(URI);
168         assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
169     }
170 
171     @Test
testBuilder_noIcon_buildsMatchingObject()172     public void testBuilder_noIcon_buildsMatchingObject() {
173         SliceData.Builder builder = new SliceData.Builder()
174                 .setKey(KEY)
175                 .setTitle(TITLE)
176                 .setSummary(SUMMARY)
177                 .setScreenTitle(SCREEN_TITLE)
178                 .setFragmentName(FRAGMENT_NAME)
179                 .setUri(URI)
180                 .setPreferenceControllerClassName(PREF_CONTROLLER);
181 
182         SliceData data = builder.build();
183 
184         assertThat(data.getKey()).isEqualTo(KEY);
185         assertThat(data.getTitle()).isEqualTo(TITLE);
186         assertThat(data.getSummary()).isEqualTo(SUMMARY);
187         assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
188         assertThat(data.getIconResource()).isEqualTo(0);
189         assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
190         assertThat(data.getUri()).isEqualTo(URI);
191         assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
192     }
193 
194     @Test
testBuilder_noUri_buildsMatchingObject()195     public void testBuilder_noUri_buildsMatchingObject() {
196         SliceData.Builder builder = new SliceData.Builder()
197                 .setKey(KEY)
198                 .setTitle(TITLE)
199                 .setSummary(SUMMARY)
200                 .setScreenTitle(SCREEN_TITLE)
201                 .setIcon(ICON)
202                 .setFragmentName(FRAGMENT_NAME)
203                 .setUri(null)
204                 .setPreferenceControllerClassName(PREF_CONTROLLER);
205 
206         SliceData data = builder.build();
207 
208         assertThat(data.getKey()).isEqualTo(KEY);
209         assertThat(data.getTitle()).isEqualTo(TITLE);
210         assertThat(data.getSummary()).isEqualTo(SUMMARY);
211         assertThat(data.getScreenTitle()).isEqualTo(SCREEN_TITLE);
212         assertThat(data.getIconResource()).isEqualTo(ICON);
213         assertThat(data.getFragmentClassName()).isEqualTo(FRAGMENT_NAME);
214         assertThat(data.getUri()).isNull();
215         assertThat(data.getPreferenceController()).isEqualTo(PREF_CONTROLLER);
216     }
217 
218     @Test
testEquality_identicalObjects()219     public void testEquality_identicalObjects() {
220         SliceData.Builder builder = new SliceData.Builder()
221                 .setKey(KEY)
222                 .setTitle(TITLE)
223                 .setSummary(SUMMARY)
224                 .setScreenTitle(SCREEN_TITLE)
225                 .setIcon(ICON)
226                 .setFragmentName(FRAGMENT_NAME)
227                 .setUri(URI)
228                 .setPreferenceControllerClassName(PREF_CONTROLLER);
229 
230         SliceData dataOne = builder.build();
231         SliceData dataTwo = builder.build();
232 
233         assertThat(dataOne.hashCode()).isEqualTo(dataTwo.hashCode());
234         assertThat(dataOne).isEqualTo(dataTwo);
235     }
236 
237     @Test
testEquality_matchingKey_EqualObjects()238     public void testEquality_matchingKey_EqualObjects() {
239         SliceData.Builder builder = new SliceData.Builder()
240                 .setKey(KEY)
241                 .setTitle(TITLE)
242                 .setSummary(SUMMARY)
243                 .setScreenTitle(SCREEN_TITLE)
244                 .setIcon(ICON)
245                 .setFragmentName(FRAGMENT_NAME)
246                 .setUri(URI)
247                 .setPreferenceControllerClassName(PREF_CONTROLLER);
248 
249         SliceData dataOne = builder.build();
250 
251         builder.setTitle(TITLE + " diff")
252                 .setSummary(SUMMARY + " diff")
253                 .setScreenTitle(SCREEN_TITLE + " diff")
254                 .setIcon(ICON + 1)
255                 .setFragmentName(FRAGMENT_NAME + " diff")
256                 .setUri(URI)
257                 .setPreferenceControllerClassName(PREF_CONTROLLER + " diff");
258 
259         SliceData dataTwo = builder.build();
260 
261         assertThat(dataOne.hashCode()).isEqualTo(dataTwo.hashCode());
262         assertThat(dataOne).isEqualTo(dataTwo);
263     }
264 
265     @Test
testEquality_differentKey_differentObjects()266     public void testEquality_differentKey_differentObjects() {
267         SliceData.Builder builder = new SliceData.Builder()
268                 .setKey(KEY)
269                 .setTitle(TITLE)
270                 .setSummary(SUMMARY)
271                 .setScreenTitle(SCREEN_TITLE)
272                 .setIcon(ICON)
273                 .setFragmentName(FRAGMENT_NAME)
274                 .setUri(URI)
275                 .setPreferenceControllerClassName(PREF_CONTROLLER);
276 
277         SliceData dataOne = builder.build();
278 
279         builder.setKey("not key");
280         SliceData dataTwo = builder.build();
281 
282         assertThat(dataOne.hashCode()).isNotEqualTo(dataTwo.hashCode());
283         assertThat(dataOne).isNotEqualTo(dataTwo);
284     }
285 }
286