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