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