diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/LineMapper.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/LineMapper.java index 968b1f6af6..8ddb19e600 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/LineMapper.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/LineMapper.java @@ -52,11 +52,9 @@ class LineMapper { void appendReplace(int aLen, int bLen) { appendCommon(Math.min(aLen, bLen)); if (aLen < bLen) { // Edit with insertion - int insertCnt = bLen - aLen; - appendInsert(insertCnt); + appendInsert(bLen - aLen); } else if (aLen > bLen) { // Edit with deletion - int deleteCnt = aLen - bLen; - appendDelete(deleteCnt); + appendDelete(aLen - bLen); } } diff --git a/gerrit-gwtui/src/test/java/com/google/gerrit/client/diff/LineMapperTest.java b/gerrit-gwtui/src/test/java/com/google/gerrit/client/diff/LineMapperTest.java index 756e879319..25c827012a 100644 --- a/gerrit-gwtui/src/test/java/com/google/gerrit/client/diff/LineMapperTest.java +++ b/gerrit-gwtui/src/test/java/com/google/gerrit/client/diff/LineMapperTest.java @@ -102,4 +102,31 @@ public class LineMapperTest { assertEquals(new LineOnOtherInfo(10, true), mapper.lineOnOther(DisplaySide.B, 0)); } + + @Test + public void testReplaceWithInsertInB() { + // 0 c c + // 1 a b + // 2 a b + // 3 - b + // 4 - b + // 5 c c + LineMapper mapper = new LineMapper(); + mapper.appendCommon(1); + mapper.appendReplace(2, 4); + mapper.appendCommon(1); + + assertEquals(4, mapper.getLineA()); + assertEquals(6, mapper.getLineB()); + + assertEquals(new LineOnOtherInfo(1, true), + mapper.lineOnOther(DisplaySide.B, 1)); + assertEquals(new LineOnOtherInfo(3, true), + mapper.lineOnOther(DisplaySide.B, 5)); + + assertEquals(new LineOnOtherInfo(2, true), + mapper.lineOnOther(DisplaySide.B, 2)); + assertEquals(new LineOnOtherInfo(2, false), + mapper.lineOnOther(DisplaySide.B, 3)); + } }