/*
* Copyright 2011-2013 the original author or authors.
*
* 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.
*/
package kr.debop4j.timeperiod.test.calendars;
import kr.debop4j.timeperiod.calendars.DateDiff;
import kr.debop4j.timeperiod.test.TimePeriodTestBase;
import kr.debop4j.timeperiod.tools.Durations;
import kr.debop4j.timeperiod.tools.TimeSpec;
import kr.debop4j.timeperiod.tools.Times;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.junit.Test;
import static org.fest.assertions.Assertions.assertThat;
/**
* kr.debop4j.timeperiod.test.calendars.DateDiffTest
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 13. 5. 26. 오후 6:55
*/
@Slf4j
public class DateDiffTest extends TimePeriodTestBase {
@Test
public void emptyDataDiff() {
DateTime now = Times.now();
DateDiff dateDiff = new DateDiff(now, now);
assertThat(dateDiff.isEmpty()).isTrue();
assertThat(dateDiff.getDifference()).isEqualTo(Durations.Zero);
assertThat(dateDiff.getYears()).isEqualTo(0);
assertThat(dateDiff.getQuarters()).isEqualTo(0);
assertThat(dateDiff.getMonths()).isEqualTo(0);
assertThat(dateDiff.getWeeks()).isEqualTo(0);
assertThat(dateDiff.getDays()).isEqualTo(0);
assertThat(dateDiff.getHours()).isEqualTo(0);
assertThat(dateDiff.getMinutes()).isEqualTo(0);
assertThat(dateDiff.getSeconds()).isEqualTo(0);
assertThat(dateDiff.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff.getElapsedSeconds()).isEqualTo(0);
}
@Test
public void differenceTest() {
DateTime date1 = new DateTime(2008, 10, 12, 15, 32, 44, 243);
DateTime date2 = new DateTime(2010, 1, 3, 23, 22, 9, 345);
DateDiff dateDiff = new DateDiff(date1, date2);
assertThat(dateDiff.getDifference()).isEqualTo(new Duration(date1, date2));
}
@Test
public void yearsTest() {
int[] years = new int[] { 1, 3, 15 };
for (int year : years) {
DateTime date1 = Times.now();
DateTime date2 = date1.plusYears(year);
DateTime date3 = date1.plusYears(-year);
log.trace("date1=[{}], date2=[{}], date3=[{}]", date1, date2, date3);
DateDiff dateDiff12 = new DateDiff(date1, date2);
assertThat(dateDiff12.getElapsedYears()).isEqualTo(year);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(year);
assertThat(dateDiff12.getQuarters()).isEqualTo(year * TimeSpec.QuartersPerYear);
assertThat(dateDiff12.getMonths()).isEqualTo(year * TimeSpec.MonthsPerYear);
int date12Days = (int) Durations.create(date1, date2).getStandardDays();
assertThat(dateDiff12.getDays()).isEqualTo(date12Days);
assertThat(dateDiff12.getHours()).isEqualTo(date12Days * TimeSpec.HoursPerDay);
assertThat(dateDiff12.getMinutes()).isEqualTo(date12Days * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(date12Days * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
assertThat(dateDiff13.getElapsedYears()).isEqualTo(-year);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(-year);
assertThat(dateDiff13.getQuarters()).isEqualTo(-year * TimeSpec.QuartersPerYear);
assertThat(dateDiff13.getMonths()).isEqualTo(-year * TimeSpec.MonthsPerYear);
int date13Days = (int) Durations.create(date1, date3).getStandardDays();
assertThat(dateDiff13.getDays()).isEqualTo(date13Days);
assertThat(dateDiff13.getHours()).isEqualTo(date13Days * TimeSpec.HoursPerDay);
assertThat(dateDiff13.getMinutes()).isEqualTo(date13Days * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(date13Days * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
}
@Test
public void quartersTest() {
DateTime date1 = new DateTime(2011, 5, 15, 15, 32, 44, 245);
DateTime date2 = date1.plusMonths(TimeSpec.MonthsPerQuarter);
DateTime date3 = date1.plusMonths(-TimeSpec.MonthsPerQuarter);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int days12 = (int) Durations.create(date1, date2).getStandardDays();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(TimeSpec.MonthsPerQuarter);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(1);
assertThat(dateDiff12.getMonths()).isEqualTo(TimeSpec.MonthsPerQuarter);
assertThat(dateDiff12.getWeeks()).isEqualTo(14);
assertThat(dateDiff12.getDays()).isEqualTo(days12);
assertThat(dateDiff12.getHours()).isEqualTo(days12 * TimeSpec.HoursPerDay);
assertThat(dateDiff12.getMinutes()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int days13 = (int) Durations.create(date1, date3).getStandardDays();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(-TimeSpec.MonthsPerQuarter);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(-1);
assertThat(dateDiff13.getMonths()).isEqualTo(-TimeSpec.MonthsPerQuarter);
assertThat(dateDiff13.getWeeks()).isEqualTo(-12);
assertThat(dateDiff13.getDays()).isEqualTo(days13);
assertThat(dateDiff13.getHours()).isEqualTo(days13 * TimeSpec.HoursPerDay);
assertThat(dateDiff13.getMinutes()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
@Test
public void monthsTest() {
DateTime date1 = new DateTime(2011, 5, 15, 15, 32, 44, 245);
DateTime date2 = date1.plusMonths(1);
DateTime date3 = date1.plusMonths(-1);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int days12 = (int) Durations.create(date1, date2).getStandardDays();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(1);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(1);
assertThat(dateDiff12.getWeeks()).isEqualTo(5);
assertThat(dateDiff12.getDays()).isEqualTo(days12);
assertThat(dateDiff12.getHours()).isEqualTo(days12 * TimeSpec.HoursPerDay);
assertThat(dateDiff12.getMinutes()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int days13 = (int) Durations.create(date1, date3).getStandardDays();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(-1);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(-1);
assertThat(dateDiff13.getWeeks()).isEqualTo(-4);
assertThat(dateDiff13.getDays()).isEqualTo(days13);
assertThat(dateDiff13.getHours()).isEqualTo(days13 * TimeSpec.HoursPerDay);
assertThat(dateDiff13.getMinutes()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
@Test
public void weekTest() {
DateTime date1 = new DateTime(2011, 5, 15, 15, 32, 44, 245);
DateTime date2 = date1.plusWeeks(1);
DateTime date3 = date1.plusWeeks(-1);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int days12 = (int) Durations.create(date1, date2).getStandardDays();
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(0);
assertThat(dateDiff12.getWeeks()).isEqualTo(1);
assertThat(dateDiff12.getDays()).isEqualTo(days12);
assertThat(dateDiff12.getHours()).isEqualTo(days12 * TimeSpec.HoursPerDay);
assertThat(dateDiff12.getMinutes()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int days13 = (int) Durations.create(date1, date3).getStandardDays();
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(0);
assertThat(dateDiff13.getWeeks()).isEqualTo(-1);
assertThat(dateDiff13.getDays()).isEqualTo(days13);
assertThat(dateDiff13.getHours()).isEqualTo(days13 * TimeSpec.HoursPerDay);
assertThat(dateDiff13.getMinutes()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
@Test
public void daysTest() {
int[] days = new int[] { 1, 3 };
for (int day : days) {
DateTime date1 = new DateTime(2011, 5, 19, 15, 32, 44, 245);
DateTime date2 = date1.plusDays(day);
DateTime date3 = date1.plusDays(-day);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int days12 = (int) Durations.create(date1, date2).getStandardDays();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(day);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(0);
assertThat(dateDiff12.getWeeks()).isEqualTo(0);
assertThat(dateDiff12.getDays()).isEqualTo(days12);
assertThat(dateDiff12.getHours()).isEqualTo(days12 * TimeSpec.HoursPerDay);
assertThat(dateDiff12.getMinutes()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(days12 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int days13 = (int) Durations.create(date1, date3).getStandardDays();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(-day);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(0);
assertThat(dateDiff13.getWeeks()).isEqualTo(0);
assertThat(dateDiff13.getDays()).isEqualTo(days13);
assertThat(dateDiff13.getHours()).isEqualTo(days13 * TimeSpec.HoursPerDay);
assertThat(dateDiff13.getMinutes()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(days13 * TimeSpec.HoursPerDay * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
}
@Test
public void hoursTest() {
int[] hours = new int[] { 1, 3, 5 };
for (int hour : hours) {
DateTime date1 = new DateTime(2011, 5, 19, 15, 32, 44, 245);
DateTime date2 = date1.plusHours(hour);
DateTime date3 = date1.plusHours(-hour);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int hours12 = (int) Durations.create(date1, date2).getStandardHours();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(hour);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(0);
assertThat(dateDiff12.getWeeks()).isEqualTo(0);
assertThat(dateDiff12.getDays()).isEqualTo(0);
assertThat(dateDiff12.getHours()).isEqualTo(hours12);
assertThat(dateDiff12.getMinutes()).isEqualTo(hours12 * TimeSpec.MinutesPerHour);
assertThat(dateDiff12.getSeconds()).isEqualTo(hours12 * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int hours13 = (int) Durations.create(date1, date3).getStandardHours();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(-hour);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(0);
assertThat(dateDiff13.getWeeks()).isEqualTo(0);
assertThat(dateDiff13.getDays()).isEqualTo(0);
assertThat(dateDiff13.getHours()).isEqualTo(hours13);
assertThat(dateDiff13.getMinutes()).isEqualTo(hours13 * TimeSpec.MinutesPerHour);
assertThat(dateDiff13.getSeconds()).isEqualTo(hours13 * TimeSpec.MinutesPerHour * TimeSpec.SecondsPerMinute);
}
}
@Test
public void minutesTest() {
int[] minutes = new int[] { 1, 3, 5 };
for (int minute : minutes) {
DateTime date1 = new DateTime(2011, 5, 19, 15, 32, 44, 245);
DateTime date2 = date1.plusMinutes(minute);
DateTime date3 = date1.plusMinutes(-minute);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int minute12 = (int) Durations.create(date1, date2).getStandardMinutes();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(minute);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(0);
assertThat(dateDiff12.getWeeks()).isEqualTo(0);
assertThat(dateDiff12.getDays()).isEqualTo(0);
assertThat(dateDiff12.getHours()).isEqualTo(0);
assertThat(dateDiff12.getMinutes()).isEqualTo(minute12);
assertThat(dateDiff12.getSeconds()).isEqualTo(minute12 * TimeSpec.SecondsPerMinute);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int minute13 = (int) Durations.create(date1, date3).getStandardMinutes();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(-minute);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(0);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(0);
assertThat(dateDiff13.getWeeks()).isEqualTo(0);
assertThat(dateDiff13.getDays()).isEqualTo(0);
assertThat(dateDiff13.getHours()).isEqualTo(0);
assertThat(dateDiff13.getMinutes()).isEqualTo(minute13);
assertThat(dateDiff13.getSeconds()).isEqualTo(minute13 * TimeSpec.SecondsPerMinute);
}
}
@Test
public void secondsTest() {
int[] seconds = new int[] { 1, 3, 5 };
for (int second : seconds) {
DateTime date1 = new DateTime(2011, 5, 19, 15, 32, 44, 245);
DateTime date2 = date1.plusSeconds(second);
DateTime date3 = date1.plusSeconds(-second);
DateDiff dateDiff12 = new DateDiff(date1, date2);
int second12 = (int) Durations.create(date1, date2).getStandardSeconds();
assertThat(dateDiff12.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(second);
assertThat(dateDiff12.getYears()).isEqualTo(0);
assertThat(dateDiff12.getQuarters()).isEqualTo(0);
assertThat(dateDiff12.getMonths()).isEqualTo(0);
assertThat(dateDiff12.getWeeks()).isEqualTo(0);
assertThat(dateDiff12.getDays()).isEqualTo(0);
assertThat(dateDiff12.getHours()).isEqualTo(0);
assertThat(dateDiff12.getMinutes()).isEqualTo(0);
assertThat(dateDiff12.getSeconds()).isEqualTo(second12);
DateDiff dateDiff13 = new DateDiff(date1, date3);
int second13 = (int) Durations.create(date1, date3).getStandardSeconds();
assertThat(dateDiff13.getElapsedYears()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(0);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(0);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(0);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(0);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(-second);
assertThat(dateDiff13.getYears()).isEqualTo(0);
assertThat(dateDiff13.getQuarters()).isEqualTo(0);
assertThat(dateDiff13.getMonths()).isEqualTo(0);
assertThat(dateDiff13.getWeeks()).isEqualTo(0);
assertThat(dateDiff13.getDays()).isEqualTo(0);
assertThat(dateDiff13.getHours()).isEqualTo(0);
assertThat(dateDiff13.getMinutes()).isEqualTo(0);
assertThat(dateDiff13.getSeconds()).isEqualTo(second13);
}
}
@Test
public void positiveDurationTest() {
int[] diffs = new int[] { 1, 3, 5 };
for (int diff : diffs) {
DateTime date1 = Times.now();
DateTime date2 = date1.plusYears(diff).plusMonths(diff).plusDays(diff).plusHours(diff).plusMinutes(diff).plusSeconds(diff);
DateTime date3 = date1.minusYears(diff).minusMonths(diff).minusDays(diff).minusHours(diff).minusMinutes(diff).minusSeconds(diff);
DateDiff dateDiff12 = new DateDiff(date1, date2);
assertThat(dateDiff12.getElapsedYears()).isEqualTo(diff);
assertThat(dateDiff12.getElapsedMonths()).isEqualTo(diff);
assertThat(dateDiff12.getElapsedDays()).isEqualTo(diff);
assertThat(dateDiff12.getElapsedHours()).isEqualTo(diff);
assertThat(dateDiff12.getElapsedMinutes()).isEqualTo(diff);
assertThat(dateDiff12.getElapsedSeconds()).isEqualTo(diff);
DateDiff dateDiff13 = new DateDiff(date1, date3);
assertThat(dateDiff13.getElapsedYears()).isEqualTo(-diff);
assertThat(dateDiff13.getElapsedMonths()).isEqualTo(-diff);
assertThat(dateDiff13.getElapsedDays()).isEqualTo(-diff);
assertThat(dateDiff13.getElapsedHours()).isEqualTo(-diff);
assertThat(dateDiff13.getElapsedMinutes()).isEqualTo(-diff);
assertThat(dateDiff13.getElapsedSeconds()).isEqualTo(-diff);
}
}
}