From 9b8b5483aa799df0fc5de21ec6946f6f187c518f Mon Sep 17 00:00:00 2001 From: Pierrik Lassalas Date: Thu, 12 Oct 2017 10:09:54 +0200 Subject: [PATCH] gs-cv: LetterPairSimilarity: added a test class and checked for null/empty strings --- .../cv/utils/LetterPairSimilarity.java | 9 +++++ .../cv/utils/LetterPairSimilarityTest.java | 33 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 gs-cv/src/test/java/org/genericsystem/cv/utils/LetterPairSimilarityTest.java diff --git a/gs-cv/src/main/java/org/genericsystem/cv/utils/LetterPairSimilarity.java b/gs-cv/src/main/java/org/genericsystem/cv/utils/LetterPairSimilarity.java index d055d4334..e50dfdd50 100644 --- a/gs-cv/src/main/java/org/genericsystem/cv/utils/LetterPairSimilarity.java +++ b/gs-cv/src/main/java/org/genericsystem/cv/utils/LetterPairSimilarity.java @@ -15,6 +15,15 @@ public static void main(String[] args) { } public static double compareStrings(String string1, String string2) { + if (null == string1 || null == string2) + throw new IllegalArgumentException("LetterPairSimilarity requires two not null strings"); + if (string1.equals(string2)) + return 1d; + if (string1.isEmpty()) + return 0; + if (string2.isEmpty()) + return 0; + List pairs1 = wordLetterPairs(string1.toLowerCase()); List pairs2 = wordLetterPairs(string2.toLowerCase()); int intersection = 0; diff --git a/gs-cv/src/test/java/org/genericsystem/cv/utils/LetterPairSimilarityTest.java b/gs-cv/src/test/java/org/genericsystem/cv/utils/LetterPairSimilarityTest.java new file mode 100644 index 000000000..09f2646f8 --- /dev/null +++ b/gs-cv/src/test/java/org/genericsystem/cv/utils/LetterPairSimilarityTest.java @@ -0,0 +1,33 @@ +package org.genericsystem.cv.utils; + +import static org.testng.Assert.assertEquals; + +import org.testng.annotations.Test; + +public class LetterPairSimilarityTest { + + @Test + public void compareStrings() { + String ref = "healed"; + assertEquals(LetterPairSimilarity.compareStrings("", ""), 1d, 0.0); + assertEquals(LetterPairSimilarity.compareStrings("kitten", ""), 0, 0.0); + assertEquals(LetterPairSimilarity.compareStrings("", "kitten"), 0, 0.0); + assertEquals(LetterPairSimilarity.compareStrings(ref, ref), 1d, 0.0); + assertEquals(LetterPairSimilarity.compareStrings(ref, "sealed"), 0.800, 0.001); + assertEquals(LetterPairSimilarity.compareStrings(ref, "healthy"), 0.545, 0.001); + assertEquals(LetterPairSimilarity.compareStrings(ref, "heard"), 0.444, 0.001); + assertEquals(LetterPairSimilarity.compareStrings(ref, "herded"), 0.400, 0.001); + assertEquals(LetterPairSimilarity.compareStrings(ref, "help"), 0.250, 0.001); + assertEquals(LetterPairSimilarity.compareStrings(ref, "sold"), 0, 0.001); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void compareStringsNullString() { + LetterPairSimilarity.compareStrings("kitten", null); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void compareStringsNullString2() { + LetterPairSimilarity.compareStrings(null, "kitten"); + } +}