1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.text.similarity;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertThrows;
21
22 import org.junit.jupiter.api.BeforeAll;
23 import org.junit.jupiter.api.Test;
24 import org.junit.jupiter.params.ParameterizedTest;
25 import org.junit.jupiter.params.provider.MethodSource;
26
27
28
29
30 class JaccardSimilarityTest {
31
32 private static JaccardSimilarity classBeingTested;
33
34 @BeforeAll
35 public static void setUp() {
36 classBeingTested = new JaccardSimilarity();
37 }
38
39 @ParameterizedTest
40 @MethodSource("org.apache.commons.text.similarity.SimilarityInputTest#similarityInputsEquals()")
41 void testGettingJaccardSimilarity(final Class<?> cls) {
42
43 assertEquals(1.0, classBeingTested.apply(SimilarityInputTest.build(cls, ""), SimilarityInputTest.build(cls, "")));
44 assertEquals(0.0, classBeingTested.apply(SimilarityInputTest.build(cls, "left"), SimilarityInputTest.build(cls, "")));
45 assertEquals(0.0, classBeingTested.apply(SimilarityInputTest.build(cls, ""), SimilarityInputTest.build(cls, "right")));
46 assertEquals(3.0 / 4, classBeingTested.apply(SimilarityInputTest.build(cls, "frog"), SimilarityInputTest.build(cls, "fog")));
47 assertEquals(0.0, classBeingTested.apply(SimilarityInputTest.build(cls, "fly"), SimilarityInputTest.build(cls, "ant")));
48 assertEquals(2.0 / 9, classBeingTested.apply(SimilarityInputTest.build(cls, "elephant"), SimilarityInputTest.build(cls, "hippo")));
49 assertEquals(7.0 / 11, classBeingTested.apply(SimilarityInputTest.build(cls, "ABC Corporation"), SimilarityInputTest.build(cls, "ABC Corp")));
50 assertEquals(13.0 / 17,
51 classBeingTested.apply(SimilarityInputTest.build(cls, "D N H Enterprises Inc"), SimilarityInputTest.build(cls, "D & H Enterprises, Inc.")));
52 assertEquals(16.0 / 18, classBeingTested.apply(SimilarityInputTest.build(cls, "My Gym Children's Fitness Center"),
53 SimilarityInputTest.build(cls, "My Gym. Childrens Fitness")));
54 assertEquals(9.0 / 10, classBeingTested.apply(SimilarityInputTest.build(cls, "PENNSYLVANIA"), SimilarityInputTest.build(cls, "PENNCISYLVNIA")));
55 assertEquals(1.0 / 8, classBeingTested.apply(SimilarityInputTest.build(cls, "left"), SimilarityInputTest.build(cls, "right")));
56 assertEquals(1.0 / 8, classBeingTested.apply(SimilarityInputTest.build(cls, "leettteft"), SimilarityInputTest.build(cls, "ritttght")));
57 assertEquals(1.0, classBeingTested.apply(SimilarityInputTest.build(cls, "the same string"), SimilarityInputTest.build(cls, "the same string")));
58 }
59
60 @Test
61 void testGettingJaccardSimilarityCharSequence() {
62
63 assertEquals(1.0, classBeingTested.apply("", ""));
64 assertEquals(0.0, classBeingTested.apply("left", ""));
65 assertEquals(0.0, classBeingTested.apply("", "right"));
66 assertEquals(3.0 / 4, classBeingTested.apply("frog", "fog"));
67 assertEquals(0.0, classBeingTested.apply("fly", "ant"));
68 assertEquals(2.0 / 9, classBeingTested.apply("elephant", "hippo"));
69 assertEquals(7.0 / 11, classBeingTested.apply("ABC Corporation", "ABC Corp"));
70 assertEquals(13.0 / 17, classBeingTested.apply("D N H Enterprises Inc", "D & H Enterprises, Inc."));
71 assertEquals(16.0 / 18, classBeingTested.apply("My Gym Children's Fitness Center", "My Gym. Childrens Fitness"));
72 assertEquals(9.0 / 10, classBeingTested.apply("PENNSYLVANIA", "PENNCISYLVNIA"));
73 assertEquals(1.0 / 8, classBeingTested.apply("left", "right"));
74 assertEquals(1.0 / 8, classBeingTested.apply("leettteft", "ritttght"));
75 assertEquals(1.0, classBeingTested.apply("the same string", "the same string"));
76 }
77
78 @Test
79 void testGettingJaccardSimilarityNullNull() {
80 assertThrows(IllegalArgumentException.class, () -> classBeingTested.apply((String) null, null));
81 }
82
83 @Test
84 void testGettingJaccardSimilarityNullString() {
85 assertThrows(IllegalArgumentException.class, () -> classBeingTested.apply(null, "right"));
86 }
87
88 @Test
89 void testGettingJaccardSimilarityStringNull() {
90 assertThrows(IllegalArgumentException.class, () -> classBeingTested.apply(" ", null));
91 }
92 }