package net.time4j.format.expert; import net.time4j.PlainDate; import net.time4j.PlainTime; import net.time4j.PlainTimestamp; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.text.ParseException; import java.util.Locale; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class LiteralWithDigitsTest { @Test public void testAlternativeLiteral() throws ParseException { ChronoFormatter<PlainTimestamp> formatter = ChronoFormatter.setUp(PlainTimestamp.class, Locale.ROOT) .addCustomized(PlainDate.COMPONENT, Iso8601Format.EXTENDED_CALENDAR_DATE) .addLiteral('T', ' ') .addCustomized(PlainTime.COMPONENT, Iso8601Format.EXTENDED_WALL_TIME) .build(); assertThat(formatter.parse("2015-05-13T17:45"), is(PlainTimestamp.of(2015, 5, 13, 17, 45))); assertThat(formatter.parse("2015-05-13 17:45"), is(PlainTimestamp.of(2015, 5, 13, 17, 45))); } @Test public void printDateYYYYMM00() { ChronoFormatter<PlainDate> fmt = ChronoFormatter.ofDatePattern("uMM00", PatternType.CLDR, Locale.ROOT); assertThat( fmt.format(PlainDate.of(2014, 10, 4)), is("20141000")); } @Test public void parseDateYYYYMM00WithDefault() throws ParseException { ChronoFormatter<PlainDate> fmt = // year has variable width! ChronoFormatter.ofDatePattern("uMM00", PatternType.CLDR, Locale.ROOT) .withDefault(PlainDate.DAY_OF_MONTH, 4); assertThat( fmt.parse("20141000"), is(PlainDate.of(2014, 10, 4))); } @Test(expected=ParseException.class) public void parseDateYYYYMM00NoDefault() throws ParseException { ChronoFormatter<PlainDate> fmt = // year has variable width! ChronoFormatter.ofDatePattern("uMM00", PatternType.CLDR, Locale.ROOT); fmt.parse("20141000"); } @Test public void printDateYYYYMM00_2() { ChronoFormatter<PlainDate> fmt = ChronoFormatter.ofDatePattern("uMM'00'", PatternType.CLDR, Locale.ROOT); assertThat( fmt.format(PlainDate.of(2014, 10, 4)), is("20141000")); } @Test public void parseDateYYYYMM00WithDefault_2() throws ParseException { ChronoFormatter<PlainDate> fmt = // year has variable width! ChronoFormatter.ofDatePattern("uMM'00'", PatternType.CLDR, Locale.ROOT) .withDefault(PlainDate.DAY_OF_MONTH, 4); assertThat( fmt.parse("20141000"), is(PlainDate.of(2014, 10, 4))); } @Test public void parseDateYYYYMM0XWithDefault_3() throws ParseException { ChronoFormatter<PlainDate> fmt = // year has variable width! ChronoFormatter.ofDatePattern("uMM'0x'", PatternType.CLDR, Locale.ROOT) .withDefault(PlainDate.DAY_OF_MONTH, 4); assertThat( fmt.parse("2014100x"), is(PlainDate.of(2014, 10, 4))); } @Test(expected=ParseException.class) public void parseDateYYYYMM00NoDefault_2() throws ParseException { ChronoFormatter<PlainDate> fmt = // year has variable width! ChronoFormatter.ofDatePattern("uMM'00'", PatternType.CLDR, Locale.ROOT); fmt.parse("20141000"); } @Test public void printTimestamp() { ChronoFormatter<PlainTimestamp> fmt = ChronoFormatter.ofTimestampPattern("uMM00HHmm", PatternType.CLDR, Locale.ROOT); assertThat( fmt.format(PlainTimestamp.of(2014, 10, 4, 17, 45)), is("201410001745")); } @Test public void parseTimestampWithDefault() throws ParseException { ChronoFormatter<PlainTimestamp> fmt = // year has variable width! ChronoFormatter.ofTimestampPattern("uMM00HHmm", PatternType.CLDR, Locale.ROOT) .withDefault(PlainDate.DAY_OF_MONTH, 4); assertThat( fmt.parse("201410001745"), is(PlainTimestamp.of(2014, 10, 4, 17, 45))); } @Test(expected=ParseException.class) public void parseTimestampNoDefault() throws ParseException { ChronoFormatter<PlainTimestamp> fmt = // year has variable width! ChronoFormatter.ofTimestampPattern("uMM00HHmm", PatternType.CLDR, Locale.ROOT); fmt.parse("201410001745"); } }