diff --git a/src/test/java/org/apache/commons/text/StringSubstitutorTest.java b/src/test/java/org/apache/commons/text/StringSubstitutorTest.java index 0f1fbf4339..3692653f10 100644 --- a/src/test/java/org/apache/commons/text/StringSubstitutorTest.java +++ b/src/test/java/org/apache/commons/text/StringSubstitutorTest.java @@ -1078,4 +1078,11 @@ void testSubstitutePreserveEscape() throws IOException { assertEqualsCharSeq("value $${escaped}", replace(sub, org)); } + @Test + void testDetectsCyclicSubstitution() { + final Map map = new HashMap<>(); + map.put("name", ""); + assertThrows(IllegalStateException.class, () -> StringSubstitutor.replace("Hi !", map, "<", ">")); + } + } diff --git a/src/test/java/org/apache/commons/text/similarity/HammingDistanceTest.java b/src/test/java/org/apache/commons/text/similarity/HammingDistanceTest.java index 181d2fe277..918a7bedc2 100644 --- a/src/test/java/org/apache/commons/text/similarity/HammingDistanceTest.java +++ b/src/test/java/org/apache/commons/text/similarity/HammingDistanceTest.java @@ -59,6 +59,21 @@ void testHammingDistance_nullRightValue() { assertThrows(IllegalArgumentException.class, () -> distance.apply("", null)); } + @Test + void testApply_NullSimilarityInput() { + assertThrows(IllegalArgumentException.class, () -> distance.apply(null, new SimilarityCharacterInput("a"))); + } + + @Test + void testApply_SimilarityInputNull() { + assertThrows(IllegalArgumentException.class, () -> distance.apply(new SimilarityCharacterInput("a"), null)); + } + + @Test + void testApply_DifferentSimilarityInputLength() { + assertThrows(IllegalArgumentException.class, () -> distance.apply(new SimilarityCharacterInput("a"), new SimilarityCharacterInput("ab"))); + } + @Test void testHammingDistanceCharSequence() { assertEquals(0, distance.apply("", "")); 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 f1242fb301..412f1e721c 100644 --- a/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java +++ b/src/test/java/org/apache/commons/text/similarity/JaroWinklerDistanceTest.java @@ -95,4 +95,14 @@ void testGetJaroWinklerDistance_StringString() { assertEquals(1 - 0.51111d, distance.apply("foo", " foo"), 0.00001d); } + @Test + void testApply_NullSimilarityInput() { + assertThrows(IllegalArgumentException.class, () -> distance.apply(null, new SimilarityCharacterInput("a"))); + } + + @Test + void testApply_SimilarityInputNull() { + assertThrows(IllegalArgumentException.class, () -> distance.apply(new SimilarityCharacterInput("a"), null)); + } + } diff --git a/src/test/java/org/apache/commons/text/similarity/JaroWinklerSimilarityTest.java b/src/test/java/org/apache/commons/text/similarity/JaroWinklerSimilarityTest.java index a5acfb2394..0b1f97052a 100644 --- a/src/test/java/org/apache/commons/text/similarity/JaroWinklerSimilarityTest.java +++ b/src/test/java/org/apache/commons/text/similarity/JaroWinklerSimilarityTest.java @@ -136,4 +136,14 @@ void testGetJaroWinklerSimilarity_StringString() { assertEquals(0.911111d, similarity.apply(wrap("John Horn"), "John Hopkins"), 0.00001d); } + @Test + void testApply_NullSimilarityInput() { + assertThrows(IllegalArgumentException.class, () -> similarity.apply(null, new SimilarityCharacterInput("a"))); + } + + @Test + void testApply_SimilarityInputNull() { + assertThrows(IllegalArgumentException.class, () -> similarity.apply(new SimilarityCharacterInput("a"), null)); + } + }