aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Chang <vichang@google.com>2022-02-08 10:11:10 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-02-08 10:11:10 +0000
commitbcb2f16fcad321d4e6dafd60e18ef67af4a41988 (patch)
tree5d6bad2ca9c3774acd7c7cfd511abffa0d5595a2
parentdcc75f1c41937ca9c29cd2aec5af41434ac85c00 (diff)
parent3a4b886b46d3ae7595b3861fd9324931bd667d9f (diff)
downloadrobolectric-shadows-android-t-preview-1.tar.gz
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java66
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java93
2 files changed, 72 insertions, 87 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
index 0ae09f90e..c1986b2db 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowLocaleDataTest.java
@@ -4,6 +4,7 @@ import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
import static android.os.Build.VERSION_CODES.M;
+import static android.os.Build.VERSION_CODES.S;
import static com.google.common.truth.Truth.assertThat;
import android.os.Build;
@@ -19,6 +20,7 @@ import org.robolectric.util.ReflectionHelpers;
public class ShadowLocaleDataTest {
@Test
+ @Config(maxSdk = Build.VERSION_CODES.S)
public void shouldSupportLocaleEn_US() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
@@ -40,31 +42,32 @@ public class ShadowLocaleDataTest {
assertThat(localeData.longStandAloneWeekdayNames).isEqualTo(localeData.longWeekdayNames);
assertThat(localeData.shortStandAloneWeekdayNames).isEqualTo(localeData.shortWeekdayNames);
- assertThat(localeData.fullTimeFormat).isEqualTo("h:mm:ss a zzzz");
- assertThat(localeData.longTimeFormat).isEqualTo("h:mm:ss a z");
- assertThat(localeData.mediumTimeFormat).isEqualTo("h:mm:ss a");
- assertThat(localeData.shortTimeFormat).isEqualTo("h:mm a");
+ assertThat((String) ReflectionHelpers.getField(localeData, "fullTimeFormat")).isEqualTo("h:mm:ss a zzzz");
+ assertThat((String) ReflectionHelpers.getField(localeData, "longTimeFormat")).isEqualTo("h:mm:ss a z");
+ assertThat((String) ReflectionHelpers.getField(localeData, "mediumTimeFormat")).isEqualTo("h:mm:ss a");
+ assertThat((String) ReflectionHelpers.getField(localeData, "shortTimeFormat")).isEqualTo("h:mm a");
- assertThat(localeData.fullDateFormat).isEqualTo("EEEE, MMMM d, y");
- assertThat(localeData.longDateFormat).isEqualTo("MMMM d, y");
- assertThat(localeData.mediumDateFormat).isEqualTo("MMM d, y");
- assertThat(localeData.shortDateFormat).isEqualTo("M/d/yy");
+ assertThat((String) ReflectionHelpers.getField(localeData, "fullDateFormat")).isEqualTo("EEEE, MMMM d, y");
+ assertThat((String) ReflectionHelpers.getField(localeData, "longDateFormat")).isEqualTo("MMMM d, y");
+ assertThat((String) ReflectionHelpers.getField(localeData, "mediumDateFormat")).isEqualTo("MMM d, y");
+ assertThat((String) ReflectionHelpers.getField(localeData, "shortDateFormat")).isEqualTo("M/d/yy");
- assertThat(localeData.zeroDigit).isEqualTo('0');
- assertThat(localeData.decimalSeparator).isEqualTo('.');
- assertThat(localeData.groupingSeparator).isEqualTo(',');
- assertThat(localeData.patternSeparator).isEqualTo(';');
+ assertThat((char) ReflectionHelpers.getField(localeData, "zeroDigit")).isEqualTo('0');
+ assertThat((char) ReflectionHelpers.getField(localeData, "decimalSeparator")).isEqualTo('.');
+ assertThat((char) ReflectionHelpers.getField(localeData, "groupingSeparator")).isEqualTo(',');
+ assertThat((char) ReflectionHelpers.getField(localeData, "patternSeparator")).isEqualTo(';');
- assertThat(localeData.monetarySeparator).isEqualTo('.');
+ assertThat((char) ReflectionHelpers.getField(localeData, "monetarySeparator")).isEqualTo('.');
+ assertThat((char) ReflectionHelpers.getField(localeData, "perMill")).isEqualTo('‰');
- assertThat(localeData.exponentSeparator).isEqualTo("E");
- assertThat(localeData.infinity).isEqualTo("∞");
- assertThat(localeData.NaN).isEqualTo("NaN");
+ assertThat((String) ReflectionHelpers.getField(localeData, "exponentSeparator")).isEqualTo("E");
+ assertThat((String) ReflectionHelpers.getField(localeData, "infinity")).isEqualTo("∞");
+ assertThat((String) ReflectionHelpers.getField(localeData, "NaN")).isEqualTo("NaN");
- assertThat(localeData.numberPattern).isEqualTo("#,##0.###");
- assertThat(localeData.integerPattern).isEqualTo("#,##0");
- assertThat(localeData.currencyPattern).isEqualTo("¤#,##0.00;(¤#,##0.00)");
- assertThat(localeData.percentPattern).isEqualTo("#,##0%");
+ assertThat((String) ReflectionHelpers.getField(localeData, "numberPattern")).isEqualTo("#,##0.###");
+ assertThat((String) ReflectionHelpers.getField(localeData, "integerPattern")).isEqualTo("#,##0");
+ assertThat((String) ReflectionHelpers.getField(localeData, "currencyPattern")).isEqualTo("¤#,##0.00;(¤#,##0.00)");
+ assertThat((String) ReflectionHelpers.getField(localeData, "percentPattern")).isEqualTo("#,##0%");
}
@Test
@@ -92,25 +95,10 @@ public class ShadowLocaleDataTest {
}
@Test
- @Config(maxSdk = Build.VERSION_CODES.O)
- public void shouldSupportLocaleEn_US_perMill() throws Exception {
- LocaleData localeData = LocaleData.get(Locale.US);
- char perMillValue = ReflectionHelpers.getField(localeData, "perMill");
- assertThat(perMillValue).isEqualTo('‰');
- }
-
- @Test
- @Config(minSdk = Build.VERSION_CODES.P)
- public void shouldSupportLocaleEn_US_perMillPostP() throws Exception {
- LocaleData localeData = LocaleData.get(Locale.US);
- assertThat(localeData.perMill).isEqualTo("‰");
- }
-
- @Test
- @Config(minSdk = LOLLIPOP_MR1)
+ @Config(minSdk = LOLLIPOP_MR1, maxSdk = S)
public void shouldSupportLocaleEn_US_percentPost22() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
- assertThat(localeData.percent).isEqualTo("%");
+ assertThat((String) ReflectionHelpers.getField(localeData, "percent")).isEqualTo("%");
}
@Test
@@ -137,11 +125,11 @@ public class ShadowLocaleDataTest {
}
@Test
- @Config(minSdk = LOLLIPOP)
+ @Config(minSdk = LOLLIPOP, maxSdk = S)
public void shouldSupportLocaleEn_US_since_lollipop() throws Exception {
LocaleData localeData = LocaleData.get(Locale.US);
- assertThat(localeData.minusSign).isEqualTo("-");
+ assertThat((String) ReflectionHelpers.getField(localeData, "minusSign")).isEqualTo("-");
}
@Test
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
index 50f58f1aa..5ce12951b 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowLocaleData.java
@@ -6,6 +6,7 @@ import static android.os.Build.VERSION_CODES.LOLLIPOP;
import static android.os.Build.VERSION_CODES.LOLLIPOP_MR1;
import static android.os.Build.VERSION_CODES.M;
import static android.os.Build.VERSION_CODES.Q;
+import static android.os.Build.VERSION_CODES.S;
import static org.robolectric.RuntimeEnvironment.getApiLevel;
import java.util.Locale;
@@ -61,11 +62,6 @@ public class ShadowLocaleData {
localeData.longStandAloneWeekdayNames = localeData.longWeekdayNames;
localeData.shortStandAloneWeekdayNames = localeData.shortWeekdayNames;
- localeData.fullTimeFormat = "h:mm:ss a zzzz";
- localeData.longTimeFormat = "h:mm:ss a z";
- localeData.mediumTimeFormat = "h:mm:ss a";
- localeData.shortTimeFormat = "h:mm a";
-
if (getApiLevel() >= M) {
localeData.timeFormat_hm = "h:mm a";
localeData.timeFormat_Hm = "HH:mm";
@@ -74,45 +70,6 @@ public class ShadowLocaleData {
ReflectionHelpers.setField(localeData, "timeFormat24", "HH:mm");
}
- localeData.fullDateFormat = "EEEE, MMMM d, y";
- localeData.longDateFormat = "MMMM d, y";
- localeData.mediumDateFormat = "MMM d, y";
- localeData.shortDateFormat = "M/d/yy";
-
- localeData.zeroDigit = '0';
- localeData.decimalSeparator = '.';
- localeData.groupingSeparator = ',';
- localeData.patternSeparator = ';';
-
- if (getApiLevel() >= LOLLIPOP_MR1) {
- // Lollipop MR1 uses a String
- localeData.percent = "%";
- } else {
- // Upto Lollipop was a char
- ReflectionHelpers.setField(localeData, "percent", '%');
- }
-
- if (getApiLevel() >= android.os.Build.VERSION_CODES.P) {
- // P uses a String
- localeData.perMill = "‰";
- } else {
- // Up to P was a char
- ReflectionHelpers.setField(localeData, "perMill", '‰');
- }
-
- localeData.monetarySeparator = '.';
-
- if (getApiLevel() >= LOLLIPOP) {
- // Lollipop uses a String
- localeData.minusSign = "-";
- } else {
- // Upto KitKat was a char
- ReflectionHelpers.setField(localeData, "minusSign", '-');
- }
-
- localeData.exponentSeparator = "E";
- localeData.infinity = "\u221E";
- localeData.NaN = "NaN";
// These fields are removed in Android R or later
if (getApiLevel() <= Q) {
@@ -121,9 +78,49 @@ public class ShadowLocaleData {
ReflectionHelpers.setField(localeData, "yesterday", "Yesterday");
}
- localeData.numberPattern = "\u0023,\u0023\u00230.\u0023\u0023\u0023";
- localeData.integerPattern = "\u0023,\u0023\u00230";
- localeData.currencyPattern = "\u00A4\u0023,\u0023\u00230.00;(\u00A4\u0023,\u0023\u00230.00)";
- localeData.percentPattern = "\u0023,\u0023\u00230%";
+
+ // These fields are removed in Android T or later
+ if (getApiLevel() <= S) {
+ ReflectionHelpers.setField(localeData, "fullDateFormat", "EEEE, MMMM d, y");
+ ReflectionHelpers.setField(localeData, "longDateFormat", "MMMM d, y");
+ ReflectionHelpers.setField(localeData, "mediumDateFormat", "MMM d, y");
+ ReflectionHelpers.setField(localeData, "shortDateFormat", "M/d/yy");
+ ReflectionHelpers.setField(localeData, "zeroDigit", '0');
+ ReflectionHelpers.setField(localeData, "decimalSeparator", '.');
+ ReflectionHelpers.setField(localeData, "groupingSeparator", ',');
+ ReflectionHelpers.setField(localeData, "patternSeparator", ';');
+ ReflectionHelpers.setField(localeData, "monetarySeparator", '.');
+ ReflectionHelpers.setField(localeData, "exponentSeparator", "E");
+ ReflectionHelpers.setField(localeData, "infinity", "\u221E");
+ ReflectionHelpers.setField(localeData, "NaN", "NaN");
+ ReflectionHelpers.setField(localeData, "numberPattern", "\u0023,\u0023\u00230.\u0023\u0023\u0023");
+ ReflectionHelpers.setField(localeData, "integerPattern", "\u0023,\u0023\u00230");
+ ReflectionHelpers.setField(localeData, "currencyPattern", "\u00A4\u0023,\u0023\u00230.00;(\u00A4\u0023,\u0023\u00230.00)");
+ ReflectionHelpers.setField(localeData, "percentPattern", "\u0023,\u0023\u00230%");
+
+ if (getApiLevel() >= LOLLIPOP_MR1) {
+ // Lollipop MR1 uses a String
+ ReflectionHelpers.setField(localeData, "percent", "%");
+ } else {
+ // Upto Lollipop was a char
+ ReflectionHelpers.setField(localeData, "percent", '%');
+ }
+
+ if (getApiLevel() >= android.os.Build.VERSION_CODES.P) {
+ // P uses a String
+ ReflectionHelpers.setField(localeData, "perMill", "‰");
+ } else {
+ // Up to P was a char
+ ReflectionHelpers.setField(localeData, "perMill", '‰');
+ }
+
+ if (getApiLevel() >= LOLLIPOP) {
+ // Lollipop uses a String
+ ReflectionHelpers.setField(localeData, "minusSign", "-");
+ } else {
+ // Upto KitKat was a char
+ ReflectionHelpers.setField(localeData, "minusSign", '-');
+ }
+ }
}
}