package net.time4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static net.time4j.CalendarUnit.DAYS;
import static net.time4j.CalendarUnit.WEEKS;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class DayArithmeticTest {
@Test
public void plusWeeks() {
assertThat(
PlainDate.of(2013, 12, 31).plus(3, WEEKS),
is(PlainDate.of(2014, 1, 21)));
}
@Test
public void minusWeeks() {
assertThat(
PlainDate.of(2014, 1, 21).minus(3, WEEKS),
is(PlainDate.of(2013, 12, 31)));
}
@Test
public void plusZero() {
PlainDate date = PlainDate.of(2014, 5, 24);
assertThat(
date.plus(0, DAYS) == date,
is(true));
}
@Test
public void minusZero() {
PlainDate date = PlainDate.of(2014, 5, 24);
assertThat(
date.minus(0, DAYS) == date,
is(true));
}
@Test
public void plusDays() {
assertThat(
PlainDate.of(2013, 12, 31).plus(3, DAYS),
is(PlainDate.of(2014, 1, 3)));
assertThat(
PlainDate.of(2014, 10, 31).plus(370, DAYS),
is(PlainDate.of(2015, 11, 5)));
assertThat(
PlainDate.of(2011, 10, 31).plus(370, DAYS),
is(PlainDate.of(2012, 11, 4)));
}
@Test
public void minusDays() {
assertThat(
PlainDate.of(2014, 1, 3).minus(3, DAYS),
is(PlainDate.of(2013, 12, 31)));
assertThat(
PlainDate.of(2015, 11, 5).minus(370, DAYS),
is(PlainDate.of(2014, 10, 31)));
assertThat(
PlainDate.of(2012, 11, 4).minus(370, DAYS),
is(PlainDate.of(2011, 10, 31)));
}
@Test
public void daysBetween() {
assertThat(
DAYS.between(
PlainDate.of(2011, 12, 30),
PlainDate.of(2014, 1, 3)),
is(735L));
assertThat(
DAYS.between(
PlainDate.of(2013, 12, 30),
PlainDate.of(2014, 1, 3)),
is(4L));
assertThat(
DAYS.between(
PlainDate.of(2014, 1, 3),
PlainDate.of(2011, 12, 30)),
is(-735L));
assertThat(
DAYS.between(
PlainDate.of(2014, 1, 3),
PlainDate.of(2013, 12, 30)),
is(-4L));
}
@Test
public void weeksBetween() {
assertThat(
WEEKS.between(
PlainDate.of(2011, 12, 30),
PlainDate.of(2014, 1, 3)),
is(735L / 7));
assertThat(
WEEKS.between(
PlainDate.of(2012, 2, 20),
PlainDate.of(2012, 3, 5)),
is(2L));
assertThat(
WEEKS.between(
PlainDate.of(2012, 2, 20),
PlainDate.of(2012, 3, 4)),
is(1L));
assertThat(
WEEKS.between(
PlainDate.of(2012, 3, 4),
PlainDate.of(2012, 2, 20)),
is(-1L));
assertThat(
WEEKS.between(
PlainDate.of(2012, 3, 5),
PlainDate.of(2012, 2, 20)),
is(-2L));
}
}