package net.time4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static net.time4j.PlainDate.YEAR_OF_WEEKDATE;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class YOWOperatorTest {
@Test
public void minimized() {
// [1997-W01-2])
assertThat(
PlainDate.of(1996, 12, 31).with(YEAR_OF_WEEKDATE.minimized()),
is(PlainDate.of(-999999999, 1, 2)));
}
@Test
public void maximized() {
// [1997-W01-2])
assertThat(
PlainDate.of(1996, 12, 31).with(YEAR_OF_WEEKDATE.maximized()),
is(PlainDate.of(999999999, 1, 5)));
}
@Test
public void decremented() {
// [1997-W01-2])
assertThat(
PlainDate.of(1996, 12, 31).with(YEAR_OF_WEEKDATE.decremented()),
is(PlainDate.of(1996, 1, 2))); // 1996-W01-2
}
@Test
public void incrementedNormal() {
// [1997-W01-2])
assertThat(
PlainDate.of(1996, 12, 31).with(YEAR_OF_WEEKDATE.incremented()),
is(PlainDate.of(1997, 12, 30))); // 1998-W01-2
}
@Test
public void incrementedKW53() {
assertThat(
PlainDate.of(2004, 53, Weekday.MONDAY)
.with(YEAR_OF_WEEKDATE.incremented()),
is(PlainDate.of(2005, 12, 26))); // 2005-W52-1
}
@Test
public void atFloor() {
assertThat(
PlainDate.of(2004, 5, 1).with(YEAR_OF_WEEKDATE.atFloor()),
is(PlainDate.of(2004, 1, Weekday.MONDAY)));
}
@Test
public void atCeiling() {
assertThat(
PlainDate.of(2004, 5, 1).with(YEAR_OF_WEEKDATE.atCeiling()),
is(PlainDate.of(2004, 53, Weekday.SUNDAY)));
}
@Test
public void minimizedOnTimestamp() {
// [1997-W01-2])
PlainTimestamp ts =
PlainDate.of(1996, 12, 31).atStartOfDay();
assertThat(
ts.with(YEAR_OF_WEEKDATE.minimized()),
is(PlainDate.of(-999999999, 1, 2).atStartOfDay()));
}
@Test
public void maximizedOnTimestamp() {
// [1997-W01-2])
PlainTimestamp ts =
PlainDate.of(1996, 12, 31).atStartOfDay();
assertThat(
ts.with(YEAR_OF_WEEKDATE.maximized()),
is(PlainDate.of(999999999, 1, 5).atStartOfDay()));
}
@Test
public void decrementedOnTimestamp() {
// [1997-W01-2])
PlainTimestamp ts =
PlainDate.of(1996, 12, 31).atStartOfDay();
assertThat(
ts.with(YEAR_OF_WEEKDATE.decremented()),
is(PlainDate.of(1996, 1, 2).atStartOfDay())); // 1996-W01-2
}
@Test
public void incrementedNormalOnTimestamp() {
// [1997-W01-2])
PlainTimestamp ts =
PlainDate.of(1996, 12, 31).atStartOfDay();
assertThat(
ts.with(YEAR_OF_WEEKDATE.incremented()),
is(PlainDate.of(1997, 12, 30).atStartOfDay())); // 1998-W01-2
}
@Test
public void incrementedKW53OnTimestamp() {
PlainTimestamp ts =
PlainDate.of(2004, 53, Weekday.MONDAY).atStartOfDay();
assertThat(
ts.with(YEAR_OF_WEEKDATE.incremented()),
is(PlainDate.of(2005, 12, 26).atStartOfDay())); // 2005-W52-1
}
@Test
public void atFloorOnTimestamp() {
PlainTimestamp ts =
PlainTimestamp.of(2004, 5, 1, 12, 45);
assertThat(
ts.with(YEAR_OF_WEEKDATE.atFloor()),
is(PlainDate.of(2004, 1, Weekday.MONDAY).atStartOfDay()));
}
@Test
public void atCeilingOnTimestamp() {
PlainTimestamp ts =
PlainTimestamp.of(2004, 5, 1, 12, 45);
PlainTimestamp expected =
PlainDate
.of(2004, 53, Weekday.SUNDAY)
.at(PlainTime.of(23, 59, 59, 999999999));
assertThat(
ts.with(YEAR_OF_WEEKDATE.atCeiling()),
is(expected));
}
}