diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/AvailabilityTimeLine.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/AvailabilityTimeLine.java index 7806e875a..903eff0ad 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/AvailabilityTimeLine.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/AvailabilityTimeLine.java @@ -415,11 +415,9 @@ public class AvailabilityTimeLine { private List getAdjacent(Interval toBeInserted) { final int insertionPoint = findInsertionPosition(toBeInserted); List result = new ArrayList(); - for (int i = insertionPoint; i >= 0 - && (i == invalids.size() || at(i).overlaps(toBeInserted)); i--) { - if (i < invalids.size()) { - result.add(at(i)); - } + assert insertionPoint <= invalids.size(); + for (int i = insertionPoint - 1; i >= 0 && at(i).overlaps(toBeInserted); i--) { + result.add(at(i)); } for (int i = insertionPoint; i < invalids.size() && at(i).overlaps(toBeInserted); i++) { diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/AvailabilityTimeLineTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/AvailabilityTimeLineTest.java index 704899097..d5f9b8f60 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/AvailabilityTimeLineTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/calendars/entities/AvailabilityTimeLineTest.java @@ -129,6 +129,18 @@ public class AvailabilityTimeLineTest { } } + @Test + public void pointsAreMergedCorrectly() { + AvailabilityTimeLine timeLine = AvailabilityTimeLine.allValid(); + + timeLine.invalidAt(new LocalDate(2010, 4, 7)); + timeLine.invalidAt(new LocalDate(2010, 4, 11)); + timeLine.invalidAt(new LocalDate(2010, 4, 8)); + timeLine.invalidAt(new LocalDate(2010, 4, 6)); + + assertFalse(timeLine.isValid(new LocalDate(2010, 4, 8))); + } + @Test(expected = IllegalArgumentException.class) public void endMustBeAfterStart() { AvailabilityTimeLine timeLine = AvailabilityTimeLine.allValid();