package net.time4j.calendar;
import net.time4j.CalendarUnit;
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 ThaiSolarOperatorTest {
@Test
public void plusYears() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2478, 2, 29).plus(4, CalendarUnit.YEARS),
is(ThaiSolarCalendar.ofBuddhist(2482, 2, 29)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 1, 1).isLeapYear(),
is(true));
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 29).plus(2, CalendarUnit.YEARS),
is(ThaiSolarCalendar.ofBuddhist(2485, 2, 28)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2485, 1, 1).isLeapYear(),
is(false));
}
@Test
public void plusMonths() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 29).plus(15, CalendarUnit.MONTHS),
is(ThaiSolarCalendar.ofBuddhist(2484, 5, 29)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 2, 29).plus(15, CalendarUnit.MONTHS),
is(ThaiSolarCalendar.ofBuddhist(2548, 5, 29)));
}
@Test
public void plusWeeks() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 31).plus(2, CalendarUnit.WEEKS),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 14)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 31).plus(2, CalendarUnit.WEEKS),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 14)));
}
@Test
public void plusDays() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 30).plus(3, CalendarUnit.DAYS),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 2)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 30).plus(3, CalendarUnit.DAYS),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 2)));
}
@Test
public void nextMonth() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 30).with(ThaiSolarCalendar.MONTH_OF_YEAR.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 30)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 30).with(ThaiSolarCalendar.MONTH_OF_YEAR.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 30)));
}
@Test
public void previousMonth() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2483, 4, 30).with(ThaiSolarCalendar.MONTH_OF_YEAR.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 30)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 4, 30).with(ThaiSolarCalendar.MONTH_OF_YEAR.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 3, 30)));
}
@Test
public void nextYear() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 30).with(ThaiSolarCalendar.YEAR_OF_ERA.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2484, 3, 30)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 30).with(ThaiSolarCalendar.YEAR_OF_ERA.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2548, 3, 30)));
}
@Test
public void previousYear() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2484, 3, 30).with(ThaiSolarCalendar.YEAR_OF_ERA.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 30)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2548, 3, 30).with(ThaiSolarCalendar.YEAR_OF_ERA.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 3, 30)));
}
@Test
public void nextDay() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 31).with(ThaiSolarCalendar.DAY_OF_YEAR.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 31).with(ThaiSolarCalendar.DAY_OF_YEAR.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 31).with(ThaiSolarCalendar.DAY_OF_MONTH.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 31).with(ThaiSolarCalendar.DAY_OF_MONTH.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 3, 31).with(ThaiSolarCalendar.DAY_OF_WEEK.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2483, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 3, 31).with(ThaiSolarCalendar.DAY_OF_WEEK.incremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 4, 1)));
}
@Test
public void previousDay() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2483, 4, 1).with(ThaiSolarCalendar.DAY_OF_YEAR.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 4, 1).with(ThaiSolarCalendar.DAY_OF_YEAR.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2483, 4, 1).with(ThaiSolarCalendar.DAY_OF_MONTH.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 4, 1).with(ThaiSolarCalendar.DAY_OF_MONTH.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2483, 4, 1).with(ThaiSolarCalendar.DAY_OF_WEEK.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 4, 1).with(ThaiSolarCalendar.DAY_OF_WEEK.decremented()),
is(ThaiSolarCalendar.ofBuddhist(2547, 3, 31)));
}
@Test
public void maxDay() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 1).with(ThaiSolarCalendar.DAY_OF_MONTH.maximized()),
is(ThaiSolarCalendar.ofBuddhist(2482, 2, 29)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2484, 2, 1).with(ThaiSolarCalendar.DAY_OF_MONTH.maximized()),
is(ThaiSolarCalendar.ofBuddhist(2484, 2, 28)));
}
@Test
public void minDay() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 29).with(ThaiSolarCalendar.DAY_OF_MONTH.minimized()),
is(ThaiSolarCalendar.ofBuddhist(2482, 2, 1)));
}
@Test
public void yearAtFloor() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 11).with(ThaiSolarCalendar.YEAR_OF_ERA.atFloor()),
is(ThaiSolarCalendar.ofBuddhist(2482, 4, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 2, 11).with(ThaiSolarCalendar.YEAR_OF_ERA.atFloor()),
is(ThaiSolarCalendar.ofBuddhist(2547, 1, 1)));
}
@Test
public void yearAtCeiling() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 1).with(ThaiSolarCalendar.YEAR_OF_ERA.atCeiling()),
is(ThaiSolarCalendar.ofBuddhist(2482, 3, 31)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 2, 1).with(ThaiSolarCalendar.YEAR_OF_ERA.atCeiling()),
is(ThaiSolarCalendar.ofBuddhist(2547, 12, 31)));
}
@Test
public void monthAtFloor() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 29).with(ThaiSolarCalendar.MONTH_OF_YEAR.atFloor()),
is(ThaiSolarCalendar.ofBuddhist(2482, 2, 1)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 2, 29).with(ThaiSolarCalendar.MONTH_OF_YEAR.atFloor()),
is(ThaiSolarCalendar.ofBuddhist(2547, 2, 1)));
}
@Test
public void monthAtCeiling() {
assertThat(
ThaiSolarCalendar.ofBuddhist(2482, 2, 1).with(ThaiSolarCalendar.MONTH_OF_YEAR.atCeiling()),
is(ThaiSolarCalendar.ofBuddhist(2482, 2, 29)));
assertThat(
ThaiSolarCalendar.ofBuddhist(2547, 2, 1).with(ThaiSolarCalendar.MONTH_OF_YEAR.atCeiling()),
is(ThaiSolarCalendar.ofBuddhist(2547, 2, 29)));
}
}