package net.time4j; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.text.ParseException; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class DurationOrTest { @Test public void parseEnglishText() throws ParseException { Duration<?> duration = Duration.of(3, CalendarUnit.DAYS); Duration.Formatter<?> f = Duration.formatter("{D: :en:ONE=day:OTHER=days}|{D: :de:ONE=Tag:OTHER=Tage}"); assertThat( f.parse("3 days"), is(duration)); assertThat( f.format(duration), is("3 days")); } @Test public void parseGermanText() throws ParseException { Duration<?> duration = Duration.of(3, CalendarUnit.DAYS); Duration.Formatter<?> f = Duration.formatter("{D: :en:ONE=day:OTHER=days}|{D: :de:ONE=Tag:OTHER=Tage}"); assertThat( f.parse("3 Tage"), is(duration)); assertThat( f.format(duration), is("3 days")); } @Test public void parseTripleText() throws ParseException { Duration.Formatter<?> f = Duration.formatter("{D: :en:ONE=day:OTHER=days}|+hh:mm|{D: :de:ONE=Tag:OTHER=Tage}"); assertThat( f.parse("3 days"), is(Duration.of(3, CalendarUnit.DAYS))); assertThat( f.parse("-33:45"), is(Duration.ofClockUnits(33, 45, 0).inverse())); assertThat( f.parse("3 Tage"), is(Duration.of(3, CalendarUnit.DAYS))); } @Test(expected=IllegalArgumentException.class) public void parsePatternWithStartingOr() { Duration.formatter("|{D: :en:ONE=day:OTHER=days}|+hh:mm|{D: :de:ONE=Tag:OTHER=Tage}"); } @Test(expected=IllegalArgumentException.class) public void parsePatternWithEndingOr() { Duration.formatter("{D: :en:ONE=day:OTHER=days}|+hh:mm|{D: :de:ONE=Tag:OTHER=Tage}|"); } @Test(expected=ParseException.class) public void parseInvalid() throws ParseException { Duration.Formatter<?> f = Duration.formatter("{D: :en:ONE=day:OTHER=days}|+hh:mm|{D: :de:ONE=Tag:OTHER=Tage}"); f.parse("3 jours"); } }