
org.robolectric.shadows.ShadowLocaleData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of framework Show documentation
Show all versions of framework Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.shadows;
import java.util.Locale;
import libcore.icu.LocaleData;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Implementation;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.util.ReflectionHelpers;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
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 org.robolectric.RuntimeEnvironment.getApiLevel;
/**
* Robolectric only supports en_US regardless of the default locale set in the JVM.
*/
@Implements(value = LocaleData.class, isInAndroidSdk = false)
public class ShadowLocaleData {
public static final String REAL_CLASS_NAME = "libcore.icu.LocaleData";
@Implementation
public static LocaleData get(Locale locale) {
LocaleData localeData = (LocaleData) Shadow.newInstanceOf(REAL_CLASS_NAME);
if (locale == null) {
locale = Locale.getDefault();
}
setEnUsLocaleData(localeData);
return localeData;
}
private static void setEnUsLocaleData(LocaleData localeData) {
localeData.amPm = new String[]{"AM", "PM"};
localeData.eras = new String[]{"BC", "AD"};
localeData.firstDayOfWeek = 1;
localeData.minimalDaysInFirstWeek = 1;
localeData.longMonthNames = new String[]{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
localeData.shortMonthNames = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
if (getApiLevel() >= JELLY_BEAN_MR1) {
localeData.tinyMonthNames = new String[]{"J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"};
localeData.tinyStandAloneMonthNames = localeData.tinyMonthNames;
localeData.tinyWeekdayNames = new String[]{"", "S", "M", "T", "W", "T", "F", "S"};
localeData.tinyStandAloneWeekdayNames = localeData.tinyWeekdayNames;
localeData.yesterday = "Yesterday";
localeData.today = "Today";
localeData.tomorrow = "Tomorrow";
}
localeData.longStandAloneMonthNames = localeData.longMonthNames;
localeData.shortStandAloneMonthNames = localeData.shortMonthNames;
localeData.longWeekdayNames = new String[]{"", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
localeData.shortWeekdayNames = new String[]{"", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
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";
} else if (getApiLevel() >= JELLY_BEAN_MR2) {
ReflectionHelpers.setField(localeData, "timeFormat12", "h:mm a");
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", '%');
}
localeData.perMill = 0x2030;
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";
localeData.currencySymbol = "$";
localeData.internationalCurrencySymbol = "USD";
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%";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy