This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push:
new f99e435a Added new tests for the main Levenshtein algorithm
implementations (#728)
f99e435a is described below
commit f99e435a750594a88b562bf9f6f97fd442d34d3b
Author: Michael Hausegger <[email protected]>
AuthorDate: Wed Dec 3 19:42:20 2025 +0100
Added new tests for the main Levenshtein algorithm implementations (#728)
* Added new tests for the main Levenshtein algorithm implementation classes
* Added new tests for the main Levenshtein algorithm implementation classes
* Added tests
* Remove extra vertical whitespace
* Added tests
---------
Co-authored-by: TheRealHaui <[email protected]>
Co-authored-by: Gary Gregory <[email protected]>
---
...coreFromTest.java => EditDistanceFromTest.java} | 24 ++++++++++++++--------
.../text/similarity/JaccardSimilarityTest.java | 10 +++++++++
.../text/similarity/JaroWinklerDistanceTest.java | 6 ++++++
.../LevenshteinDetailedDistanceTest.java | 8 ++++++++
.../text/similarity/LevenshteinDistanceTest.java | 10 +++++++++
.../similarity/LongestCommonSubsequenceTest.java | 7 +++++++
.../text/similarity/SimilarityScoreFromTest.java | 22 ++++++++++++++++++--
7 files changed, 76 insertions(+), 11 deletions(-)
diff --git
a/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
b/src/test/java/org/apache/commons/text/similarity/EditDistanceFromTest.java
similarity index 60%
copy from
src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
copy to
src/test/java/org/apache/commons/text/similarity/EditDistanceFromTest.java
index 9f141f7e..32d85752 100644
---
a/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
+++ b/src/test/java/org/apache/commons/text/similarity/EditDistanceFromTest.java
@@ -14,26 +14,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.commons.text.similarity;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-class SimilarityScoreFromTest {
+class EditDistanceFromTest {
+
+ private LongestCommonSubsequenceDistance longestCommonSubsequenceDistance;
+ private EditDistanceFrom<Integer> editDistanceFrom;
+
+ @BeforeEach
+ void doBeforeEachTest() {
+ longestCommonSubsequenceDistance = new
LongestCommonSubsequenceDistance();
+ editDistanceFrom = new
EditDistanceFrom<>(longestCommonSubsequenceDistance, "asdf");
+ }
@Test
- void testApply() {
- final LongestCommonSubsequence longestCommonSubsequence = new
LongestCommonSubsequence();
- final SimilarityScoreFrom<Integer> similarityScoreFrom = new
SimilarityScoreFrom<>(longestCommonSubsequence, "asdf");
- assertEquals(1, similarityScoreFrom.apply("s"));
+ void testGetLeft() {
+ assertEquals("asdf", editDistanceFrom.getLeft());
}
@Test
- void testFailsToCreateSimilarityScoreFromThrowsIllegalArgumentException() {
- assertThrows(IllegalArgumentException.class, () -> new
SimilarityScoreFrom<>(null, ""));
+ void testGetSimilarityScore() {
+ assertEquals(longestCommonSubsequenceDistance,
editDistanceFrom.getEditDistance());
}
}
diff --git
a/src/test/java/org/apache/commons/text/similarity/JaccardSimilarityTest.java
b/src/test/java/org/apache/commons/text/similarity/JaccardSimilarityTest.java
index 334ea748..f7ef2ab7 100644
---
a/src/test/java/org/apache/commons/text/similarity/JaccardSimilarityTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/JaccardSimilarityTest.java
@@ -89,4 +89,14 @@ class JaccardSimilarityTest {
void testGettingJaccardSimilarityStringNull() {
assertThrows(IllegalArgumentException.class, () ->
classBeingTested.apply(" ", null));
}
+
+ @Test
+ void testGettingJaccardSimilarityNullSimilarityInput() {
+ assertThrows(IllegalArgumentException.class, () ->
classBeingTested.apply(null, new SimilarityCharacterInput("asdf")));
+ }
+
+ @Test
+ void testGettingJaccardSimilaritySimilarityInputNull() {
+ assertThrows(IllegalArgumentException.class, () ->
classBeingTested.apply(new SimilarityCharacterInput("asdf"), null));
+ }
}
diff --git
a/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java
b/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java
index 509d58bb..7df3a103 100644
---
a/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.text.similarity;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -105,4 +106,9 @@ class JaroWinklerDistanceTest {
assertEquals(1 - 0.51111d, distance.apply("foo", " foo"), 0.00001d);
}
+ @Test
+ void testMatches() {
+ assertArrayEquals(new int[]{2, 0, 2}, distance.matches("ab", "aba"));
+ }
+
}
diff --git
a/src/test/java/org/apache/commons/text/similarity/LevenshteinDetailedDistanceTest.java
b/src/test/java/org/apache/commons/text/similarity/LevenshteinDetailedDistanceTest.java
index 9ba1baf7..f80cbc79 100644
---
a/src/test/java/org/apache/commons/text/similarity/LevenshteinDetailedDistanceTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/LevenshteinDetailedDistanceTest.java
@@ -41,6 +41,14 @@ class LevenshteinDetailedDistanceTest {
void testApplyWithNullSimilarityInput() {
assertThrows(IllegalArgumentException.class,
() -> new
LevenshteinDetailedDistance(0).apply((SimilarityInput<Object>) null,
(SimilarityInput<Object>) null));
+ assertThrows(IllegalArgumentException.class,
+ () -> new LevenshteinDetailedDistance(0).apply(new
SimilarityCharacterInput("asdf"), (SimilarityCharacterInput) null));
+ assertThrows(IllegalArgumentException.class,
+ () -> new
LevenshteinDetailedDistance(0).apply((SimilarityCharacterInput) null, new
SimilarityCharacterInput("asdf")));
+ assertThrows(IllegalArgumentException.class,
+ () -> new LevenshteinDetailedDistance(null).apply(new
SimilarityCharacterInput("asdf"), (SimilarityCharacterInput) null));
+ assertThrows(IllegalArgumentException.class,
+ () -> new
LevenshteinDetailedDistance(null).apply((SimilarityCharacterInput) null, new
SimilarityCharacterInput("asdf")));
}
@Test
diff --git
a/src/test/java/org/apache/commons/text/similarity/LevenshteinDistanceTest.java
b/src/test/java/org/apache/commons/text/similarity/LevenshteinDistanceTest.java
index 99dd5e72..8aa3960d 100644
---
a/src/test/java/org/apache/commons/text/similarity/LevenshteinDistanceTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/LevenshteinDistanceTest.java
@@ -34,6 +34,10 @@ class LevenshteinDistanceTest {
@Test
void testApplyThrowsIllegalArgumentExceptionSimilarityInput() {
assertThrows(IllegalArgumentException.class, () -> new
LevenshteinDistance(0).apply((SimilarityInput<Object>) null,
(SimilarityInput<Object>) null));
+ assertThrows(IllegalArgumentException.class, () -> new
LevenshteinDistance(0).apply(new SimilarityCharacterInput("asdf"),
+ (SimilarityCharacterInput) null));
+ assertThrows(IllegalArgumentException.class, () -> new
LevenshteinDistance(0).apply((SimilarityCharacterInput) null,
+ new SimilarityCharacterInput("asdf")));
}
@Test
@@ -85,6 +89,12 @@ class LevenshteinDistanceTest {
assertThrows(IllegalArgumentException.class, () ->
UNLIMITED_DISTANCE.apply(SimilarityInputTest.build(cls, "a"),
SimilarityInputTest.build(cls, null)));
}
+ @Test
+ void testGetLevenshteinDistance_EmptyStringString() {
+ assertEquals(-1, new LevenshteinDistance(0).apply(new
SimilarityCharacterInput(""),
+ new SimilarityCharacterInput("asdf")));
+ }
+
@ParameterizedTest
@MethodSource("org.apache.commons.text.similarity.SimilarityInputTest#similarityInputs()")
void testGetLevenshteinDistance_StringString(final Class<?> cls) {
diff --git
a/src/test/java/org/apache/commons/text/similarity/LongestCommonSubsequenceTest.java
b/src/test/java/org/apache/commons/text/similarity/LongestCommonSubsequenceTest.java
index b280361a..e5208a20 100644
---
a/src/test/java/org/apache/commons/text/similarity/LongestCommonSubsequenceTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/LongestCommonSubsequenceTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.text.similarity;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -133,4 +134,10 @@ class LongestCommonSubsequenceTest {
assertEquals(4, subject.apply("leettteft", "ritttght"));
assertEquals(15, subject.apply("the same string", "the same string"));
}
+
+ @Test
+ void testLongestCommonSubstringLengthArray() {
+ assertArrayEquals(new int[][]{ {0, 0, 0, 0}, {0, 1, 1, 1}, {0, 1, 2,
2}}, subject.longestCommonSubstringLengthArray("ab", "abc"));
+ }
+
}
diff --git
a/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
b/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
index 9f141f7e..cd037b4d 100644
---
a/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
+++
b/src/test/java/org/apache/commons/text/similarity/SimilarityScoreFromTest.java
@@ -20,17 +20,35 @@ package org.apache.commons.text.similarity;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class SimilarityScoreFromTest {
+ private LongestCommonSubsequence longestCommonSubsequence;
+ private SimilarityScoreFrom<Integer> similarityScoreFrom;
+
+ @BeforeEach
+ void doBeforeEachTest() {
+ longestCommonSubsequence = new LongestCommonSubsequence();
+ similarityScoreFrom = new
SimilarityScoreFrom<>(longestCommonSubsequence, "asdf");
+ }
+
@Test
void testApply() {
- final LongestCommonSubsequence longestCommonSubsequence = new
LongestCommonSubsequence();
- final SimilarityScoreFrom<Integer> similarityScoreFrom = new
SimilarityScoreFrom<>(longestCommonSubsequence, "asdf");
assertEquals(1, similarityScoreFrom.apply("s"));
}
+ @Test
+ void testGetLeft() {
+ assertEquals("asdf", similarityScoreFrom.getLeft());
+ }
+
+ @Test
+ void testGetSimilarityScore() {
+ assertEquals(longestCommonSubsequence,
similarityScoreFrom.getSimilarityScore());
+ }
+
@Test
void testFailsToCreateSimilarityScoreFromThrowsIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> new
SimilarityScoreFrom<>(null, ""));