Search in sources :

Example 1 with ParseOption

use of android.icu.text.TimeZoneFormat.ParseOption in project j2objc by google.

the class TimeZoneFormatTest method TestParse.

@Test
public void TestParse() {
    final Object[][] DATA = { // parseOptions            expected            outpos      time type
    { "Z", 0, "en_US", Style.ISO_EXTENDED_FULL, null, "Etc/GMT", 1, TimeType.UNKNOWN }, { "Z", 0, "en_US", Style.SPECIFIC_LONG, null, "Etc/GMT", 1, TimeType.UNKNOWN }, { "Zambia time", 0, "en_US", Style.ISO_EXTENDED_FULL, EnumSet.of(ParseOption.ALL_STYLES), "Etc/GMT", 1, TimeType.UNKNOWN }, { "Zambia time", 0, "en_US", Style.GENERIC_LOCATION, null, "Africa/Lusaka", 11, TimeType.UNKNOWN }, { "Zambia time", 0, "en_US", Style.ISO_BASIC_LOCAL_FULL, EnumSet.of(ParseOption.ALL_STYLES), "Africa/Lusaka", 11, TimeType.UNKNOWN }, { "+00:00", 0, "en_US", Style.ISO_EXTENDED_FULL, null, "Etc/GMT", 6, TimeType.UNKNOWN }, { "-01:30:45", 0, "en_US", Style.ISO_EXTENDED_FULL, null, "GMT-01:30:45", 9, TimeType.UNKNOWN }, { "-7", 0, "en_US", Style.ISO_BASIC_LOCAL_FULL, null, "GMT-07:00", 2, TimeType.UNKNOWN }, { "-2222", 0, "en_US", Style.ISO_BASIC_LOCAL_FULL, null, "GMT-22:22", 5, TimeType.UNKNOWN }, { "-3333", 0, "en_US", Style.ISO_BASIC_LOCAL_FULL, null, "GMT-03:33", 4, TimeType.UNKNOWN }, { "XXX+01:30YYY", 3, "en_US", Style.LOCALIZED_GMT, null, "GMT+01:30", 9, TimeType.UNKNOWN }, { "GMT0", 0, "en_US", Style.SPECIFIC_SHORT, null, "Etc/GMT", 3, TimeType.UNKNOWN }, { "EST", 0, "en_US", Style.SPECIFIC_SHORT, null, "America/New_York", 3, TimeType.STANDARD }, { "ESTx", 0, "en_US", Style.SPECIFIC_SHORT, null, "America/New_York", 3, TimeType.STANDARD }, { "EDTx", 0, "en_US", Style.SPECIFIC_SHORT, null, "America/New_York", 3, TimeType.DAYLIGHT }, { "EST", 0, "en_US", Style.SPECIFIC_LONG, null, null, 0, TimeType.UNKNOWN }, { "EST", 0, "en_US", Style.SPECIFIC_LONG, EnumSet.of(ParseOption.ALL_STYLES), "America/New_York", 3, TimeType.STANDARD }, { "EST", 0, "en_CA", Style.SPECIFIC_SHORT, null, "America/Toronto", 3, TimeType.STANDARD }, { "CST", 0, "en_US", Style.SPECIFIC_SHORT, null, "America/Chicago", 3, TimeType.STANDARD }, { "CST", 0, "en_GB", Style.SPECIFIC_SHORT, null, null, 0, TimeType.UNKNOWN }, { "CST", 0, "en_GB", Style.SPECIFIC_SHORT, EnumSet.of(ParseOption.TZ_DATABASE_ABBREVIATIONS), "America/Chicago", 3, TimeType.STANDARD }, { "--CST--", 2, "en_GB", Style.SPECIFIC_SHORT, EnumSet.of(ParseOption.TZ_DATABASE_ABBREVIATIONS), "America/Chicago", 5, TimeType.STANDARD }, { "CST", 0, "zh_CN", Style.SPECIFIC_SHORT, EnumSet.of(ParseOption.TZ_DATABASE_ABBREVIATIONS), "Asia/Shanghai", 3, TimeType.STANDARD }, { "AEST", 0, "en_AU", Style.SPECIFIC_SHORT, EnumSet.of(ParseOption.TZ_DATABASE_ABBREVIATIONS), "Australia/Sydney", 4, TimeType.STANDARD }, { "AST", 0, "ar_SA", Style.SPECIFIC_SHORT, EnumSet.of(ParseOption.TZ_DATABASE_ABBREVIATIONS), "Asia/Riyadh", 3, TimeType.STANDARD }, { "AQTST", 0, "en", Style.SPECIFIC_LONG, null, null, 0, TimeType.UNKNOWN }, { "AQTST", 0, "en", Style.SPECIFIC_LONG, EnumSet.of(ParseOption.ALL_STYLES), null, 0, TimeType.UNKNOWN }, { "AQTST", 0, "en", Style.SPECIFIC_LONG, EnumSet.of(ParseOption.ALL_STYLES, ParseOption.TZ_DATABASE_ABBREVIATIONS), "Asia/Aqtobe", 5, TimeType.DAYLIGHT }, { "hora de verano británica", 0, "es", Style.SPECIFIC_LONG, null, "Europe/London", 24, TimeType.DAYLIGHT } };
    for (Object[] test : DATA) {
        String text = (String) test[0];
        int inPos = (Integer) test[1];
        ULocale loc = new ULocale((String) test[2]);
        Style style = (Style) test[3];
        EnumSet<ParseOption> options = (EnumSet<ParseOption>) test[4];
        String expID = (String) test[5];
        int expPos = (Integer) test[6];
        TimeType expType = (TimeType) test[7];
        TimeZoneFormat tzfmt = TimeZoneFormat.getInstance(loc);
        Output<TimeType> timeType = new Output<TimeType>(TimeType.UNKNOWN);
        ParsePosition pos = new ParsePosition(inPos);
        TimeZone tz = tzfmt.parse(style, text, pos, options, timeType);
        String errMsg = null;
        if (tz == null) {
            if (expID != null) {
                errMsg = "Parse failure - expected: " + expID;
            }
        } else if (!tz.getID().equals(expID)) {
            errMsg = "Time zone ID: " + tz.getID() + " - expected: " + expID;
        } else if (pos.getIndex() != expPos) {
            errMsg = "Parsed pos: " + pos.getIndex() + " - expected: " + expPos;
        } else if (timeType.value != expType) {
            errMsg = "Time type: " + timeType + " - expected: " + expType;
        }
        if (errMsg != null) {
            errln("Fail: " + errMsg + " [text=" + text + ", pos=" + inPos + ", locale=" + loc + ", style=" + style + "]");
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) EnumSet(java.util.EnumSet) TimeZoneFormat(android.icu.text.TimeZoneFormat) TimeType(android.icu.text.TimeZoneFormat.TimeType) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) SimpleTimeZone(android.icu.util.SimpleTimeZone) TimeZone(android.icu.util.TimeZone) BasicTimeZone(android.icu.util.BasicTimeZone) Output(android.icu.util.Output) Style(android.icu.text.TimeZoneFormat.Style) ParseOption(android.icu.text.TimeZoneFormat.ParseOption) ParsePosition(java.text.ParsePosition) Test(org.junit.Test)

Aggregations

TimeZoneFormat (android.icu.text.TimeZoneFormat)1 ParseOption (android.icu.text.TimeZoneFormat.ParseOption)1 Style (android.icu.text.TimeZoneFormat.Style)1 TimeType (android.icu.text.TimeZoneFormat.TimeType)1 BasicTimeZone (android.icu.util.BasicTimeZone)1 Output (android.icu.util.Output)1 SimpleTimeZone (android.icu.util.SimpleTimeZone)1 TimeZone (android.icu.util.TimeZone)1 ULocale (android.icu.util.ULocale)1 ParsePosition (java.text.ParsePosition)1 EnumSet (java.util.EnumSet)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 Test (org.junit.Test)1