From 8d38e1012eaefa19c4108e3e279c3a85fcc88bbc Mon Sep 17 00:00:00 2001 From: Tobias Warneke Date: Sat, 27 Feb 2021 01:32:45 +0100 Subject: [PATCH] first test with conflict output --- .../com/github/difflib/patch/PatchTest.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchTest.java b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchTest.java index 84208da..311b6aa 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchTest.java @@ -14,6 +14,7 @@ import java.util.List; import org.junit.jupiter.api.Test; import com.github.difflib.DiffUtils; +import java.util.ArrayList; public class PatchTest { @@ -78,4 +79,48 @@ public class PatchTest { } } + + @Test + public void testPatch_Change_withExceptionProcessor() { + final List changeTest_from = Arrays.asList("aaa", "bbb", "ccc", "ddd"); + final List changeTest_to = Arrays.asList("aaa", "bxb", "cxc", "ddd"); + + final Patch patch = DiffUtils.diff(changeTest_from, changeTest_to); + + changeTest_from.set(2, "CDC"); + + patch.withConflictOutput(new ConflictOutput() { + @Override + public void processConflict(VerifyChunk verifyChunk, AbstractDelta delta, List result) throws PatchFailedException { + if (result.size() > delta.getSource().getPosition()) { + List orgData = new ArrayList<>(); + + for (int i = 0; i < delta.getSource().size(); i++) { + orgData.add(result.get(delta.getSource().getPosition())); + result.remove(delta.getSource().getPosition()); + } + + orgData.add(0, "<<<<<< HEAD"); + orgData.add("======"); + orgData.addAll(delta.getSource().getLines()); + orgData.add(">>>>>>> PATCH"); + + result.addAll(delta.getSource().getPosition(), orgData); + + } else { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + } + }); + + try { + List data = DiffUtils.patch(changeTest_from, patch); + assertEquals(9, data.size()); + + assertEquals(Arrays.asList("aaa", "<<<<<< HEAD", "bbb", "CDC", "======", "bbb", "ccc", ">>>>>>> PATCH", "ddd"), data); + + } catch (PatchFailedException e) { + fail(e.getMessage()); + } + } }