package net.time4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static net.time4j.PlainTime.*;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class SetLenientTest {
@Test
public void nanoOfDayLenient() {
assertThat(
PlainTime.midnightAtStartOfDay().with(NANO_OF_DAY.setLenient(-1L)),
is(PlainTime.of(23, 59, 59, 999999999)));
assertThat(
PlainTime.midnightAtStartOfDay()
.with(NANO_OF_DAY.setLenient(86400 * 1000000000L + 1)),
is(PlainTime.of(0, 0, 0, 1)));
}
@Test
public void microOfDayLenient() {
assertThat(
PlainTime.of(6, 45, 20, 1).with(MICRO_OF_DAY.setLenient(-1L)),
is(PlainTime.of(23, 59, 59, 999999001)));
assertThat(
PlainTime.midnightAtStartOfDay().with(MICRO_OF_DAY.setLenient(-1L)),
is(PlainTime.of(23, 59, 59, 999999000)));
assertThat(
PlainTime.midnightAtStartOfDay()
.with(MICRO_OF_DAY.setLenient(86400 * 1000000L + 1)),
is(PlainTime.of(0, 0, 0, 1000)));
}
@Test
public void milliOfDayLenient() {
assertThat(
PlainTime.of(6, 45, 20, 1).with(MILLI_OF_DAY.setLenient(-1)),
is(PlainTime.of(23, 59, 59, 999000001)));
assertThat(
PlainTime.midnightAtStartOfDay().with(MILLI_OF_DAY.setLenient(-1)),
is(PlainTime.of(23, 59, 59, 999000000)));
assertThat(
PlainTime.midnightAtStartOfDay()
.with(MILLI_OF_DAY.setLenient(86400 * 1000 + 1)),
is(PlainTime.of(0, 0, 0, 1000000)));
}
@Test
public void nanoOfSecondLenient() {
assertThat(
PlainTime.of(6, 0, 0, 123456789)
.with(NANO_OF_SECOND.setLenient(-1)),
is(PlainTime.of(5, 59, 59, 999999999)));
}
@Test
public void microOfSecondLenient() {
assertThat(
PlainTime.of(6, 0, 0, 123456789)
.with(MICRO_OF_SECOND.setLenient(-1)),
is(PlainTime.of(5, 59, 59, 999999789)));
}
@Test
public void milliOfSecondLenient() {
assertThat(
PlainTime.of(6, 0, 0, 123456789)
.with(MILLI_OF_SECOND.setLenient(-1)),
is(PlainTime.of(5, 59, 59, 999456789)));
}
@Test
public void secondOfDayLenient() {
assertThat(
PlainTime.of(6, 45, 20, 1)
.with(SECOND_OF_DAY.setLenient(-1)),
is(PlainTime.of(23, 59, 59, 1)));
}
@Test
public void minuteOfDayLenient() {
assertThat(
PlainTime.of(6, 45, 20, 1)
.with(MINUTE_OF_DAY.setLenient(-1)),
is(PlainTime.of(23, 59, 20, 1)));
}
@Test
public void secondOfMinuteLenient() {
assertThat(
PlainTime.of(6, 0, 30, 123456789)
.with(SECOND_OF_MINUTE.setLenient(61)),
is(PlainTime.of(6, 1, 1, 123456789)));
}
@Test
public void minuteOfHourLenient() {
assertThat(
PlainTime.of(6, 0, 30, 123456789)
.with(MINUTE_OF_HOUR.setLenient(61)),
is(PlainTime.of(7, 1, 30, 123456789)));
}
@Test
public void digitalHourOfDayLenient() {
assertThat(
PlainTime.of(6, 12, 30).with(DIGITAL_HOUR_OF_DAY.setLenient(25)),
is(PlainTime.of(1, 12, 30)));
}
@Test
public void digitalHourOfAmPmLenient() {
assertThat(
PlainTime.of(6, 12, 30).with(DIGITAL_HOUR_OF_AMPM.setLenient(14)),
is(PlainTime.of(14, 12, 30)));
}
@Test
public void isoHourLenient() {
assertThat(
PlainTime.of(6, 12, 30).with(ISO_HOUR.setLenient(25)),
is(PlainTime.of(1, 12, 30)));
}
@Test
public void monthAsNumberLenient() {
assertThat(
PlainDate.of(2014, 4, 20)
.with(PlainDate.MONTH_AS_NUMBER.setLenient(13)),
is(PlainDate.of(2015, 1, 20)));
}
@Test
public void dayOfYearLenient() {
assertThat(
PlainDate.of(2014, 4, 20)
.with(PlainDate.DAY_OF_YEAR.setLenient(367)),
is(PlainDate.of(2015, 1, 2)));
}
@Test
public void dayOfQuarterLenient() {
assertThat(
PlainDate.of(2014, 4, 20)
.with(PlainDate.DAY_OF_QUARTER.setLenient(93)),
is(PlainDate.of(2014, 7, 2)));
}
@Test
public void dayOfMonthLenient() {
assertThat(
PlainDate.of(2014, 4, 20)
.with(PlainDate.DAY_OF_MONTH.setLenient(32)),
is(PlainDate.of(2014, 5, 2)));
}
@Test
public void digitalHourOfDayLenientOnTimestamp() {
assertThat(
PlainTimestamp.of(2014, 5, 9, 1, 12, 30)
.with(DIGITAL_HOUR_OF_DAY.setLenient(48)),
is(PlainTimestamp.of(2014, 5, 11, 0, 12, 30)));
}
@Test
public void digitalHourOfAmPmLenientOnTimestamp() {
assertThat(
PlainTimestamp.of(2014, 5, 9, 1, 12, 30)
.with(DIGITAL_HOUR_OF_AMPM.setLenient(48)),
is(PlainTimestamp.of(2014, 5, 11, 0, 12, 30)));
}
@Test
public void isoHourLenientOnTimestamp() {
assertThat(
PlainTimestamp.of(2014, 5, 9, 1, 12, 30)
.with(ISO_HOUR.setLenient(48)),
is(PlainTimestamp.of(2014, 5, 11, 0, 12, 30)));
}
@Test
public void minuteOfHourLenientOnTimestamp() {
assertThat(
PlainTimestamp.of(2014, 5, 9, 23, 59, 30)
.with(MINUTE_OF_HOUR.setLenient(60)),
is(PlainTimestamp.of(2014, 5, 10, 0, 0, 30)));
}
@Test
public void dayOfMonthLenientOnTimestamp() {
assertThat(
PlainTimestamp.of(2014, 5, 9, 23, 59, 30)
.with(PlainDate.DAY_OF_MONTH.setLenient(33)),
is(PlainTimestamp.of(2014, 6, 2, 23, 59, 30)));
assertThat(
PlainTimestamp.of(2012, 2, 9, 23, 59, 30)
.with(PlainDate.DAY_OF_MONTH.setLenient(33)),
is(PlainTimestamp.of(2012, 3, 4, 23, 59, 30)));
}
}