From 956d8fd641ec49c6cf20af9d760a8a80385cb087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 3 Mar 2010 15:44:35 +0100 Subject: [PATCH] ItEr49S04ValidacionEProbasFuncionaisItEr48S04: Fixing bug. When searching the adjacent in the first step the previous intervals are search. It was searching also on the insertion position and this one is a posterior interval. --- .../calendars/entities/AvailabilityTimeLine.java | 8 +++----- .../calendars/entities/AvailabilityTimeLineTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) 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();