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
22 import java.util.Arrays;
23 import java.util.List;
24
25 import org.apache.commons.codec.language.DoubleMetaphone;
26 import org.apache.commons.codec.language.Soundex;
27 import org.apache.commons.lang3.ArrayUtils;
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 public class StringEncoderComparatorTest {
34
35 @SuppressWarnings("unchecked")
36 @Test
37 public void testComparatorWithDoubleMetaphone() throws Exception {
38 final StringEncoderComparator sCompare = new StringEncoderComparator(new DoubleMetaphone());
39
40 final String[] testArray = { "Jordan", "Sosa", "Prior", "Pryor" };
41 final List<String> testList = Arrays.asList(testArray);
42
43 final String[] controlArray = { "Jordan", "Prior", "Pryor", "Sosa" };
44
45 testList.sort(sCompare);
46
47 final String[] resultArray = testList.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
48
49 for (int i = 0; i < resultArray.length; i++) {
50 assertEquals(controlArray[i], resultArray[i], "Result Array not Equal to Control Array at index: " + i);
51 }
52 }
53
54 @Test
55 public void testComparatorWithDoubleMetaphoneAndInvalidInput() throws Exception {
56 final StringEncoderComparator sCompare = new StringEncoderComparator(new DoubleMetaphone());
57
58 final int compare = sCompare.compare(Double.valueOf(3.0d), Long.valueOf(3));
59 assertEquals(0, compare, "Trying to compare objects that make no sense to the underlying encoder" + " should return a zero compare code");
60 }
61
62 @Test
63 public void testComparatorWithSoundex() throws Exception {
64 final StringEncoderComparator sCompare = new StringEncoderComparator(new Soundex());
65
66 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");
67 }
68 }