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