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.
This commit is contained in:
Óscar González Fernández 2010-03-03 15:44:35 +01:00
parent 8f23971eb5
commit 956d8fd641
2 changed files with 15 additions and 5 deletions

View file

@ -415,11 +415,9 @@ public class AvailabilityTimeLine {
private List<Interval> getAdjacent(Interval toBeInserted) {
final int insertionPoint = findInsertionPosition(toBeInserted);
List<Interval> result = new ArrayList<Interval>();
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++) {

View file

@ -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();