From dc5ecb8dedbcaa8d72789b46a53e155c9ae87284 Mon Sep 17 00:00:00 2001 From: Tobias Warneke Date: Sun, 20 Nov 2022 12:04:13 +0100 Subject: [PATCH] fixes #159 --- CHANGELOG.md | 4 +++- .../src/main/java/com/github/difflib/DiffUtils.java | 6 +++--- .../myers/{MeyersDiff.java => MyersDiff.java} | 12 ++++++------ ...inearSpace.java => MyersDiffWithLinearSpace.java} | 10 +++++----- .../test/java/com/github/difflib/DiffUtilsTest.java | 2 +- .../difflib/algorithm/myers/MyersDiffTest.java | 4 ++-- ...ceTest.java => MyersDiffWithLinearSpaceTest.java} | 8 ++++---- ...va => WithMyersDiffWithLinearSpacePatchTest.java} | 12 ++++++------ .../patch/PatchWithAllDiffAlgorithmsTest.java | 11 +++++------ ...MeyerDiffTest.java => PatchWithMyerDiffTest.java} | 2 +- ...ava => PatchWithMyerDiffWithLinearSpaceTest.java} | 10 +++++----- 11 files changed, 41 insertions(+), 40 deletions(-) rename java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/{MeyersDiff.java => MyersDiff.java} (95%) rename java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/{MeyersDiffWithLinearSpace.java => MyersDiffWithLinearSpace.java} (96%) rename java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/{MeyersDiffWithLinearSpaceTest.java => MyersDiffWithLinearSpaceTest.java} (90%) rename java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/{WithMeyersDiffWithLinearSpacePatchTest.java => WithMyersDiffWithLinearSpacePatchTest.java} (97%) rename java-diff-utils/src/test/java/com/github/difflib/patch/{PatchWithMeyerDiffTest.java => PatchWithMyerDiffTest.java} (98%) rename java-diff-utils/src/test/java/com/github/difflib/patch/{PatchWithMeyerDiffWithLinearSpaceTest.java => PatchWithMyerDiffWithLinearSpaceTest.java} (85%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f5dab3..1c81782 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project uses a custom versioning scheme (and not [Semantic Versioning](https://semver.org/spec/v2.0.0.html)). -## [unreleased] +## [4.13] + +* API change: due to Issue #159: the author of the algorithm is Eugene Myers, therefore classes and methods were renamed accordingly ### Changed diff --git a/java-diff-utils/src/main/java/com/github/difflib/DiffUtils.java b/java-diff-utils/src/main/java/com/github/difflib/DiffUtils.java index 44a8cff..493d905 100644 --- a/java-diff-utils/src/main/java/com/github/difflib/DiffUtils.java +++ b/java-diff-utils/src/main/java/com/github/difflib/DiffUtils.java @@ -18,7 +18,7 @@ package com.github.difflib; import com.github.difflib.algorithm.DiffAlgorithmFactory; import com.github.difflib.algorithm.DiffAlgorithmI; import com.github.difflib.algorithm.DiffAlgorithmListener; -import com.github.difflib.algorithm.myers.MeyersDiff; +import com.github.difflib.algorithm.myers.MyersDiff; import com.github.difflib.patch.AbstractDelta; import com.github.difflib.patch.Patch; import com.github.difflib.patch.PatchFailedException; @@ -37,7 +37,7 @@ public final class DiffUtils { /** * This factory generates the DEFAULT_DIFF algorithm for all these routines. */ - static DiffAlgorithmFactory DEFAULT_DIFF = MeyersDiff.factory(); + static DiffAlgorithmFactory DEFAULT_DIFF = MyersDiff.factory(); public static void withDefaultDiffAlgorithmFactory(DiffAlgorithmFactory factory) { DEFAULT_DIFF = factory; @@ -95,7 +95,7 @@ public final class DiffUtils { return DiffUtils.diff(source, target, DEFAULT_DIFF.create(equalizer)); } - return DiffUtils.diff(source, target, new MeyersDiff<>()); + return DiffUtils.diff(source, target, new MyersDiff<>()); } public static Patch diff(List original, List revised, diff --git a/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiff.java b/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiff.java similarity index 95% rename from java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiff.java rename to java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiff.java index 7daa91d..54ffed9 100644 --- a/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiff.java +++ b/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiff.java @@ -27,17 +27,17 @@ import java.util.Objects; import java.util.function.BiPredicate; /** - * A clean-room implementation of Eugene Meyers greedy differencing algorithm. + * A clean-room implementation of Eugene Myers greedy differencing algorithm. */ -public final class MeyersDiff implements DiffAlgorithmI { +public final class MyersDiff implements DiffAlgorithmI { private final BiPredicate equalizer; - public MeyersDiff() { + public MyersDiff() { equalizer = Object::equals; } - public MeyersDiff(final BiPredicate equalizer) { + public MyersDiff(final BiPredicate equalizer) { Objects.requireNonNull(equalizer, "equalizer must not be null"); this.equalizer = equalizer; } @@ -187,13 +187,13 @@ public final class MeyersDiff implements DiffAlgorithmI { @Override public DiffAlgorithmI create() { - return new MeyersDiff(); + return new MyersDiff(); } @Override public DiffAlgorithmI create(BiPredicate < T, T > equalizer) { - return new MeyersDiff(equalizer); + return new MyersDiff(equalizer); } }; } diff --git a/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpace.java b/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpace.java similarity index 96% rename from java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpace.java rename to java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpace.java index bb3577f..6d4451b 100644 --- a/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpace.java +++ b/java-diff-utils/src/main/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpace.java @@ -30,15 +30,15 @@ import java.util.function.Consumer; * * @author tw */ -public class MeyersDiffWithLinearSpace implements DiffAlgorithmI { +public class MyersDiffWithLinearSpace implements DiffAlgorithmI { private final BiPredicate equalizer; - public MeyersDiffWithLinearSpace() { + public MyersDiffWithLinearSpace() { equalizer = Object::equals; } - public MeyersDiffWithLinearSpace(final BiPredicate equalizer) { + public MyersDiffWithLinearSpace(final BiPredicate equalizer) { Objects.requireNonNull(equalizer, "equalizer must not be null"); this.equalizer = equalizer; } @@ -231,13 +231,13 @@ public class MeyersDiffWithLinearSpace implements DiffAlgorithmI { @Override public DiffAlgorithmI create() { - return new MeyersDiffWithLinearSpace(); + return new MyersDiffWithLinearSpace(); } @Override public DiffAlgorithmI create(BiPredicate < T, T > equalizer) { - return new MeyersDiffWithLinearSpace(equalizer); + return new MyersDiffWithLinearSpace(equalizer); } }; } diff --git a/java-diff-utils/src/test/java/com/github/difflib/DiffUtilsTest.java b/java-diff-utils/src/test/java/com/github/difflib/DiffUtilsTest.java index 000b095..a753a51 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/DiffUtilsTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/DiffUtilsTest.java @@ -132,7 +132,7 @@ public class DiffUtilsTest { } /** - * To test this, the greedy meyer algorithm is not suitable. + * To test this, the greedy Myer algorithm is not suitable. */ @Test @Disabled diff --git a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffTest.java b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffTest.java index 10db0e4..1e233a8 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffTest.java @@ -34,7 +34,7 @@ public class MyersDiffTest { public void testDiffMyersExample1Forward() { List original = Arrays.asList("A", "B", "C", "A", "B", "B", "A"); List revised = Arrays.asList("C", "B", "A", "B", "A", "C"); - final Patch patch = Patch.generate(original, revised, new MeyersDiff().computeDiff(original, revised, null)); + final Patch patch = Patch.generate(original, revised, new MyersDiff().computeDiff(original, revised, null)); assertNotNull(patch); assertEquals(4, patch.getDeltas().size()); assertEquals("Patch{deltas=[[DeleteDelta, position: 0, lines: [A, B]], [InsertDelta, position: 3, lines: [B]], [DeleteDelta, position: 5, lines: [B]], [InsertDelta, position: 7, lines: [C]]]}", patch.toString()); @@ -47,7 +47,7 @@ public class MyersDiffTest { List logdata = new ArrayList<>(); final Patch patch = Patch.generate(original, revised, - new MeyersDiff().computeDiff(original, revised, new DiffAlgorithmListener() { + new MyersDiff().computeDiff(original, revised, new DiffAlgorithmListener() { @Override public void diffStart() { logdata.add("start"); diff --git a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpaceTest.java b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpaceTest.java similarity index 90% rename from java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpaceTest.java rename to java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpaceTest.java index 7a10f1f..b63876a 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MeyersDiffWithLinearSpaceTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/MyersDiffWithLinearSpaceTest.java @@ -30,13 +30,13 @@ import static org.junit.jupiter.api.Assertions.*; * * @author tw */ -public class MeyersDiffWithLinearSpaceTest { +public class MyersDiffWithLinearSpaceTest { @Test public void testDiffMyersExample1Forward() { List original = Arrays.asList("A", "B", "C", "A", "B", "B", "A"); List revised = Arrays.asList("C", "B", "A", "B", "A", "C"); - final Patch patch = Patch.generate(original, revised, new MeyersDiffWithLinearSpace().computeDiff(original, revised, null)); + final Patch patch = Patch.generate(original, revised, new MyersDiffWithLinearSpace().computeDiff(original, revised, null)); assertNotNull(patch); System.out.println(patch); assertEquals(5, patch.getDeltas().size()); @@ -50,7 +50,7 @@ public class MeyersDiffWithLinearSpaceTest { List logdata = new ArrayList<>(); final Patch patch = Patch.generate(original, revised, - new MeyersDiffWithLinearSpace().computeDiff(original, revised, new DiffAlgorithmListener() { + new MyersDiffWithLinearSpace().computeDiff(original, revised, new DiffAlgorithmListener() { @Override public void diffStart() { logdata.add("start"); @@ -84,7 +84,7 @@ public class MeyersDiffWithLinearSpaceTest { .collect(toList()); long start = System.currentTimeMillis(); - Patch diff = DiffUtils.diff(old, newl, new MeyersDiffWithLinearSpace()); + Patch diff = DiffUtils.diff(old, newl, new MyersDiffWithLinearSpace()); long end = System.currentTimeMillis(); System.out.println("Finished in " + (end - start) + "ms and resulted " + diff.getDeltas().size() + " deltas"); } diff --git a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMeyersDiffWithLinearSpacePatchTest.java b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMyersDiffWithLinearSpacePatchTest.java similarity index 97% rename from java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMeyersDiffWithLinearSpacePatchTest.java rename to java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMyersDiffWithLinearSpacePatchTest.java index 65ea183..522eff5 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMeyersDiffWithLinearSpacePatchTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/algorithm/myers/WithMyersDiffWithLinearSpacePatchTest.java @@ -22,14 +22,14 @@ import org.junit.jupiter.api.Test; import com.github.difflib.DiffUtils; -public class WithMeyersDiffWithLinearSpacePatchTest { +public class WithMyersDiffWithLinearSpacePatchTest { @Test public void testPatch_Insert() { final List insertTest_from = Arrays.asList("hhh"); final List insertTest_to = Arrays.asList("hhh", "jjj", "kkk", "lll"); - final Patch patch = DiffUtils.diff(insertTest_from, insertTest_to, new MeyersDiffWithLinearSpace()); + final Patch patch = DiffUtils.diff(insertTest_from, insertTest_to, new MyersDiffWithLinearSpace()); try { assertEquals(insertTest_to, DiffUtils.patch(insertTest_from, patch)); } catch (PatchFailedException e) { @@ -42,7 +42,7 @@ public class WithMeyersDiffWithLinearSpacePatchTest { final List deleteTest_from = Arrays.asList("ddd", "fff", "ggg", "hhh"); final List deleteTest_to = Arrays.asList("ggg"); - final Patch patch = DiffUtils.diff(deleteTest_from, deleteTest_to, new MeyersDiffWithLinearSpace()); + final Patch patch = DiffUtils.diff(deleteTest_from, deleteTest_to, new MyersDiffWithLinearSpace()); try { assertEquals(deleteTest_to, DiffUtils.patch(deleteTest_from, patch)); } catch (PatchFailedException e) { @@ -55,7 +55,7 @@ public class WithMeyersDiffWithLinearSpacePatchTest { 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, new MeyersDiffWithLinearSpace()); + final Patch patch = DiffUtils.diff(changeTest_from, changeTest_to, new MyersDiffWithLinearSpace()); try { assertEquals(changeTest_to, DiffUtils.patch(changeTest_from, patch)); } catch (PatchFailedException e) { @@ -166,7 +166,7 @@ public class WithMeyersDiffWithLinearSpacePatchTest { 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, new MeyersDiffWithLinearSpace()); + final Patch patch = DiffUtils.diff(changeTest_from, changeTest_to, new MyersDiffWithLinearSpace()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(patch); @@ -189,7 +189,7 @@ public class WithMeyersDiffWithLinearSpacePatchTest { 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, new MeyersDiffWithLinearSpace()); + final Patch patch = DiffUtils.diff(changeTest_from, changeTest_to, new MyersDiffWithLinearSpace()); changeTest_from.set(2, "CDC"); diff --git a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithAllDiffAlgorithmsTest.java b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithAllDiffAlgorithmsTest.java index 82e7229..a973151 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithAllDiffAlgorithmsTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithAllDiffAlgorithmsTest.java @@ -14,8 +14,8 @@ import java.util.List; import com.github.difflib.DiffUtils; import com.github.difflib.algorithm.DiffAlgorithmFactory; -import com.github.difflib.algorithm.myers.MeyersDiff; -import com.github.difflib.algorithm.myers.MeyersDiffWithLinearSpace; +import com.github.difflib.algorithm.myers.MyersDiff; +import com.github.difflib.algorithm.myers.MyersDiffWithLinearSpace; import java.util.stream.Stream; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.params.ParameterizedTest; @@ -25,14 +25,13 @@ import org.junit.jupiter.params.provider.MethodSource; public class PatchWithAllDiffAlgorithmsTest { private static Stream provideAlgorithms() { - return Stream.of( - Arguments.of(MeyersDiff.factory()), - Arguments.of(MeyersDiffWithLinearSpace.factory())); + return Stream.of(Arguments.of(MyersDiff.factory()), + Arguments.of(MyersDiffWithLinearSpace.factory())); } @AfterAll public static void afterAll() { - DiffUtils.withDefaultDiffAlgorithmFactory(MeyersDiff.factory()); + DiffUtils.withDefaultDiffAlgorithmFactory(MyersDiff.factory()); } @ParameterizedTest diff --git a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffTest.java b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffTest.java similarity index 98% rename from java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffTest.java rename to java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffTest.java index 98f4f6e..97dc20f 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffTest.java @@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test; * * @author tw */ -public class PatchWithMeyerDiffTest { +public class PatchWithMyerDiffTest { @Test public void testPatch_Change_withExceptionProcessor() { diff --git a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffWithLinearSpaceTest.java b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffWithLinearSpaceTest.java similarity index 85% rename from java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffWithLinearSpaceTest.java rename to java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffWithLinearSpaceTest.java index 8a62992..2cc334a 100644 --- a/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMeyerDiffWithLinearSpaceTest.java +++ b/java-diff-utils/src/test/java/com/github/difflib/patch/PatchWithMyerDiffWithLinearSpaceTest.java @@ -16,8 +16,8 @@ package com.github.difflib.patch; import com.github.difflib.DiffUtils; -import com.github.difflib.algorithm.myers.MeyersDiff; -import com.github.difflib.algorithm.myers.MeyersDiffWithLinearSpace; +import com.github.difflib.algorithm.myers.MyersDiff; +import com.github.difflib.algorithm.myers.MyersDiffWithLinearSpace; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.AfterAll; @@ -30,16 +30,16 @@ import org.junit.jupiter.api.Test; * * @author tw */ -public class PatchWithMeyerDiffWithLinearSpaceTest { +public class PatchWithMyerDiffWithLinearSpaceTest { @BeforeAll public static void setupClass() { - DiffUtils.withDefaultDiffAlgorithmFactory(MeyersDiffWithLinearSpace.factory()); + DiffUtils.withDefaultDiffAlgorithmFactory(MyersDiffWithLinearSpace.factory()); } @AfterAll public static void resetClass() { - DiffUtils.withDefaultDiffAlgorithmFactory(MeyersDiff.factory()); + DiffUtils.withDefaultDiffAlgorithmFactory(MyersDiff.factory()); } @Test