Add numberOfDaysUntil to IntraDayDate and associated tests
FEA: ItEr62S05BugFixing
This commit is contained in:
parent
a6712ebcf7
commit
d8fd56c765
2 changed files with 46 additions and 0 deletions
|
|
@ -33,6 +33,7 @@ import org.apache.commons.lang.Validate;
|
|||
import org.apache.commons.lang.builder.HashCodeBuilder;
|
||||
import org.hibernate.validator.NotNull;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Days;
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
/**
|
||||
|
|
@ -270,6 +271,16 @@ public class IntraDayDate implements Comparable<IntraDayDate> {
|
|||
return daysUntil(new UntilEnd(endExclusive));
|
||||
}
|
||||
|
||||
public int numberOfDaysUntil(IntraDayDate end) {
|
||||
Validate.isTrue(compareTo(end) <= 0);
|
||||
Days daysBetween = Days.daysBetween(getDate(), end.getDate());
|
||||
if (getEffortDuration().compareTo(end.getEffortDuration()) <= 0) {
|
||||
return daysBetween.getDays();
|
||||
} else {
|
||||
return daysBetween.getDays() - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public Iterable<PartialDay> daysUntil(final UntilEnd predicate) {
|
||||
return new Iterable<IntraDayDate.PartialDay>() {
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -143,6 +143,41 @@ public class IntraDayDateTest {
|
|||
assertThat(IntraDayDate.toList(days), delimitedBy(start, middle, end));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canNowTheNumberOfDaysBetweenTwoDates() {
|
||||
IntraDayDate start = IntraDayDate.create(today, zero());
|
||||
IntraDayDate end = IntraDayDate.create(today.plusDays(1), zero());
|
||||
assertThat(start.numberOfDaysUntil(end), equalTo(1));
|
||||
assertThat(
|
||||
start.numberOfDaysUntil(IntraDayDate.create(today, hours(8))),
|
||||
equalTo(0));
|
||||
assertThat(
|
||||
IntraDayDate.create(today, hours(4)).numberOfDaysUntil(
|
||||
IntraDayDate.create(tomorrow, hours(3))), equalTo(0));
|
||||
assertThat(
|
||||
IntraDayDate.create(today, hours(4)).numberOfDaysUntil(
|
||||
IntraDayDate.create(tomorrow, hours(4))), equalTo(1));
|
||||
assertThat(
|
||||
IntraDayDate.create(today, hours(4)).numberOfDaysUntil(
|
||||
IntraDayDate.create(tomorrow, hours(5))), equalTo(1));
|
||||
assertThat(
|
||||
IntraDayDate.create(today, hours(4)).numberOfDaysUntil(
|
||||
IntraDayDate.create(tomorrow.plusDays(1), hours(3))),
|
||||
equalTo(1));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void theEndMustBeEqualOrBiggerThanTheStart() {
|
||||
IntraDayDate start = IntraDayDate.create(today, zero());
|
||||
IntraDayDate end = IntraDayDate.create(today.plusDays(1), zero());
|
||||
assertThat(end.numberOfDaysUntil(start), equalTo(1));
|
||||
}
|
||||
|
||||
public void theEndCanBeTheSameAsTheStart() {
|
||||
IntraDayDate start = IntraDayDate.create(today, zero());
|
||||
assertThat(start.numberOfDaysUntil(start), equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void worksWellWithEffortDurationsNotZero() {
|
||||
IntraDayDate start = IntraDayDate.create(today, halfHour);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue