Home | History | Annotate | Download | only in android
      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