package net.time4j; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static net.time4j.PlainDate.DAY_OF_WEEK; import static net.time4j.PlainDate.MONTH_OF_YEAR; import static net.time4j.PlainDate.QUARTER_OF_YEAR; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class NavigationOperatorTest { @Test public void nextDayOfWeek() { assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToNext(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 25))); assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToNext(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 28))); } @Test public void previousDayOfWeek() { assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToPrevious(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 18))); assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToPrevious(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 14))); } @Test public void nextOrSameDayOfWeek() { assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToNextOrSame(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 25))); assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToNextOrSame(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 21))); } @Test public void previousOrSameDayOfWeek() { assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToPreviousOrSame(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 18))); assertThat( PlainDate.of(2014, 4, 21) .with(DAY_OF_WEEK.setToPreviousOrSame(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 21))); } @Test public void nextMonth() { assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToNext(Month.MARCH)), is(PlainDate.of(2015, 3, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToNext(Month.APRIL)), is(PlainDate.of(2015, 4, 21))); } @Test public void previousMonth() { assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToPrevious(Month.MARCH)), is(PlainDate.of(2014, 3, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToPrevious(Month.APRIL)), is(PlainDate.of(2013, 4, 21))); } @Test public void nextOrSameMonth() { assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToNextOrSame(Month.MARCH)), is(PlainDate.of(2015, 3, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToNextOrSame(Month.APRIL)), is(PlainDate.of(2014, 4, 21))); } @Test public void previousOrSameMonth() { assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToPreviousOrSame(Month.MARCH)), is(PlainDate.of(2014, 3, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(MONTH_OF_YEAR.setToPreviousOrSame(Month.APRIL)), is(PlainDate.of(2014, 4, 21))); } @Test public void nextQuarterOfYear() { assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToNext(Quarter.Q3)), is(PlainDate.of(2014, 7, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToNext(Quarter.Q2)), is(PlainDate.of(2015, 4, 21))); } @Test public void previousQuarterOfYear() { assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToPrevious(Quarter.Q3)), is(PlainDate.of(2013, 7, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToPrevious(Quarter.Q2)), is(PlainDate.of(2013, 4, 21))); } @Test public void nextOrSameQuarterOfYear() { assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToNextOrSame(Quarter.Q3)), is(PlainDate.of(2014, 7, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToNextOrSame(Quarter.Q2)), is(PlainDate.of(2014, 4, 21))); } @Test public void previousOrSameQuarterOfYear() { assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToPreviousOrSame(Quarter.Q3)), is(PlainDate.of(2013, 7, 21))); assertThat( PlainDate.of(2014, 4, 21) .with(QUARTER_OF_YEAR.setToPreviousOrSame(Quarter.Q2)), is(PlainDate.of(2014, 4, 21))); } @Test public void nextDayOfWeekOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToNext(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 25).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToNext(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 28).atStartOfDay())); } @Test public void previousDayOfWeekOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToPrevious(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 18).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToPrevious(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 14).atStartOfDay())); } @Test public void nextOrSameDayOfWeekOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToNextOrSame(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 25).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToNextOrSame(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } @Test public void previousOrSameDayOfWeekOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToPreviousOrSame(Weekday.FRIDAY)), is(PlainDate.of(2014, 4, 18).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( DAY_OF_WEEK.setToPreviousOrSame(Weekday.MONDAY)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } @Test public void nextMonthOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToNext(Month.MARCH)), is(PlainDate.of(2015, 3, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToNext(Month.APRIL)), is(PlainDate.of(2015, 4, 21).atStartOfDay())); } @Test public void previousMonthOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToPrevious(Month.MARCH)), is(PlainDate.of(2014, 3, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToPrevious(Month.APRIL)), is(PlainDate.of(2013, 4, 21).atStartOfDay())); } @Test public void nextOrSameMonthOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToNextOrSame(Month.MARCH)), is(PlainDate.of(2015, 3, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToNextOrSame(Month.APRIL)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } @Test public void previousOrSameMonthOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToPreviousOrSame(Month.MARCH)), is(PlainDate.of(2014, 3, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( MONTH_OF_YEAR.setToPreviousOrSame(Month.APRIL)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } @Test public void nextQuarterOfYearOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToNext(Quarter.Q3)), is(PlainDate.of(2014, 7, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToNext(Quarter.Q2)), is(PlainDate.of(2015, 4, 21).atStartOfDay())); } @Test public void previousQuarterOfYearOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToPrevious(Quarter.Q3)), is(PlainDate.of(2013, 7, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToPrevious(Quarter.Q2)), is(PlainDate.of(2013, 4, 21).atStartOfDay())); } @Test public void nextOrSameQuarterOfYearOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToNextOrSame(Quarter.Q3)), is(PlainDate.of(2014, 7, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToNextOrSame(Quarter.Q2)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } @Test public void previousOrSameQuarterOfYearOnTimestamp() { assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToPreviousOrSame(Quarter.Q3)), is(PlainDate.of(2013, 7, 21).atStartOfDay())); assertThat( PlainDate.of(2014, 4, 21).atStartOfDay().with( QUARTER_OF_YEAR.setToPreviousOrSame(Quarter.Q2)), is(PlainDate.of(2014, 4, 21).atStartOfDay())); } }