diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java index 67580bac..e449004f 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java @@ -19,6 +19,9 @@ public class TimeWindowsImpl implements TimeWindows { if(timeWindow.getEnd() > tw.getStart() && timeWindow.getEnd() < tw.getEnd()){ throw new IllegalStateException("time-windows cannot overlap each other. overlap: " + tw + ", " + timeWindow); } + if(timeWindow.getStart() <= tw.getStart() && timeWindow.getEnd() >= tw.getEnd()){ + throw new IllegalStateException("time-windows cannot overlap each other. overlap: " + tw + ", " + timeWindow); + } } timeWindows.add(timeWindow); } diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java index ddf7af60..24b08b0d 100644 --- a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java +++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java @@ -20,4 +20,11 @@ public class TimeWindowsImplTest { tws.add(TimeWindow.newInstance(50, 100)); tws.add(TimeWindow.newInstance(40,150)); } + + @Test(expected = IllegalStateException.class) + public void overlappingTW3_shouldThrowException(){ + TimeWindowsImpl tws = new TimeWindowsImpl(); + tws.add(TimeWindow.newInstance(50, 100)); + tws.add(TimeWindow.newInstance(50, 100)); + } }