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 HammingDistanceTest {
31
32 private static HammingDistance distance;
33
34 @BeforeAll
35 public static void setUp() {
36 distance = new HammingDistance();
37 }
38
39 @ParameterizedTest
40 @MethodSource("org.apache.commons.text.similarity.SimilarityInputTest#similarityInputsEquals()")
41 void testHammingDistance(final Class<?> cls) {
42 assertEquals(0, distance.apply(SimilarityInputTest.build(cls, ""), SimilarityInputTest.build(cls, "")));
43 assertEquals(0, distance.apply(SimilarityInputTest.build(cls, "pappa"), SimilarityInputTest.build(cls, "pappa")));
44 assertEquals(1, distance.apply(SimilarityInputTest.build(cls, "papaa"), SimilarityInputTest.build(cls, "pappa")));
45 assertEquals(3, distance.apply(SimilarityInputTest.build(cls, "karolin"), SimilarityInputTest.build(cls, "kathrin")));
46 assertEquals(3, distance.apply(SimilarityInputTest.build(cls, "karolin"), SimilarityInputTest.build(cls, "kerstin")));
47 assertEquals(2, distance.apply(SimilarityInputTest.build(cls, "1011101"), SimilarityInputTest.build(cls, "1001001")));
48 assertEquals(3, distance.apply(SimilarityInputTest.build(cls, "2173896"), SimilarityInputTest.build(cls, "2233796")));
49 assertEquals(2, distance.apply(SimilarityInputTest.build(cls, "ATCG"), SimilarityInputTest.build(cls, "ACCC")));
50 }
51
52 @Test
53 void testHammingDistance_nullLeftValue() {
54 assertThrows(IllegalArgumentException.class, () -> distance.apply(null, ""));
55 }
56
57 @Test
58 void testHammingDistance_nullRightValue() {
59 assertThrows(IllegalArgumentException.class, () -> distance.apply("", null));
60 }
61
62 @Test
63 void testHammingDistanceCharSequence() {
64 assertEquals(0, distance.apply("", ""));
65 assertEquals(0, distance.apply("pappa", "pappa"));
66 assertEquals(1, distance.apply("papaa", "pappa"));
67 assertEquals(3, distance.apply("karolin", "kathrin"));
68 assertEquals(3, distance.apply("karolin", "kerstin"));
69 assertEquals(2, distance.apply("1011101", "1001001"));
70 assertEquals(3, distance.apply("2173896", "2233796"));
71 assertEquals(2, distance.apply("ATCG", "ACCC"));
72 }
73
74 }