1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.codec;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.util.Arrays;
24 import java.util.List;
25
26 import org.apache.commons.codec.language.DoubleMetaphone;
27 import org.apache.commons.codec.language.Soundex;
28 import org.apache.commons.lang3.ArrayUtils;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34 class StringEncoderComparatorTest {
35
36 @SuppressWarnings("unchecked")
37 @Test
38 void testComparatorWithDoubleMetaphone() throws Exception {
39 final StringEncoderComparator sCompare = new StringEncoderComparator(new DoubleMetaphone());
40 final String[] testArray = { "Jordan", "Sosa", "Prior", "Pryor" };
41 final List<String> testList = Arrays.asList(testArray);
42 final String[] controlArray = { "Jordan", "Prior", "Pryor", "Sosa" };
43 testList.sort(sCompare);
44 final String[] resultArray = testList.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
45 for (int i = 0; i < resultArray.length; i++) {
46 assertEquals(controlArray[i], resultArray[i], "Result Array not Equal to Control Array at index: " + i);
47 }
48 }
49
50 @Test
51 void testComparatorWithDoubleMetaphoneAndInvalidInput() throws Exception {
52 final StringEncoderComparator sCompare = new StringEncoderComparator(new DoubleMetaphone());
53 final int compare = sCompare.compare(Double.valueOf(3.0d), Long.valueOf(3));
54 assertEquals(0, compare, "Trying to compare objects that make no sense to the underlying encoder should return a zero compare code");
55 }
56
57 @Test
58 void testComparatorWithSoundex() throws Exception {
59 final StringEncoderComparator sCompare = new StringEncoderComparator(new Soundex());
60 assertEquals(0, sCompare.compare("O'Brien", "O'Brian"), "O'Brien and O'Brian didn't come out with the same Soundex, something must be wrong here");
61 }
62
63 @Test
64 void testConstructor() throws Exception {
65 assertThrows(NullPointerException.class, () -> new StringEncoderComparator(null));
66 }
67
68 @Test
69 void testDeprecatedConstructor() throws Exception {
70 assertThrows(NullPointerException.class, () -> new StringEncoderComparator().compare("test", "test"));
71 }
72 }