/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* Copyright 2012-2016 the original author or authors.
*/
package org.assertj.db.type;
import org.assertj.db.common.AbstractTest;
import org.junit.Test;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Calendar;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests on the date/time value.
*
* @author RĂ©gis Pouiller
*
*/
public class DateTimeValue_Test extends AbstractTest {
/**
* This method tests the constructor with a {@code String} with only the day.
*/
@Test
public void test_contructor_with_string_only_day() throws ParseException {
DateTimeValue dateTimeValue = new DateTimeValue("2007-12-23");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the constructor with a {@code String} with minutes.
*/
@Test
public void test_contructor_with_string_with_minutes() throws ParseException {
DateTimeValue dateTimeValue = new DateTimeValue("2007-12-23T09:01");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the constructor with a {@code String} with seconds.
*/
@Test
public void test_contructor_with_string_with_seconds() throws ParseException {
DateTimeValue dateTimeValue = new DateTimeValue("2007-12-23T09:01:06");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the constructor with a {@code String} with nanoseconds.
*/
@Test
public void test_contructor_with_string_with_nano() throws ParseException {
DateTimeValue dateTimeValue = new DateTimeValue("2007-12-23T09:01:06.000000003");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to constructor
* with a {@code String}.
*/
@Test(expected = NullPointerException.class)
public void should_constructor_with_string_fail_if_date_is_null() throws ParseException {
new DateTimeValue((String) null);
}
/**
* This method should throw a {@code ParseException} because passing a parameter to constructor with a bad length.
*/
@Test(expected = ParseException.class)
public void should_constructor_with_string_fail_if_date_has_bad_length() throws ParseException {
new DateTimeValue("12345678901");
}
/**
* This method should throw a {@code ParseException} because passing a parameter to constructor with a bad character
* on year.
*/
@Test(expected = ParseException.class)
public void should_constructor_with_string_fail_if_date_has_bad_character_on_year() throws ParseException {
new DateTimeValue("a007-12-23");
}
/**
* This method should throw a {@code ParseException} because passing a parameter to constructor with a bad character
* on separator.
*/
@Test(expected = ParseException.class)
public void should_constructor_with_string_fail_if_date_has_bad_character_on_separator() throws ParseException {
new DateTimeValue("2007a12-23");
}
/**
* This method tests the constructor with a {@code Calendar}.
*/
@Test
public void test_contructor_with_calendar() throws ParseException {
Calendar calendar = Calendar.getInstance();
calendar.set(2007, Calendar.DECEMBER, 23, 9, 1, 6);
calendar.set(Calendar.MILLISECOND, 50);
DateTimeValue dateTimeValue = new DateTimeValue(calendar);
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(50000000);
}
/**
* This method tests the {@code from} method containing seconds.
*/
@Test
public void test_constructor_with_timestamp() throws ParseException {
DateTimeValue dateTimeValue = new DateTimeValue(Timestamp.valueOf("2007-12-23 09:01:06.000000003"));
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to constructor
* with a {@code TimeStamp}.
*/
@Test(expected = NullPointerException.class)
public void should_constructor_with_timestamp_fail_if_date_is_null() throws ParseException {
new DateTimeValue((Timestamp) null);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to constructor
* with a {@code DateValue}.
*/
@Test(expected = NullPointerException.class)
public void should_constructor_with_datevalue_fail_if_date_is_null() throws ParseException {
new DateTimeValue(null, TimeValue.of(9, 1));
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to constructor
* with a {@code TimeValue}.
*/
@Test(expected = NullPointerException.class)
public void should_constructor_with_timevalue_fail_if_time_is_null() throws ParseException {
new DateTimeValue(DateValue.of(2007, 12, 23), null);
}
/**
* This method tests the constructor with values.
*/
@Test
public void test_contructor_with_values() throws ParseException {
DateValue dateValue = new DateValue(2007, 12, 23);
TimeValue timeValue = new TimeValue(9, 1, 6, 3);
DateTimeValue dateTimeValue = new DateTimeValue(dateValue, timeValue);
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method tests the {@code parse} static method with a {@code String} with only the day.
*/
@Test
public void test_parse_only_day() throws ParseException {
DateTimeValue dateTimeValue = DateTimeValue.parse("2007-12-23");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the {@code parse} static method with a {@code String} with minutes.
*/
@Test
public void test_parse_with_minutes() throws ParseException {
DateTimeValue dateTimeValue = DateTimeValue.parse("2007-12-23T09:01");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(0);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the {@code parse} static method with a {@code String} with seconds.
*/
@Test
public void test_parse_with_seconds() throws ParseException {
DateTimeValue dateTimeValue = DateTimeValue.parse("2007-12-23T09:01:06");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(0);
}
/**
* This method tests the {@code parse} static method with a {@code String} with nanoseconds.
*/
@Test
public void test_parse_with_nano() throws ParseException {
DateTimeValue dateTimeValue = DateTimeValue.parse("2007-12-23T09:01:06.000000003");
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to the
* {@code parse} static method.
*/
@Test(expected = NullPointerException.class)
public void should_parse_fail_if_date_is_null() throws ParseException {
DateTimeValue.parse(null);
}
/**
* This method should throw a {@code ParseException} because passing a parameter to {@code parse} static method with a
* bad length.
*/
@Test(expected = ParseException.class)
public void should_parse_fail_if_date_has_bad_length() throws ParseException {
DateTimeValue.parse("12345678901");
}
/**
* This method should throw a {@code ParseException} because passing a parameter to {@code parse} static method with a
* bad character on year.
*/
@Test(expected = ParseException.class)
public void should_parse_fail_if_date_has_bad_character_on_year() throws ParseException {
DateTimeValue.parse("a007-12-23");
}
/**
* This method should throw a {@code ParseException} because passing a parameter to {@code parse} static method with a
* bad character on separator.
*/
@Test(expected = ParseException.class)
public void should_parse_fail_if_date_has_bad_character_on_separator() throws ParseException {
DateTimeValue.parse("2007a12-23");
}
/**
* This method tests the {@code now} static method.
*/
@Test
public void test_now() throws ParseException {
Calendar calendarFirst = Calendar.getInstance();
DateTimeValue dateTimeValue = DateTimeValue.now();
Calendar calendarSecond = Calendar.getInstance();
assertThat(dateTimeValue.getDate().getYear()).isBetween(calendarFirst.get(Calendar.YEAR),
calendarSecond.get(Calendar.YEAR));
if (calendarFirst.get(Calendar.YEAR) == calendarSecond.get(Calendar.YEAR)) {
assertThat(dateTimeValue.getDate().getMonth()).isBetween(calendarFirst.get(Calendar.MONTH) + 1,
calendarSecond.get(Calendar.MONTH) + 1);
}
else {
assertThat(dateTimeValue.getDate().getMonth()).isBetween(calendarFirst.get(Calendar.MONTH) + 1 - 12,
calendarSecond.get(Calendar.MONTH) + 1 + 12);
}
if (calendarFirst.get(Calendar.MONTH) == calendarSecond.get(Calendar.MONTH)) {
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isBetween(calendarFirst.get(Calendar.DAY_OF_MONTH),
calendarSecond.get(Calendar.DAY_OF_MONTH));
}
else {
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isBetween(calendarFirst.get(Calendar.DAY_OF_MONTH) - 31,
calendarSecond.get(Calendar.DAY_OF_MONTH) + 31);
}
if (calendarFirst.get(Calendar.DAY_OF_MONTH) == calendarSecond.get(Calendar.DAY_OF_MONTH)) {
assertThat(dateTimeValue.getTime().getHours()).isBetween(calendarFirst.get(Calendar.HOUR_OF_DAY),
calendarSecond.get(Calendar.HOUR_OF_DAY));
}
else {
assertThat(dateTimeValue.getTime().getHours()).isBetween(calendarFirst.get(Calendar.HOUR_OF_DAY) - 24,
calendarSecond.get(Calendar.HOUR_OF_DAY) + 24);
}
if (calendarFirst.get(Calendar.HOUR_OF_DAY) == calendarSecond.get(Calendar.HOUR_OF_DAY)) {
assertThat(dateTimeValue.getTime().getMinutes()).isBetween(calendarFirst.get(Calendar.MINUTE),
calendarSecond.get(Calendar.MINUTE));
}
else {
assertThat(dateTimeValue.getTime().getMinutes()).isBetween(calendarFirst.get(Calendar.MINUTE) - 60,
calendarSecond.get(Calendar.MINUTE) + 60);
}
if (calendarFirst.get(Calendar.MINUTE) == calendarSecond.get(Calendar.MINUTE)) {
assertThat(dateTimeValue.getTime().getSeconds()).isBetween(calendarFirst.get(Calendar.SECOND),
calendarSecond.get(Calendar.SECOND));
}
else {
assertThat(dateTimeValue.getTime().getSeconds()).isBetween(calendarFirst.get(Calendar.SECOND) - 60,
calendarSecond.get(Calendar.SECOND) + 60);
}
if (calendarFirst.get(Calendar.SECOND) == calendarSecond.get(Calendar.SECOND)) {
assertThat(dateTimeValue.getTime().getNanoSeconds()).isBetween(calendarFirst.get(Calendar.MILLISECOND) * 1000000,
calendarSecond.get(Calendar.MILLISECOND) * 1000000);
}
else {
assertThat(dateTimeValue.getTime().getNanoSeconds()).isBetween(calendarFirst.get(Calendar.MILLISECOND) * 1000000 - 1000000000,
calendarSecond.get(Calendar.MILLISECOND) * 1000000 + 1000000000);
}
}
/**
* This method tests the constructor with a {@code Calendar}.
*/
@Test
public void test_from_calendar() throws ParseException {
Calendar calendar = Calendar.getInstance();
calendar.set(2007, Calendar.DECEMBER, 23, 9, 1, 6);
calendar.set(Calendar.MILLISECOND, 50);
DateTimeValue dateTimeValue = DateTimeValue.from(calendar);
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(50000000);
}
/**
* This method tests the {@code from} method containing seconds.
*/
@Test
public void test_from() throws ParseException {
DateTimeValue dateTimeValue = DateTimeValue.from(Timestamp.valueOf("2007-12-23 09:01:06.000000003"));
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to {@code from}
* method.
*/
@Test(expected = NullPointerException.class)
public void should_from_fail_if_date_is_null() throws ParseException {
DateTimeValue.from((Timestamp) null);
}
/**
* This method should throw a {@code NullPointerException} because passing a {@code null} parameter to {@code from}
* method.
*/
@Test(expected = NullPointerException.class)
public void should_from_fail_if_calendar_is_null() throws ParseException {
DateTimeValue.from((Calendar) null);
}
/**
* This method tests the {@code of} static method.
*/
@Test
public void test_of() throws ParseException {
DateValue dateValue = DateValue.of(2007, 12, 23);
TimeValue timeValue = TimeValue.of(9, 1, 6, 3);
DateTimeValue dateTimeValue = DateTimeValue.of(dateValue, timeValue);
assertThat(dateTimeValue.getDate().getDayOfTheMonth()).isEqualTo(23);
assertThat(dateTimeValue.getDate().getMonth()).isEqualTo(12);
assertThat(dateTimeValue.getDate().getYear()).isEqualTo(2007);
assertThat(dateTimeValue.getTime().getHours()).isEqualTo(9);
assertThat(dateTimeValue.getTime().getMinutes()).isEqualTo(1);
assertThat(dateTimeValue.getTime().getSeconds()).isEqualTo(6);
assertThat(dateTimeValue.getTime().getNanoSeconds()).isEqualTo(3);
}
/**
* This method tests the {@code toString} method.
*/
@Test
public void test_toString() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).toString()).isEqualTo(
"2007-12-23T09:01:06.000000003");
assertThat(DateTimeValue.of(DateValue.of(2007, 2, 3), TimeValue.of(9, 1, 6, 3)).toString()).isEqualTo(
"2007-02-03T09:01:06.000000003");
}
/**
* This method tests the {@code equals} method.
*/
@Test
public void test_equals() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0)).equals(DateValue.of(2007, 12, 23)))
.isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23)).equals(DateValue.of(2007, 12, 24))).isFalse();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23)).equals(DateValue.of(2007, 12, 23))).isTrue();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0)).equals(DateValue.of(2007, 12, 23)))
.isFalse();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 1)).equals(DateValue.of(2007, 12, 23)))
.isFalse();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0, 6)).equals(DateValue.of(2007, 12, 23)))
.isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0, 0, 3)).equals(DateValue.of(2007, 12, 23)))
.isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 7)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).equals(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 4)))).isFalse();
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).equals("")).isFalse();
}
/**
* This method tests the {@code hashCode} method.
*/
@Test
public void test_hashCode() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0)).hashCode()).isEqualTo(2606945);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).hashCode()).isEqualTo(2876025);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6)).hashCode()).isEqualTo(2876031);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).hashCode()).isEqualTo(2876124);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0)).hashCode()).isEqualTo(2875064);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 1)).hashCode()).isEqualTo(2607906);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0, 6)).hashCode()).isEqualTo(2606951);
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0, 0, 3)).hashCode()).isEqualTo(2607038);
}
/**
* This method tests the {@code compareTo} method.
*/
@Test
public void test_compareTo() {
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 2)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 5, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 6, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 1, 6, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 22), TimeValue.of(9, 1, 6, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2006, 12, 23), TimeValue.of(9, 1, 6, 3)))).isEqualTo(1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isEqualTo(0);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 4)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 7, 3)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2, 6, 3)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1, 6, 3)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1, 6, 3)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isEqualTo(-1);
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).compareTo(
DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1, 6, 3)))).isEqualTo(-1);
}
/**
* This method tests the {@code isBefore} method.
*/
@Test
public void test_isBefore() {
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 2)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 5, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 22), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2006, 12, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 4)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 7, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isBefore(
DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1, 6, 3)))).isTrue();
}
/**
* This method tests the {@code isAfter} method.
*/
@Test
public void test_isAfter() {
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 2)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 5, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 22), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2006, 12, 23), TimeValue.of(9, 1, 6, 3)))).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 4)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 7, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isAfter(
DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1, 6, 3)))).isFalse();
}
/**
* This method tests the {@code isMidnight} method.
*/
@Test
public void test_isMidnight() {
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6, 3)).isMidnight()).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 6)).isMidnight()).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).isMidnight()).isFalse();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(0, 0)).isMidnight()).isTrue();
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23)).isMidnight()).isTrue();
}
/**
* This method tests the {@code move} method with a {@code DateValue}.
*/
@Test
public void test_move_date() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 0, 1))).as("add 1 day").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 0, 2))).as("add 2 days").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 25), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 0, -1))).as("substract 1 day").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 22), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 0, -2))).as("substract 2 days").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 21), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 1, 0))).as("add 1 month").isEqualTo(
DateTimeValue.of(DateValue.of(2008, 1, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, 2, 0))).as("add 2 months").isEqualTo(
DateTimeValue.of(DateValue.of(2008, 2, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, -1, 0))).as("substract 1 month").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(0, -2, 0))).as("substract 2 months").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 10, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(1, 0, 0))).as("add 1 year").isEqualTo(
DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(2, 0, 0))).as("add 2 years").isEqualTo(
DateTimeValue.of(DateValue.of(2009, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(-1, 0, 0))).as("substract 1 year").isEqualTo(
DateTimeValue.of(DateValue.of(2006, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(-2, 0, 0))).as("substract 2 years").isEqualTo(
DateTimeValue.of(DateValue.of(2005, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(1, 1, 1))).as("add 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2009, 1, 24), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(2, 2, 2))).as("add 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2010, 2, 25), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(-1, -1, -1))).as("substract 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2006, 11, 22), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateValue.of(-2, -2, -2))).as("substract 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2005, 10, 21), TimeValue.of(9, 1)));
}
/**
* This method tests the {@code move} method with a {@code TimeValue}.
*/
@Test
public void test_move_time() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, 1))).as("add 1 nano").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, 2))).as("add 2 nanos").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, -1))).as("substract 1 nano").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999999999)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, -2))).as("substract 2 nanos").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999999998)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, 1000000))).as("add 1 milli").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 1000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, 2000000))).as("add 2 millis").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 2000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, -1000000))).as("substract 1 milli").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 0, -2000000))).as("substract 2 millis").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 998000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 1))).as("add 1 second").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, 2))).as("add 2 seconds").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, -1))).as("substract 1 second").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 0, -2))).as("substract 2 seconds").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 58, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 1, 0))).as("add 1 minute").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, 2, 0))).as("add 2 minutes").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 3)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, -1, 0))).as("substract 1 minute").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(0, -2, 0))).as("substract 2 minutes").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 59, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(1, 0, 0))).as("add 1 hour").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(2, 0, 0))).as("add 2 hours").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(11, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(-1, 0, 0))).as("substract 1 hour").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 1, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(-2, 0, 0))).as("substract 2 hours").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(7, 1, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(1, 1, 1, 1000000))).as("add 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 2, 1, 1000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(2, 2, 2, 2000000))).as("add 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(11, 3, 2, 2000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(-1, -1, -1, -1000000))).as("substract 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(7, 59, 58, 999000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(TimeValue.of(-2, -2, -2, -2000000))).as("substract 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(6, 58, 57, 998000000)));
}
/**
* This method tests the {@code move} method with a {@code TimeValue}.
*/
@Test
public void test_move_datetime() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1))
.move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, 1)))).as("add 1 nano")
.isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23),
TimeValue.of(9, 1, 0, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, 2)))).as(
"add 2 millis").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, -1)))).as(
"substract 1 nanos").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999999999)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, -2)))).as(
"substract 2 nanos").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999999998)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1))
.move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, 1000000)))).as("add 1 milli")
.isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23),
TimeValue.of(9, 1, 0, 1000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, 2000000)))).as(
"add 2 millis").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 0, 2000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, -1000000)))).as(
"substract 1 milli").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 999000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 0, -2000000)))).as(
"substract 2 millis").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 998000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 1)))).as(
"add 1 second").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, 2)))).as(
"add 2 seconds").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, -1)))).as(
"substract 1 second").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 59, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 0, -2)))).as(
"substract 2 seconds").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 58, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 1, 0)))).as(
"add 1 minute").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 2)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, 2, 0)))).as(
"add 2 minutes").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 3)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, -1, 0)))).as(
"substract 1 minute").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 0, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(0, -2, 0)))).as(
"substract 2 minutes").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 59, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(1, 0, 0)))).as(
"add 1 hour").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(10, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(2, 0, 0)))).as(
"add 2 hours").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(11, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(-1, 0, 0)))).as(
"substract 1 hour").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(8, 1, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 0), TimeValue.of(-2, 0, 0)))).as(
"substract 2 hours").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(7, 1, 0, 0)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 1), TimeValue.of(0, 0)))).as("add 1 day").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 24), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, 2), TimeValue.of(0, 0)))).as("add 2 days").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 25), TimeValue.of(9, 1)));
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, -1), TimeValue.of(0, 0)))).as("substract 1 day").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 22), TimeValue.of(9, 1)));
assertThat(
DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 0, -2), TimeValue.of(0, 0)))).as("substract 2 days").isEqualTo(
DateTimeValue.of(DateValue.of(2007, 12, 21), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 1, 0), TimeValue.of(0, 0)))).as("add 1 month")
.isEqualTo(DateTimeValue.of(
DateValue
.of(2008,
1,
23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, 2, 0), TimeValue.of(0, 0)))).as("add 2 months")
.isEqualTo(DateTimeValue.of(DateValue.of(2008, 2, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, -1, 0), TimeValue.of(0, 0)))).as("substract 1 month")
.isEqualTo(DateTimeValue.of(DateValue.of(2007, 11, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(0, -2, 0), TimeValue.of(0, 0)))).as("substract 2 months")
.isEqualTo(DateTimeValue.of(DateValue.of(2007, 10, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(1, 0, 0), TimeValue.of(0, 0)))).as("add 1 year")
.isEqualTo(DateTimeValue.of(DateValue.of(2008, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(2, 0, 0), TimeValue.of(0, 0)))).as("add 2 years")
.isEqualTo(DateTimeValue.of(DateValue.of(2009, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(-1, 0, 0), TimeValue.of(0, 0)))).as("substract 1 year")
.isEqualTo(DateTimeValue.of(DateValue.of(2006, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(-2, 0, 0), TimeValue.of(0, 0)))).as("substract 2 years")
.isEqualTo(DateTimeValue.of(DateValue.of(2005, 12, 23), TimeValue.of(9, 1)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(1, 1, 1), TimeValue.of(1, 1, 1, 1000000)))).as(
"add 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2009, 1, 24), TimeValue.of(10, 2, 1, 1000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(2, 2, 2), TimeValue.of(2, 2, 2, 2000000)))).as(
"add 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2010, 2, 25), TimeValue.of(11, 3, 2, 2000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(-1, -1, -1), TimeValue.of(-1, -1, -1, -1000000)))).as(
"substract 1 all").isEqualTo(
DateTimeValue.of(DateValue.of(2006, 11, 22), TimeValue.of(7, 59, 58, 999000000)));
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).move(DateTimeValue.of(DateValue.of(-2, -2, -2), TimeValue.of(-2, -2, -2, -2000000)))).as(
"substract 2 all").isEqualTo(
DateTimeValue.of(DateValue.of(2005, 10, 21), TimeValue.of(6, 58, 57, 998000000)));
}
/**
* This method tests the {@code reverse} method with a {@code DateValue}.
*/
@Test
public void test_reverse() {
assertThat(DateTimeValue.of(DateValue.of(2007, 12, 23), TimeValue.of(9, 1)).reverse())
.isEqualTo(DateTimeValue.of(DateValue.of(-2007, -12, -23), TimeValue.of(-9, -1)));
assertThat(DateTimeValue.of(DateValue.of(1, 1, 1), TimeValue.of(1, 1, 1, 1)).reverse())
.isEqualTo(DateTimeValue.of(DateValue.of(-1, -1, -1), TimeValue.of(-1, -1, -1, -1)));
}
}