Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
      4 import static android.os.Build.VERSION_CODES.LOLLIPOP;
      5 import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
      6 import static android.os.Build.VERSION_CODES.M;
      7 import static android.os.Build.VERSION_CODES.P;
      8 import static org.assertj.core.api.Assertions.assertThat;
      9 
     10 import java.util.Locale;
     11 import libcore.icu.LocaleData;
     12 import org.junit.Test;
     13 import org.junit.runner.RunWith;
     14 import org.robolectric.RobolectricTestRunner;
     15 import org.robolectric.annotation.Config;
     16 
     17 @RunWith(RobolectricTestRunner.class)
     18 public class ShadowLocaleDataTest {
     19 
     20   @Test
     21   public void shouldSupportLocaleEn_US() throws Exception {
     22     LocaleData localeData = LocaleData.get(Locale.US);
     23 
     24     assertThat(localeData.amPm).isEqualTo(new String[]{"AM", "PM"});
     25     assertThat(localeData.eras).isEqualTo(new String[]{"BC", "AD"});
     26 
     27     assertThat(localeData.firstDayOfWeek).isEqualTo(1);
     28     assertThat(localeData.minimalDaysInFirstWeek).isEqualTo(1);
     29 
     30     assertThat(localeData.longMonthNames).isEqualTo(new String[]{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"});
     31     assertThat(localeData.shortMonthNames).isEqualTo(new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"});
     32 
     33     assertThat(localeData.longStandAloneMonthNames).isEqualTo(localeData.longMonthNames);
     34     assertThat(localeData.shortStandAloneMonthNames).isEqualTo(localeData.shortMonthNames);
     35 
     36     assertThat(localeData.longWeekdayNames).isEqualTo(new String[]{"", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"});
     37     assertThat(localeData.shortWeekdayNames).isEqualTo(new String[]{"", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"});
     38 
     39     assertThat(localeData.longStandAloneWeekdayNames).isEqualTo(localeData.longWeekdayNames);
     40     assertThat(localeData.shortStandAloneWeekdayNames).isEqualTo(localeData.shortWeekdayNames);
     41 
     42     assertThat(localeData.fullTimeFormat).isEqualTo("h:mm:ss a zzzz");
     43     assertThat(localeData.longTimeFormat).isEqualTo("h:mm:ss a z");
     44     assertThat(localeData.mediumTimeFormat).isEqualTo("h:mm:ss a");
     45     assertThat(localeData.shortTimeFormat).isEqualTo("h:mm a");
     46 
     47     assertThat(localeData.fullDateFormat).isEqualTo("EEEE, MMMM d, y");
     48     assertThat(localeData.longDateFormat).isEqualTo("MMMM d, y");
     49     assertThat(localeData.mediumDateFormat).isEqualTo("MMM d, y");
     50     assertThat(localeData.shortDateFormat).isEqualTo("M/d/yy");
     51 
     52     assertThat(localeData.zeroDigit).isEqualTo('0');
     53     assertThat(localeData.decimalSeparator).isEqualTo('.');
     54     assertThat(localeData.groupingSeparator).isEqualTo(',');
     55     assertThat(localeData.patternSeparator).isEqualTo(';');
     56 
     57     assertThat(localeData.monetarySeparator).isEqualTo('.');
     58 
     59     assertThat(localeData.exponentSeparator).isEqualTo("E");
     60     assertThat(localeData.infinity).isEqualTo("");
     61     assertThat(localeData.NaN).isEqualTo("NaN");
     62 
     63     assertThat(localeData.currencySymbol).isEqualTo("$");
     64     assertThat(localeData.internationalCurrencySymbol).isEqualTo("USD");
     65 
     66     assertThat(localeData.numberPattern).isEqualTo("#,##0.###");
     67     assertThat(localeData.integerPattern).isEqualTo("#,##0");
     68     assertThat(localeData.currencyPattern).isEqualTo("#,##0.00;(#,##0.00)");
     69     assertThat(localeData.percentPattern).isEqualTo("#,##0%");
     70   }
     71 
     72   // BEGIN-INTERNAL
     73   @Test
     74   @Config(minSdk = P)
     75   public void shouldSupportLocaleEn_US_perMillPost28() throws Exception {
     76     LocaleData localeData = LocaleData.get(Locale.US);
     77     assertThat(localeData.perMill).isEqualTo("");
     78   }
     79   // END-INTERNAL
     80 
     81   @Test
     82   @Config(minSdk = LOLLIPOP_MR1)
     83   public void shouldSupportLocaleEn_US_percentPost22() throws Exception {
     84     LocaleData localeData = LocaleData.get(Locale.US);
     85     assertThat(localeData.percent).isEqualTo("%");
     86   }
     87 
     88   @Test
     89   @Config(minSdk = JELLY_BEAN_MR1)
     90   public void shouldSupportLocaleEn_US_since_jelly_bean_mr1() throws Exception {
     91     LocaleData localeData = LocaleData.get(Locale.US);
     92 
     93     assertThat(localeData.tinyMonthNames).isEqualTo(new String[]{"J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"});
     94     assertThat(localeData.tinyStandAloneMonthNames).isEqualTo(localeData.tinyMonthNames);
     95     assertThat(localeData.tinyWeekdayNames).isEqualTo(new String[]{"", "S", "M", "T", "W", "T", "F", "S"});
     96     assertThat(localeData.tinyStandAloneWeekdayNames).isEqualTo(localeData.tinyWeekdayNames);
     97 
     98     assertThat(localeData.yesterday).isEqualTo("Yesterday");
     99     assertThat(localeData.today).isEqualTo("Today");
    100     assertThat(localeData.tomorrow).isEqualTo("Tomorrow");
    101   }
    102 
    103   @Test
    104   @Config(minSdk = M)
    105   public void shouldSupportLocaleEn_US_since_m() throws Exception {
    106     LocaleData localeData = LocaleData.get(Locale.US);
    107 
    108     assertThat(localeData.timeFormat_Hm).isEqualTo("HH:mm");
    109     assertThat(localeData.timeFormat_hm).isEqualTo("h:mm a");
    110   }
    111 
    112   @Test
    113   @Config(minSdk = LOLLIPOP)
    114   public void shouldSupportLocaleEn_US_since_lollipop() throws Exception {
    115     LocaleData localeData = LocaleData.get(Locale.US);
    116 
    117     assertThat(localeData.minusSign).isEqualTo("-");
    118   }
    119 
    120   @Test
    121   public void shouldDefaultToTheDefaultLocale() throws Exception {
    122     Locale.setDefault(Locale.US);
    123     LocaleData localeData = LocaleData.get(null);
    124 
    125     assertThat(localeData.amPm).isEqualTo(new String[]{"AM", "PM"});
    126   }
    127 }
    128