package net.time4j.calendar;
import net.time4j.engine.CalendarDays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class EthiopianOperatorTest {
@Test
public void plusYears() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)
.plus(3, EthiopianCalendar.Unit.YEARS),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1738, EthiopianMonth.PAGUMEN, 5)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1738, 1, 1).isLeapYear(),
is(false));
}
@Test
public void plusMonths() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1732, EthiopianMonth.GENBOT, 30)
.plus(17, EthiopianCalendar.Unit.MONTHS),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1733, EthiopianMonth.PAGUMEN, 5)));
}
@Test
public void plusWeeks() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.NEHASSE, 30)
.plus(2, EthiopianCalendar.Unit.WEEKS),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1737, EthiopianMonth.MESKEREM, 9)));
}
@Test
public void plusDays() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.NEHASSE, 30)
.plus(30, EthiopianCalendar.Unit.DAYS),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1737, EthiopianMonth.MESKEREM, 25)));
}
@Test
public void nextMonth() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, 13, 5)
.with(EthiopianCalendar.MONTH_OF_YEAR.incremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1737, 1, 5)));
}
@Test
public void previousMonth() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1737, 1, 5)
.with(EthiopianCalendar.MONTH_OF_YEAR.decremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, 13, 5)));
}
@Test
public void nextYear() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, 13, 6)
.with(EthiopianCalendar.YEAR_OF_ERA.incremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, 13, 5)));
}
@Test
public void previousYear() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, 3, 30)
.with(EthiopianCalendar.YEAR_OF_ERA.decremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, 3, 30)));
}
@Test
public void nextDay() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)
.with(EthiopianCalendar.DAY_OF_YEAR.incremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)
.with(EthiopianCalendar.DAY_OF_MONTH.incremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)
.with(EthiopianCalendar.DAY_OF_WEEK.incremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)));
}
@Test
public void previousDay() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)
.with(EthiopianCalendar.DAY_OF_YEAR.decremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)
.with(EthiopianCalendar.DAY_OF_MONTH.decremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)
.with(EthiopianCalendar.DAY_OF_WEEK.decremented()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
}
@Test
public void maxDay() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MEGABIT, 21)
.with(EthiopianCalendar.DAY_OF_MONTH.maximized()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MEGABIT, 30)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 2)
.with(EthiopianCalendar.DAY_OF_MONTH.maximized()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.PAGUMEN, 2)
.with(EthiopianCalendar.DAY_OF_MONTH.maximized()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.PAGUMEN, 5)));
}
@Test
public void minDay() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MEGABIT, 21)
.with(EthiopianCalendar.DAY_OF_MONTH.minimized()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MEGABIT, 1)));
}
@Test
public void yearAtFloor() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 2)
.with(EthiopianCalendar.YEAR_OF_ERA.atFloor()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MESKEREM, 1)));
}
@Test
public void yearAtCeiling() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.MIAZIA, 2)
.with(EthiopianCalendar.YEAR_OF_ERA.atCeiling()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 2)
.with(EthiopianCalendar.YEAR_OF_ERA.atCeiling()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.PAGUMEN, 5)));
}
@Test
public void monthAtFloor() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 2)
.with(EthiopianCalendar.MONTH_OF_YEAR.atFloor()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 1)));
}
@Test
public void monthAtCeiling() {
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 2)
.with(EthiopianCalendar.MONTH_OF_YEAR.atCeiling()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.MIAZIA, 30)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 2)
.with(EthiopianCalendar.YEAR_OF_ERA.atCeiling()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1735, EthiopianMonth.PAGUMEN, 6)));
assertThat(
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.PAGUMEN, 2)
.with(EthiopianCalendar.YEAR_OF_ERA.atCeiling()),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 1736, EthiopianMonth.PAGUMEN, 5)));
}
@Test(expected=ArithmeticException.class)
public void beforeCreationOfWorld() {
EthiopianCalendar.of(EthiopianEra.AMETE_ALEM, 1, 1, 1).minus(CalendarDays.of(1));
}
@Test(expected=ArithmeticException.class)
public void afterYear9999() {
EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 9999, 13, 6).plus(CalendarDays.of(1));
}
@Test
public void sameMaxInTwoEpochs() {
assertThat(
EthiopianCalendar.axis().getMaximum(),
is(EthiopianCalendar.of(EthiopianEra.AMETE_MIHRET, 9999, 13, 6))
);
assertThat(
EthiopianCalendar.axis().getMaximum(),
is(EthiopianCalendar.of(EthiopianEra.AMETE_ALEM, 15499, 13, 6))
);
}
}