diff --git a/java/com.googlecode.java-diff-utils.test/src/diffutils/PatchTest.java b/java/com.googlecode.java-diff-utils.test/src/diffutils/PatchTest.java index b6b4d74a8dc..46fe5f417e5 100755 --- a/java/com.googlecode.java-diff-utils.test/src/diffutils/PatchTest.java +++ b/java/com.googlecode.java-diff-utils.test/src/diffutils/PatchTest.java @@ -1,12 +1,13 @@ package diffutils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import junit.framework.TestCase; import difflib.DiffUtils; import difflib.Patch; import difflib.PatchFailedException; -import junit.framework.TestCase; - -import java.util.Arrays; -import java.util.List; public class PatchTest extends TestCase { @@ -45,4 +46,19 @@ public class PatchTest extends TestCase { fail(e.getMessage()); } } + + public void testPatch_EntirelyDifferent() { + final List changeTest_from = new ArrayList(); + changeTest_from.add("aaa"); + changeTest_from.add("bbb"); + final List changeTest_to = Arrays.asList("ccc", "ddd"); + + final Patch patch = DiffUtils.diff(changeTest_from, changeTest_to); + try { + patch.applyToInPlace(changeTest_from); + assertEquals(changeTest_to, changeTest_from); + } catch (PatchFailedException e) { + fail(e.getMessage()); + } + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/CourseImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/CourseImpl.java index a8eb54efbeb..7e63eb41cd4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/CourseImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/CourseImpl.java @@ -81,8 +81,10 @@ public class CourseImpl extends NamedImpl implements Course { boolean isLast = zeroBasedPosition == waypoints.size()-1; Waypoint removedWaypoint = waypoints.remove(zeroBasedPosition); if (isLast) { - // last waypoint was removed; remove last leg - legs.remove(legs.size()-1); + if (waypoints.size() > 1) { + // last waypoint was removed; remove last leg + legs.remove(legs.size() - 1); + } } else { legs.remove(zeroBasedPosition); }