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.Assert.assertEquals;
21 import static org.junit.Assert.assertTrue;
22
23 import java.util.Arrays;
24 import java.util.Collections;
25 import java.util.List;
26
27 import org.apache.commons.codec.language.DoubleMetaphone;
28 import org.apache.commons.codec.language.Soundex;
29 import org.junit.Test;
30
31
32
33
34
35
36 public class StringEncoderComparatorTest {
37
38 @Test
39 public void testComparatorWithSoundex() throws Exception {
40 StringEncoderComparator sCompare =
41 new StringEncoderComparator( new Soundex() );
42
43 assertTrue( "O'Brien and O'Brian didn't come out with " +
44 "the same Soundex, something must be wrong here",
45 0 == sCompare.compare( "O'Brien", "O'Brian" ) );
46 }
47
48 @Test
49 public void testComparatorWithDoubleMetaphone() throws Exception {
50 StringEncoderComparator sCompare = new StringEncoderComparator(new DoubleMetaphone());
51
52 String[] testArray = { "Jordan", "Sosa", "Prior", "Pryor" };
53 List<String> testList = Arrays.asList(testArray);
54
55 String[] controlArray = { "Jordan", "Prior", "Pryor", "Sosa" };
56
57 Collections.sort(testList, sCompare);
58
59 String[] resultArray = testList.toArray(new String[0]);
60
61 for (int i = 0; i < resultArray.length; i++) {
62 assertEquals("Result Array not Equal to Control Array at index: " + i, controlArray[i], resultArray[i]);
63 }
64 }
65
66 @Test
67 public void testComparatorWithDoubleMetaphoneAndInvalidInput() throws Exception {
68 StringEncoderComparator sCompare =
69 new StringEncoderComparator( new DoubleMetaphone() );
70
71 int compare = sCompare.compare(new Double(3.0), Long.valueOf(3));
72 assertEquals( "Trying to compare objects that make no sense to the underlying encoder should return a zero compare code",
73 0, compare);
74 }
75 }