Search in sources :

Example 1 with CalendarFieldsSet

use of android.icu.dev.test.util.CalendarFieldsSet in project j2objc by google.

the class DataDrivenCalendarTest method testOps.

private void testOps(TestDataModule.TestData testData, DataMap settings) {
    // Get 'from' time
    CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet(), paramsSet = new CalendarFieldsSet(), diffSet = new CalendarFieldsSet();
    // DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
    // Start the processing
    int n = 0;
    long fromDate = 0;
    long toDate = 0;
    boolean useDate = false;
    for (Iterator iter = testData.getDataIterator(); iter.hasNext(); ) {
        ++n;
        DataMap currentCase = (DataMap) iter.next();
        String caseString = "[case " + n + "]";
        // build to calendar
        // Headers { "locale","from","operation","params","to" }
        // #1 locale
        String param = "locale";
        String locale;
        String testSetting = currentCase.getString(param);
        locale = testSetting;
        ULocale loc = new ULocale(locale);
        Calendar fromCalendar = Calendar.getInstance(loc);
        fromSet.clear();
        // #2 'from' info
        param = "from";
        String from = testSetting = currentCase.getString(param);
        if (from.startsWith(kMILLIS)) {
            useDate = true;
            fromDate = Long.parseLong(from.substring(kMILLIS.length()));
        } else {
            fromSet.parseFrom(testSetting);
        }
        // System.err.println("fromset: ["+testSetting+"] >> " + fromSet);
        // #4 'operation' info
        param = "operation";
        String operation = testSetting = currentCase.getString(param);
        paramsSet.clear();
        // #3 'params' info
        param = "params";
        String paramsData = testSetting = currentCase.getString(param);
        // parse with inheritance.
        paramsSet.parseFrom(paramsData);
        // System.err.println("paramsSet: ["+testSetting+"] >> " + paramsSet);
        toSet.clear();
        // #4 'to' info
        param = "to";
        String to = testSetting = currentCase.getString(param);
        if (to.startsWith(kMILLIS)) {
            useDate = true;
            toDate = Long.parseLong(to.substring(kMILLIS.length()));
        } else {
            toSet.parseFrom(testSetting, fromSet);
        }
        // toSet.parseFrom(testSetting, fromSet); // parse with inheritance.
        // System.err.println("toSet: ["+testSetting+"] >> " + toSet);
        String caseContentsString = locale + ":  from " + from + ": " + operation + " [[[ " + paramsSet + " ]]]   >>> " + to;
        logln(caseString + ": " + caseContentsString);
        // / prepare calendar
        if (useDate) {
            fromCalendar.setTimeInMillis(fromDate);
        } else {
            fromSet.setOnCalendar(fromCalendar);
        }
        // from calendar:  'starting date'
        diffSet.clear();
        // Is the calendar sane after being set?
        if (!fromSet.matches(fromCalendar, diffSet)) {
            String diffs = diffSet.diffFrom(fromSet);
            errln((String) "FAIL: " + caseString + ", SET SOURCE calendar was not set: Differences: " + diffs);
        } else {
            // verifies that the requested fields were set.
            logln(" " + caseString + " SET SOURCE calendar match.");
        }
        // to calendar - copy of from calendar
        Calendar toCalendar = (Calendar) fromCalendar.clone();
        // / perform op on 'to calendar'
        for (int q = 0; q < paramsSet.fieldCount(); q++) {
            if (paramsSet.isSet(q)) {
                if (operation.equals(kROLL)) {
                    toCalendar.roll(q, paramsSet.get(q));
                } else if (operation.equals(kADD)) {
                    toCalendar.add(q, paramsSet.get(q));
                } else {
                    errln(caseString + " FAIL: unknown operation " + operation);
                }
                logln(operation + " of " + paramsSet.get(q));
            }
        }
        // now - what's the result?
        diffSet.clear();
        if (useDate) {
            if (toCalendar.getTimeInMillis() == toDate) {
                logln(caseString + " SUCCESS: got=expected=" + toDate);
                logln("PASS: " + caseString + " matched! ");
            } else {
                // failing because of this.
                if ((caseString.equals("[case 31]") || caseString.equals("[case 36]")) && TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_JDK) {
                    logln(caseString + " FAIL(expected): got " + toCalendar.getTimeInMillis() + "  expected " + toDate);
                } else {
                    errln(caseString + " FAIL: got " + toCalendar.getTimeInMillis() + "  expected " + toDate);
                }
            }
        } else if (!toSet.matches(toCalendar, diffSet)) {
            String diffs = diffSet.diffFrom(toSet);
            errln((String) "FAIL: " + caseString + " - , " + caseContentsString + " Differences: " + diffs);
        } else {
            logln("PASS: " + caseString + " matched! ");
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) Calendar(android.icu.util.Calendar) Iterator(java.util.Iterator) CalendarFieldsSet(android.icu.dev.test.util.CalendarFieldsSet) DataMap(android.icu.dev.test.TestDataModule.DataMap)

Example 2 with CalendarFieldsSet

use of android.icu.dev.test.util.CalendarFieldsSet in project j2objc by google.

the class DataDrivenCalendarTest method testConvert.

void testConvert(String caseString, CalendarFieldsSet fromSet, Calendar fromCalendar, CalendarFieldsSet toSet, Calendar toCalendar, boolean forward) {
    String thisString = caseString + (forward ? "forward" : "reverse") + " " + fromCalendar.getType() + "->" + toCalendar.getType() + " ";
    fromCalendar.clear();
    fromSet.setOnCalendar(fromCalendar);
    CalendarFieldsSet diffSet = new CalendarFieldsSet();
    diffSet.clear();
    // Is the calendar sane at the first?
    if (!fromSet.matches(fromCalendar, diffSet)) {
        String diffs = diffSet.diffFrom(fromSet);
        errln((String) "FAIL: " + thisString + ", SOURCE calendar was not set: Differences: " + diffs);
    } else {
        logln("PASS: " + thisString + " SOURCE calendar match.");
    }
    // logln("Set Source calendar: " + from);
    Date fromTime = fromCalendar.getTime();
    diffSet.clear();
    // Is the calendar sane after being set?
    if (!fromSet.matches(fromCalendar, diffSet)) {
        String diffs = diffSet.diffFrom(fromSet);
        errln((String) "FAIL: " + thisString + ", SET SOURCE calendar was not set: Differences: " + diffs);
    } else {
        logln("PASS: " + thisString + " SET SOURCE calendar match.");
    }
    toCalendar.clear();
    toCalendar.setTime(fromTime);
    diffSet.clear();
    if (!toSet.matches(toCalendar, diffSet)) {
        String diffs = diffSet.diffFrom(toSet);
        errln((String) "FAIL: " + thisString + ", Differences: " + diffs);
        DateFormat fmt = new SimpleDateFormat(new String("EEE MMM dd yyyy G"));
        String fromString = fmt.format(fromTime);
        logln("Source Time: " + fromString + ", Source Calendar: " + fromCalendar.getType());
    } else {
        logln("PASS: " + thisString + " match.");
    }
}
Also used : DateFormat(android.icu.text.DateFormat) SimpleDateFormat(android.icu.text.SimpleDateFormat) CalendarFieldsSet(android.icu.dev.test.util.CalendarFieldsSet) SimpleDateFormat(android.icu.text.SimpleDateFormat) Date(java.util.Date)

Example 3 with CalendarFieldsSet

use of android.icu.dev.test.util.CalendarFieldsSet in project j2objc by google.

the class DataDrivenFormatTest method testConvertDate.

private void testConvertDate(TestDataModule.TestData testData, DataMap settings, boolean fmt) {
    DateFormat basicFmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
    int n = 0;
    for (Iterator iter = testData.getDataIterator(); iter.hasNext(); ) {
        ++n;
        long now = System.currentTimeMillis();
        DataMap currentCase = (DataMap) iter.next();
        String caseString = "[" + testData.getName() + "#" + n + (fmt ? "format" : "parse") + "]";
        String locale = currentCase.getString("locale");
        String zone = currentCase.getString("zone");
        String spec = currentCase.getString("spec");
        String date = currentCase.getString("date");
        String str = currentCase.getString("str");
        Date fromDate = null;
        boolean useDate = false;
        ULocale loc = new ULocale(locale);
        String pattern = null;
        // boolean usePattern = false;
        DateFormat format = null;
        DateTimeStyleSet styleSet;
        CalendarFieldsSet fromSet = null;
        // parse 'spec'  - either 'PATTERN=yy mm dd' or 'DATE=x,TIME=y'
        if (spec.startsWith(kPATTERN)) {
            pattern = spec.substring(kPATTERN.length());
            // usePattern = true;
            format = new SimpleDateFormat(pattern, loc);
        } else {
            styleSet = new DateTimeStyleSet();
            styleSet.parseFrom(spec);
            format = DateFormat.getDateTimeInstance(styleSet.getDateStyle(), styleSet.getTimeStyle(), loc);
        }
        Calendar cal = Calendar.getInstance(loc);
        if (zone.length() > 0) {
            TimeZone tz = TimeZone.getFrozenTimeZone(zone);
            cal.setTimeZone(tz);
            format.setTimeZone(tz);
        }
        // parse 'date' - either 'MILLIS=12345' or  a CalendarFieldsSet
        if (date.startsWith(kMILLIS)) {
            useDate = true;
            fromDate = new Date(Long.parseLong(date.substring(kMILLIS.length())));
        } else if (date.startsWith(kRELATIVE_MILLIS)) {
            useDate = true;
            fromDate = new Date(now + Long.parseLong(date.substring(kRELATIVE_MILLIS.length())));
        } else if (date.startsWith(kRELATIVE_ADD)) {
            // "add" is a string indicating which fields to add
            String add = date.substring(kRELATIVE_ADD.length());
            CalendarFieldsSet addSet = new CalendarFieldsSet();
            addSet.parseFrom(add);
            useDate = true;
            cal.clear();
            cal.setTimeInMillis(now);
            // / perform op on 'to calendar'
            for (int q = 0; q < addSet.fieldCount(); q++) {
                if (addSet.isSet(q)) {
                    if (q == Calendar.DATE) {
                        cal.add(q, addSet.get(q));
                    } else {
                        cal.set(q, addSet.get(q));
                    }
                }
            }
            fromDate = cal.getTime();
        } else {
            fromSet = new CalendarFieldsSet();
            fromSet.parseFrom(date);
        }
        // run the test
        if (fmt) {
            StringBuffer output = new StringBuffer();
            cal.clear();
            FieldPosition pos = new FieldPosition(0);
            if (useDate) {
                output = format.format(fromDate, output, pos);
            } else {
                fromSet.setOnCalendar(cal);
                format.format(cal, output, pos);
            }
            if (output.toString().equals(str)) {
                logln(caseString + " Success - strings match: " + output);
            } else {
                errln(caseString + " FAIL: got " + output + " expected " + str);
            }
        } else {
            // parse
            cal.clear();
            ParsePosition pos = new ParsePosition(0);
            format.parse(str, cal, pos);
            if (useDate) {
                Date gotDate = cal.getTime();
                if (gotDate.equals(fromDate)) {
                    logln(caseString + " SUCCESS: got=parse=" + str);
                } else {
                    errln(caseString + " FAIL: parsed " + str + " but got " + basicFmt.format(gotDate) + " - " + gotDate + "  expected " + basicFmt.format(fromDate));
                }
            } else {
                CalendarFieldsSet diffSet = new CalendarFieldsSet();
                if (!fromSet.matches(cal, diffSet)) {
                    String diffs = diffSet.diffFrom(fromSet);
                    errln(caseString + " FAIL:  differences: " + diffs);
                } else {
                    logln(caseString + " SUCCESS: got=parse: " + str + " - " + fromSet.toString());
                }
            }
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) Calendar(android.icu.util.Calendar) CalendarFieldsSet(android.icu.dev.test.util.CalendarFieldsSet) FieldPosition(java.text.FieldPosition) Date(java.util.Date) DataMap(android.icu.dev.test.TestDataModule.DataMap) TimeZone(android.icu.util.TimeZone) DateTimeStyleSet(android.icu.dev.test.util.DateTimeStyleSet) DateFormat(android.icu.text.DateFormat) SimpleDateFormat(android.icu.text.SimpleDateFormat) Iterator(java.util.Iterator) SimpleDateFormat(android.icu.text.SimpleDateFormat) ParsePosition(java.text.ParsePosition)

Example 4 with CalendarFieldsSet

use of android.icu.dev.test.util.CalendarFieldsSet in project j2objc by google.

the class DataDrivenCalendarTest method testConvert.

private void testConvert(TestDataModule.TestData testData, DataMap settings, boolean forward) {
    Calendar toCalendar = null;
    // build to calendar
    String testSetting = settings.getString("ToCalendar");
    ULocale loc = new ULocale(testSetting);
    toCalendar = Calendar.getInstance(loc);
    CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet();
    // DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
    // Start the processing
    int n = 0;
    for (Iterator iter = testData.getDataIterator(); iter.hasNext(); ) {
        ++n;
        DataMap currentCase = (DataMap) iter.next();
        String caseString = "[" + testData.getName() + "#" + n + " " + "]";
        String locale = testSetting = currentCase.getString("locale");
        ULocale fromLoc = new ULocale(testSetting);
        Calendar fromCalendar = Calendar.getInstance(fromLoc);
        fromSet.clear();
        toSet.clear();
        String from = currentCase.getString("from");
        fromSet.parseFrom(from);
        String to = currentCase.getString("to");
        toSet.parseFrom(to, fromSet);
        // now, do it.
        if (forward) {
            logln(caseString + " " + locale + "/" + from + " >>> " + loc + "/" + to);
            testConvert(caseString, fromSet, fromCalendar, toSet, toCalendar, forward);
        } else {
            logln(caseString + " " + locale + "/" + from + " <<< " + loc + "/" + to);
            testConvert(caseString, toSet, toCalendar, fromSet, fromCalendar, forward);
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) Calendar(android.icu.util.Calendar) Iterator(java.util.Iterator) CalendarFieldsSet(android.icu.dev.test.util.CalendarFieldsSet) DataMap(android.icu.dev.test.TestDataModule.DataMap)

Aggregations

CalendarFieldsSet (android.icu.dev.test.util.CalendarFieldsSet)4 DataMap (android.icu.dev.test.TestDataModule.DataMap)3 Calendar (android.icu.util.Calendar)3 ULocale (android.icu.util.ULocale)3 Iterator (java.util.Iterator)3 DateFormat (android.icu.text.DateFormat)2 SimpleDateFormat (android.icu.text.SimpleDateFormat)2 Date (java.util.Date)2 DateTimeStyleSet (android.icu.dev.test.util.DateTimeStyleSet)1 TimeZone (android.icu.util.TimeZone)1 FieldPosition (java.text.FieldPosition)1 ParsePosition (java.text.ParsePosition)1