@Test public void plusMonths() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(1, MONTHS), is(PlainTimestamp.of(2012, 2, 29, 12, 45))); assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(48, MONTHS), is(PlainTimestamp.of(2016, 1, 31, 12, 45))); }
@Test public void daysBetween() { assertThat( DAYS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 45)), is(29L)); assertThat( DAYS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 44, 59)), is(28L)); }
@Test public void monthsBetween() { assertThat( MONTHS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 45)), is(0L)); assertThat( MONTHS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 44, 59)), is(0L)); assertThat( MONTHS.between( PlainTimestamp.of(2012, 1, 29, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 45)), is(1L)); assertThat( MONTHS.between( PlainTimestamp.of(2012, 1, 29, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 44, 59)), is(0L)); assertThat( PlainTimestamp.of(2012, 1, 29, 12, 45) .until(PlainTimestamp.of(2012, 3, 28, 12, 44, 59), MONTHS.withCarryOver()), is(1L)); }
@Test public void plusMinutes() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(1501, MINUTES), is(PlainTimestamp.of(2012, 2, 1, 13, 46))); assertThat( PlainTimestamp.of(2012, 1, 31, 23, 59).plus(1, MINUTES), is(PlainTimestamp.of(2012, 2, 1, 0, 0))); assertThat( PlainTimestamp.of(2012, 2, 1, 0, 0).plus(1, MINUTES), is(PlainTimestamp.of(2012, 2, 1, 0, 1))); }
@Test public void plusHours() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(3, HOURS), is(PlainTimestamp.of(2012, 1, 31, 15, 45))); assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(30, HOURS), is(PlainTimestamp.of(2012, 2, 1, 18, 45))); assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(55, HOURS), is(PlainTimestamp.of(2012, 2, 2, 19, 45))); }
@Test public void hoursBetween() { assertThat( HOURS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 13, 47)), is(29 * 24L + 1)); assertThat( HOURS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 45)), is(29 * 24L)); assertThat( HOURS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 44, 59)), is(28 * 24L + 23)); assertThat( HOURS.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 11, 44, 59)), is(28 * 24L + 22)); }
@Test public void minusMinutes() { int amount = 28 * 24 * 60 + 22 * 60 + 58; assertThat( PlainTimestamp.of(2012, 2, 29, 11, 43, 59).minus(amount, MINUTES), is(PlainTimestamp.of(2012, 1, 31, 12, 45, 59))); assertThat( PlainTimestamp.of(2012, 2, 1, 0, 0).minus(1, MINUTES), is(PlainTimestamp.of(2012, 1, 31, 23, 59))); assertThat( PlainTimestamp.of(2012, 2, 1, 0, 1).minus(1, MINUTES), is(PlainTimestamp.of(2012, 2, 1, 0, 0))); }
@Test(expected = ArithmeticException.class) public void plusNanosOnMax2() { PlainTimestamp.axis().getMaximum().plus(Duration.of(1, NANOS)); }
@Test public void plusNanos() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45, 30).plus(123456789, NANOS), is(PlainDate.of(2012, 1, 31).at(PlainTime.of(12, 45, 30, 123456789)))); }
@Test public void plusMillis() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(36000001, MILLIS), is(PlainDate.of(2012, 1, 31).at(PlainTime.of(22, 45, 0, 1000000)))); }
@Test public void plusDays() { assertThat( PlainTimestamp.of(2012, 1, 31, 12, 45).plus(30, DAYS), is(PlainTimestamp.of(2012, 3, 1, 12, 45))); }
@Test public void millisBetween() { assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MILLI_OF_SECOND, 3), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MILLI_OF_SECOND, 4)), is(29 * 86400L * 1000 + 1)); assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MILLI_OF_SECOND, 4), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MILLI_OF_SECOND, 4)), is(29 * 86400L * 1000)); assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MILLI_OF_SECOND, 5), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MILLI_OF_SECOND, 4)), is(29 * 86400L * 1000 - 1)); assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MICRO_OF_SECOND, 3018), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MICRO_OF_SECOND, 3018)), is(29 * 86400L * 1000)); assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MICRO_OF_SECOND, 3019), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MICRO_OF_SECOND, 3018)), is(29 * 86400L * 1000 - 1)); assertThat( MILLIS.between( PlainTimestamp.of(2012, 1, 31, 11, 43, 59).with(MICRO_OF_SECOND, 4019), PlainTimestamp.of(2012, 2, 29, 11, 43, 59).with(MICRO_OF_SECOND, 3018)), is(29 * 86400L * 1000 - 2)); }
@Test public void minutesBetween() { assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 15, 47, 30)), is(29 * 24 * 60L + 182)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 47)), is(29 * 24 * 60L + 2)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 45)), is(29 * 24 * 60L)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 12, 44, 59)), is(28 * 24 * 60L + 23 * 60 + 59)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45), PlainTimestamp.of(2012, 2, 29, 11, 43, 59)), is(28 * 24 * 60L + 22 * 60 + 58)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45, 37), PlainTimestamp.of(2012, 2, 29, 11, 43, 38)), is(28 * 24 * 60L + 22 * 60 + 58)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45, 37), PlainTimestamp.of(2012, 2, 29, 11, 43, 37)), is(28 * 24 * 60L + 22 * 60 + 58)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 1, 31, 12, 45, 37), PlainTimestamp.of(2012, 2, 29, 11, 43, 36)), is(28 * 24 * 60L + 22 * 60 + 57)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 2, 29, 11, 43, 59), PlainTimestamp.of(2012, 1, 31, 12, 45)), is(-28 * 24 * 60L - 22 * 60 - 58)); assertThat( MINUTES.between( PlainTimestamp.of(2012, 2, 29, 11, 43, 36), PlainTimestamp.of(2012, 1, 31, 12, 45, 37)), is(-28 * 24 * 60L - 22 * 60 - 57)); }