1 package org.robolectric.res.android; 2 3 import static com.google.common.truth.Truth.assertThat; 4 import static org.robolectric.res.android.ResTable_config.DENSITY_ANY; 5 import static org.robolectric.res.android.ResTable_config.DENSITY_HIGH; 6 import static org.robolectric.res.android.ResTable_config.DENSITY_LOW; 7 import static org.robolectric.res.android.ResTable_config.DENSITY_MEDIUM; 8 import static org.robolectric.res.android.ResTable_config.DENSITY_NONE; 9 import static org.robolectric.res.android.ResTable_config.DENSITY_TV; 10 import static org.robolectric.res.android.ResTable_config.DENSITY_XHIGH; 11 import static org.robolectric.res.android.ResTable_config.DENSITY_XXHIGH; 12 import static org.robolectric.res.android.ResTable_config.DENSITY_XXXHIGH; 13 import static org.robolectric.res.android.ResTable_config.KEYBOARD_12KEY; 14 import static org.robolectric.res.android.ResTable_config.KEYBOARD_NOKEYS; 15 import static org.robolectric.res.android.ResTable_config.KEYBOARD_QWERTY; 16 import static org.robolectric.res.android.ResTable_config.KEYSHIDDEN_NO; 17 import static org.robolectric.res.android.ResTable_config.KEYSHIDDEN_SOFT; 18 import static org.robolectric.res.android.ResTable_config.KEYSHIDDEN_YES; 19 import static org.robolectric.res.android.ResTable_config.LAYOUTDIR_ANY; 20 import static org.robolectric.res.android.ResTable_config.LAYOUTDIR_LTR; 21 import static org.robolectric.res.android.ResTable_config.LAYOUTDIR_RTL; 22 import static org.robolectric.res.android.ResTable_config.NAVHIDDEN_NO; 23 import static org.robolectric.res.android.ResTable_config.NAVHIDDEN_YES; 24 import static org.robolectric.res.android.ResTable_config.NAVIGATION_DPAD; 25 import static org.robolectric.res.android.ResTable_config.NAVIGATION_NONAV; 26 import static org.robolectric.res.android.ResTable_config.NAVIGATION_TRACKBALL; 27 import static org.robolectric.res.android.ResTable_config.NAVIGATION_WHEEL; 28 import static org.robolectric.res.android.ResTable_config.ORIENTATION_LAND; 29 import static org.robolectric.res.android.ResTable_config.ORIENTATION_PORT; 30 import static org.robolectric.res.android.ResTable_config.ORIENTATION_SQUARE; 31 import static org.robolectric.res.android.ResTable_config.SCREENLONG_NO; 32 import static org.robolectric.res.android.ResTable_config.SCREENROUND_NO; 33 import static org.robolectric.res.android.ResTable_config.SCREENROUND_YES; 34 import static org.robolectric.res.android.ResTable_config.SCREENSIZE_LARGE; 35 import static org.robolectric.res.android.ResTable_config.SCREENSIZE_NORMAL; 36 import static org.robolectric.res.android.ResTable_config.SCREENSIZE_SMALL; 37 import static org.robolectric.res.android.ResTable_config.SCREENSIZE_XLARGE; 38 import static org.robolectric.res.android.ResTable_config.TOUCHSCREEN_FINGER; 39 import static org.robolectric.res.android.ResTable_config.TOUCHSCREEN_NOTOUCH; 40 import static org.robolectric.res.android.ResTable_config.TOUCHSCREEN_STYLUS; 41 import static org.robolectric.res.android.ResTable_config.UI_MODE_NIGHT_NO; 42 import static org.robolectric.res.android.ResTable_config.UI_MODE_NIGHT_YES; 43 import static org.robolectric.res.android.ResTable_config.UI_MODE_TYPE_APPLIANCE; 44 import static org.robolectric.res.android.ResTable_config.UI_MODE_TYPE_CAR; 45 import static org.robolectric.res.android.ResTable_config.UI_MODE_TYPE_TELEVISION; 46 import static org.robolectric.res.android.ResTable_config.UI_MODE_TYPE_WATCH; 47 48 import org.junit.Test; 49 import org.junit.runner.RunWith; 50 import org.junit.runners.JUnit4; 51 52 @RunWith(JUnit4.class) 53 public class ConfigDescriptionTest { 54 55 @Test 56 public void parse_mcc() { 57 ResTable_config config = new ResTable_config(); 58 ConfigDescription.parse("mcc310", config); 59 assertThat(config.mcc).isEqualTo(310); 60 } 61 62 @Test 63 public void parse_mcc_upperCase() { 64 ResTable_config config = new ResTable_config(); 65 ConfigDescription.parse("MCC310", config); 66 assertThat(config.mcc).isEqualTo(310); 67 } 68 69 @Test 70 public void parse_mcc_mnc_upperCase() { 71 ResTable_config config = new ResTable_config(); 72 ConfigDescription.parse("mcc310-mnc004", config); 73 assertThat(config.mcc).isEqualTo(310); 74 assertThat(config.mnc).isEqualTo(4); 75 } 76 77 @Test 78 public void parse_layoutDirection_leftToRight() { 79 ResTable_config config = new ResTable_config(); 80 ConfigDescription.parse("ldltr", config); 81 assertThat(config.screenLayout).isEqualTo(LAYOUTDIR_LTR); 82 } 83 84 @Test 85 public void parse_layoutDirection_rightToLeft() { 86 ResTable_config config = new ResTable_config(); 87 ConfigDescription.parse("ldrtl", config); 88 assertThat(config.screenLayout).isEqualTo(LAYOUTDIR_RTL); 89 } 90 91 @Test 92 public void parse_layoutDirection_any() { 93 ResTable_config config = new ResTable_config(); 94 ConfigDescription.parse("any", config); 95 assertThat(config.screenLayout).isEqualTo(LAYOUTDIR_ANY); 96 } 97 98 @Test 99 public void parse_screenSize_small() { 100 ResTable_config config = new ResTable_config(); 101 ConfigDescription.parse("small", config); 102 assertThat(config.screenLayout).isEqualTo(SCREENSIZE_SMALL); 103 } 104 105 @Test 106 public void parse_screenSize_normal() { 107 ResTable_config config = new ResTable_config(); 108 ConfigDescription.parse("normal", config); 109 assertThat(config.screenLayout).isEqualTo(SCREENSIZE_NORMAL); 110 } 111 112 @Test 113 public void parse_screenSize_large() { 114 ResTable_config config = new ResTable_config(); 115 ConfigDescription.parse("large", config); 116 assertThat(config.screenLayout).isEqualTo(SCREENSIZE_LARGE); 117 } 118 119 @Test 120 public void parse_screenSize_xlarge() { 121 ResTable_config config = new ResTable_config(); 122 ConfigDescription.parse("xlarge", config); 123 assertThat(config.screenLayout).isEqualTo(SCREENSIZE_XLARGE); 124 } 125 126 @Test 127 public void parse_smallestScreenWidth() { 128 ResTable_config config = new ResTable_config(); 129 ConfigDescription.parse("sw320dp", config); 130 assertThat(config.smallestScreenWidthDp).isEqualTo(320); 131 } 132 133 @Test public void getScreenWidth() { 134 ResTable_config config = new ResTable_config(); 135 ConfigDescription.parse("w480dp", config); 136 assertThat(config.screenWidthDp).isEqualTo(480); 137 } 138 139 @Test public void getScreenHeight() { 140 ResTable_config config = new ResTable_config(); 141 ConfigDescription.parse("h1024dp", config); 142 assertThat(config.screenHeightDp).isEqualTo(1024); 143 } 144 145 @Test public void parse_screenLayoutLong_notlong() { 146 ResTable_config config = new ResTable_config(); 147 ConfigDescription.parse("notlong", config); 148 assertThat(config.screenLayout).isEqualTo(SCREENLONG_NO); 149 } 150 151 @Test public void parse_screenRound_round() { 152 ResTable_config config = new ResTable_config(); 153 ConfigDescription.parse("round", config); 154 assertThat(config.screenLayout2).isEqualTo((byte) SCREENROUND_YES); 155 } 156 157 @Test public void parse_screenRound_notround() { 158 ResTable_config config = new ResTable_config(); 159 ConfigDescription.parse("notround", config); 160 assertThat(config.screenLayout2).isEqualTo((byte) SCREENROUND_NO); 161 } 162 163 @Test public void parse_orientation_port() { 164 ResTable_config config = new ResTable_config(); 165 ConfigDescription.parse("port", config); 166 assertThat(config.orientation).isEqualTo(ORIENTATION_PORT); 167 } 168 169 @Test public void parse_orientation_land() { 170 ResTable_config config = new ResTable_config(); 171 ConfigDescription.parse("land", config); 172 assertThat(config.orientation).isEqualTo(ORIENTATION_LAND); 173 } 174 175 @Test public void parse_orientation_square() { 176 ResTable_config config = new ResTable_config(); 177 ConfigDescription.parse("square", config); 178 assertThat(config.orientation).isEqualTo(ORIENTATION_SQUARE); 179 } 180 181 @Test public void parse_uiModeType_car() { 182 ResTable_config config = new ResTable_config(); 183 ConfigDescription.parse("car", config); 184 assertThat(config.uiMode).isEqualTo(UI_MODE_TYPE_CAR); 185 } 186 187 @Test public void parse_uiModeType_television() { 188 ResTable_config config = new ResTable_config(); 189 ConfigDescription.parse("television", config); 190 assertThat(config.uiMode).isEqualTo(UI_MODE_TYPE_TELEVISION); 191 } 192 193 @Test public void parse_uiModeType_appliance() { 194 ResTable_config config = new ResTable_config(); 195 ConfigDescription.parse("appliance", config); 196 assertThat(config.uiMode).isEqualTo(UI_MODE_TYPE_APPLIANCE); 197 } 198 199 @Test public void parse_uiModeType_watch() { 200 ResTable_config config = new ResTable_config(); 201 ConfigDescription.parse("watch", config); 202 assertThat(config.uiMode).isEqualTo(UI_MODE_TYPE_WATCH); 203 } 204 205 @Test public void parse_uiModeNight_night() { 206 ResTable_config config = new ResTable_config(); 207 ConfigDescription.parse("night", config); 208 assertThat(config.uiMode).isEqualTo(UI_MODE_NIGHT_YES); 209 } 210 211 @Test public void parse_uiModeNight_notnight() { 212 ResTable_config config = new ResTable_config(); 213 ConfigDescription.parse("notnight", config); 214 assertThat(config.uiMode).isEqualTo(UI_MODE_NIGHT_NO); 215 } 216 217 @Test public void parse_density_any() { 218 ResTable_config config = new ResTable_config(); 219 ConfigDescription.parse("anydpi", config); 220 assertThat(config.density).isEqualTo(DENSITY_ANY); 221 } 222 223 @Test public void parse_density_nodpi() { 224 ResTable_config config = new ResTable_config(); 225 ConfigDescription.parse("nodpi", config); 226 assertThat(config.density).isEqualTo(DENSITY_NONE); 227 } 228 229 @Test public void parse_density_ldpi() { 230 ResTable_config config = new ResTable_config(); 231 ConfigDescription.parse("ldpi", config); 232 assertThat(config.density).isEqualTo(DENSITY_LOW); 233 } 234 235 @Test public void parse_density_mdpi() { 236 ResTable_config config = new ResTable_config(); 237 ConfigDescription.parse("mdpi", config); 238 assertThat(config.density).isEqualTo(DENSITY_MEDIUM); 239 } 240 241 @Test public void parse_density_tvdpi() { 242 ResTable_config config = new ResTable_config(); 243 ConfigDescription.parse("tvdpi", config); 244 assertThat(config.density).isEqualTo(DENSITY_TV); 245 } 246 247 @Test public void parse_density_hdpi() { 248 ResTable_config config = new ResTable_config(); 249 ConfigDescription.parse("hdpi", config); 250 assertThat(config.density).isEqualTo(DENSITY_HIGH); 251 } 252 253 @Test public void parse_density_xhdpi() { 254 ResTable_config config = new ResTable_config(); 255 ConfigDescription.parse("xhdpi", config); 256 assertThat(config.density).isEqualTo(DENSITY_XHIGH); 257 } 258 259 @Test public void parse_density_xxhdpi() { 260 ResTable_config config = new ResTable_config(); 261 ConfigDescription.parse("xxhdpi", config); 262 assertThat(config.density).isEqualTo(DENSITY_XXHIGH); 263 } 264 265 @Test public void parse_density_xxxhdpi() { 266 ResTable_config config = new ResTable_config(); 267 ConfigDescription.parse("xxxhdpi", config); 268 assertThat(config.density).isEqualTo(DENSITY_XXXHIGH); 269 } 270 271 @Test public void parsedensity_specificDpt() { 272 ResTable_config config = new ResTable_config(); 273 ConfigDescription.parse("720dpi", config); 274 assertThat(config.density).isEqualTo(720); 275 } 276 277 @Test public void parse_touchscreen_notouch() { 278 ResTable_config config = new ResTable_config(); 279 ConfigDescription.parse("notouch", config); 280 assertThat(config.touchscreen).isEqualTo(TOUCHSCREEN_NOTOUCH); 281 } 282 283 @Test public void parse_touchscreen_stylus() { 284 ResTable_config config = new ResTable_config(); 285 ConfigDescription.parse("stylus", config); 286 assertThat(config.touchscreen).isEqualTo(TOUCHSCREEN_STYLUS); 287 } 288 289 @Test public void parse_touchscreen_finger() { 290 ResTable_config config = new ResTable_config(); 291 ConfigDescription.parse("finger", config); 292 assertThat(config.touchscreen).isEqualTo(TOUCHSCREEN_FINGER); 293 } 294 295 @Test public void parse_keysHidden_keysexposed() { 296 ResTable_config config = new ResTable_config(); 297 ConfigDescription.parse("keysexposed", config); 298 assertThat(config.inputFlags).isEqualTo(KEYSHIDDEN_NO); 299 } 300 301 @Test public void parse_keysHidden_keyshidden() { 302 ResTable_config config = new ResTable_config(); 303 ConfigDescription.parse("keyshidden", config); 304 assertThat(config.inputFlags).isEqualTo(KEYSHIDDEN_YES); 305 } 306 307 @Test public void parse_keysHidden_keyssoft() { 308 ResTable_config config = new ResTable_config(); 309 ConfigDescription.parse("keyssoft", config); 310 assertThat(config.inputFlags).isEqualTo(KEYSHIDDEN_SOFT); 311 } 312 313 @Test public void parse_keyboard_nokeys() { 314 ResTable_config config = new ResTable_config(); 315 ConfigDescription.parse("nokeys", config); 316 assertThat(config.keyboard).isEqualTo(KEYBOARD_NOKEYS); 317 } 318 319 @Test public void parse_keyboard_qwerty() { 320 ResTable_config config = new ResTable_config(); 321 ConfigDescription.parse("qwerty", config); 322 assertThat(config.keyboard).isEqualTo(KEYBOARD_QWERTY); 323 } 324 325 @Test public void parse_keyboard_12key() { 326 ResTable_config config = new ResTable_config(); 327 ConfigDescription.parse("12key", config); 328 assertThat(config.keyboard).isEqualTo(KEYBOARD_12KEY); 329 } 330 331 @Test public void parse_navHidden_navexposed() { 332 ResTable_config config = new ResTable_config(); 333 ConfigDescription.parse("navexposed", config); 334 assertThat(config.inputFlags).isEqualTo(NAVHIDDEN_NO); 335 } 336 337 @Test public void parse_navHidden_navhidden() { 338 ResTable_config config = new ResTable_config(); 339 ConfigDescription.parse("navhidden", config); 340 assertThat(config.inputFlags).isEqualTo(NAVHIDDEN_YES); 341 } 342 343 @Test public void parse_navigation_nonav() { 344 ResTable_config config = new ResTable_config(); 345 ConfigDescription.parse("nonav", config); 346 assertThat(config.navigation).isEqualTo(NAVIGATION_NONAV); 347 } 348 349 @Test public void parse_navigation_dpad() { 350 ResTable_config config = new ResTable_config(); 351 ConfigDescription.parse("dpad", config); 352 assertThat(config.navigation).isEqualTo(NAVIGATION_DPAD); 353 } 354 355 @Test public void parse_navigation_trackball() { 356 ResTable_config config = new ResTable_config(); 357 ConfigDescription.parse("trackball", config); 358 assertThat(config.navigation).isEqualTo(NAVIGATION_TRACKBALL); 359 } 360 361 @Test public void parse_navigation_wheel() { 362 ResTable_config config = new ResTable_config(); 363 ConfigDescription.parse("wheel", config); 364 assertThat(config.navigation).isEqualTo(NAVIGATION_WHEEL); 365 } 366 367 @Test public void parse_screenSize() { 368 ResTable_config config = new ResTable_config(); 369 ConfigDescription.parse("480x320", config); 370 assertThat(config.screenWidth).isEqualTo(480); 371 assertThat(config.screenHeight).isEqualTo(320); 372 } 373 374 @Test public void parse_screenSize_ignoreWidthLessThanHeight() { 375 ResTable_config config = new ResTable_config(); 376 ConfigDescription.parse("320x480", config); 377 assertThat(config.screenWidth).isEqualTo(0); 378 assertThat(config.screenHeight).isEqualTo(0); 379 } 380 381 @Test public void parse_version() { 382 ResTable_config config = new ResTable_config(); 383 ConfigDescription.parse("v12", config); 384 assertThat(config.sdkVersion).isEqualTo(12); 385 assertThat(config.minorVersion).isEqualTo(0); 386 } 387 388 @Test public void parse_language() { 389 ResTable_config config = new ResTable_config(); 390 ConfigDescription.parse("en", config); 391 assertThat(config.languageString()).isEqualTo("en"); 392 assertThat(config.minorVersion).isEqualTo(0); 393 } 394 395 @Test public void parse_languageAndRegion() { 396 ResTable_config config = new ResTable_config(); 397 ConfigDescription.parse("fr-rFR", config); 398 assertThat(config.languageString()).isEqualTo("fr"); 399 assertThat(config.regionString()).isEqualTo("FR"); 400 } 401 402 @Test public void parse_multipleQualifiers() { 403 ResTable_config config = new ResTable_config(); 404 assertThat(ConfigDescription.parse("en-rUS-sw320dp-v7", config)).isTrue(); 405 assertThat(config.languageString()).isEqualTo("en"); 406 assertThat(config.regionString()).isEqualTo("US"); 407 assertThat(config.smallestScreenWidthDp).isEqualTo(320); 408 assertThat(config.sdkVersion).isEqualTo(ConfigDescription.SDK_HONEYCOMB_MR2); 409 } 410 411 @Test public void parse_multipleQualifiers_outOfOrder() { 412 ResTable_config config = new ResTable_config(); 413 assertThat(ConfigDescription.parse("v7-en-rUS-sw320dp", config)).isFalse(); 414 } 415 } 416