TimeKvpParser timeKvpParser = new TimeKvpParser("TIME");
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
// base assertion - 0001 is year 1
DateRange date = (DateRange) ((List)timeKvpParser.parse("01-06-01")).get(0);
cal.setTime(date.getMinValue());
assertEquals(1, cal.get(Calendar.YEAR));
assertEquals(GregorianCalendar.AD, cal.get(Calendar.ERA));
date = (DateRange) ((List)timeKvpParser.parse("00-06-01")).get(0);
cal.setTime(date.getMinValue());
// calendar calls it year 1, ISO spec means it's year 0
// but we're just parsing here...
assertEquals(1, cal.get(Calendar.YEAR));
assertEquals(GregorianCalendar.BC, cal.get(Calendar.ERA));
// so, the next year should be 2
date = (DateRange) ((List)timeKvpParser.parse("-01-06-01")).get(0);
cal.setTime(date.getMinValue());
assertEquals(2, cal.get(Calendar.YEAR));
assertEquals(GregorianCalendar.BC, cal.get(Calendar.ERA));
// now, big negative year compliance (see the spec, appendix D 2.2, pp 57-58)
date = (DateRange) ((List)timeKvpParser.parse("-18000-06-01")).get(0);
cal.setTime(date.getMinValue());
assertEquals(18001, cal.get(Calendar.YEAR));
assertEquals(GregorianCalendar.BC, cal.get(Calendar.ERA));
}