package net.time4j.i18n; import net.time4j.PlainDate; import java.text.ParseException; import java.util.Arrays; import java.util.Locale; import net.time4j.format.expert.ChronoFormatter; import net.time4j.format.expert.Iso8601Format; import net.time4j.format.expert.PatternType; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(Parameterized.class) public class DatePatternTest { @Parameterized.Parameters (name= "{index}: " + "(pattern={0},locale={1},value={2},text={3})") public static Iterable<Object[]> data() { return Arrays.asList( new Object[][] { {"dd.MM.uuuu ('mjd'=g)", "de", "2014-05-30", "30.05.2014 (mjd=56807)"}, {"dd.MM.uuuu ('mjd'=g)", "de", "1858-11-17", "17.11.1858 (mjd=0)"}, {"F. EEEE 'im Monat,' dd.MM.uuuu", "de", "2014-05-30", "5. Freitag im Monat, 30.05.2014"}, {"F. EEEE 'in month,' MM/dd/uuuu", "us", "2014-05-19", "3. Monday in month, 05/19/2014"}, {"uuuu-DDD", "", "2014-12-31", "2014-365"}, {"uuuu-MM-dd (w)", "", "2009-12-28", "2009-12-28 (53)"}, {"uuuu-MM-dd (W)", "de", "2009-12-28", "2009-12-28 (5)"}, {"YYYY-MM-dd ('W'ww-e)", "de", "2010-01-03", "2009-01-03 (W53-7)"}, {"uuuu-MM-dd (QQ)", "de", "2009-12-28", "2009-12-28 (04)"}, {"uuuu-MM-dd (QQQ)", "de", "2009-12-28", "2009-12-28 (Q4)"}, {"uuuu-MM-dd (QQQQ)", "de", "2009-12-28", "2009-12-28 (4. Quartal)"}, {"dd.MM.yyyy G", "de", "2009-12-28", "28.12.2009 n. Chr."}, } ); } private ChronoFormatter<PlainDate> formatter; private PlainDate value; private String text; public DatePatternTest( String pattern, String locale, String value, String text ) throws ParseException { super(); this.formatter = ChronoFormatter.setUp(PlainDate.class, toLocale(locale)) .addPattern(pattern, PatternType.CLDR).build(); this.value = Iso8601Format.EXTENDED_CALENDAR_DATE.parse(value); this.text = text; } @Test public void print() { assertThat( this.formatter.format(this.value), is(this.text)); } @Test public void parse() throws ParseException { assertThat( this.formatter.parse(this.text), is(this.value)); } private static Locale toLocale(String locale) { if (locale.isEmpty()) { return Locale.ROOT; } else if (locale.equals("en")) { return Locale.UK; } else if (locale.equals("us")) { return Locale.US; } else if (locale.equals("in")) { return new Locale("en", "IN"); } return new Locale(locale, locale.toUpperCase()); } }