Skip to content

Commit d542ac3

Browse files
author
Timothy O'Brien
committed
A DoubleMetaphoneTest was contributed by Mindbridge
and contains test data from the original Lawrence Phillips article. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/codec/trunk@130195 13f79535-47bb-0310-9956-ffa450edef68
1 parent 65fea55 commit d542ac3

1 file changed

Lines changed: 159 additions & 0 deletions

File tree

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/*
2+
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//codec/src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java,v 1.1 2003/10/04 15:14:08 tobrien Exp $
3+
* $Revision: 1.1 $
4+
* $Date: 2003/10/04 15:14:08 $
5+
*
6+
* ====================================================================
7+
*
8+
* The Apache Software License, Version 1.1
9+
*
10+
* Copyright (c) 2003 The Apache Software Foundation. All rights
11+
* reserved.
12+
*
13+
* Redistribution and use in source and binary forms, with or without
14+
* modification, are permitted provided that the following conditions
15+
* are met:
16+
*
17+
* 1. Redistributions of source code must retain the above copyright
18+
* notice, this list of conditions and the following disclaimer.
19+
*
20+
* 2. Redistributions in binary form must reproduce the above copyright
21+
* notice, this list of conditions and the following disclaimer in
22+
* the documentation and/or other materials provided with the
23+
* distribution.
24+
*
25+
* 3. The end-user documentation included with the redistribution, if
26+
* any, must include the following acknowledgement:
27+
* "This product includes software developed by the
28+
* Apache Software Foundation (http://www.apache.org/)."
29+
* Alternately, this acknowledgement may appear in the software itself,
30+
* if and wherever such third-party acknowledgements normally appear.
31+
*
32+
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
33+
* Foundation" must not be used to endorse or promote products derived
34+
* from this software without prior written permission. For written
35+
* permission, please contact apache@apache.org.
36+
*
37+
* 5. Products derived from this software may not be called "Apache"
38+
* nor may "Apache" appear in their names without prior written
39+
* permission of the Apache Group.
40+
*
41+
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
42+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
43+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44+
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
45+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
47+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
48+
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
49+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
50+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
51+
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52+
* SUCH DAMAGE.
53+
* ====================================================================
54+
*
55+
* This software consists of voluntary contributions made by many
56+
* individuals on behalf of the Apache Software Foundation. For more
57+
* information on the Apache Software Foundation, please see
58+
* <http://www.apache.org/>.
59+
*
60+
*/
61+
package org.apache.commons.codec.language;
62+
63+
import junit.framework.Test;
64+
import junit.framework.TestSuite;
65+
66+
import org.apache.commons.codec.StringEncoder;
67+
import org.apache.commons.codec.StringEncoderAbstractTest;
68+
69+
/**
70+
* Testcase for DoubleMetaphone
71+
*
72+
* @author Mindbridge
73+
*/
74+
public class DoubleMetaphoneTest extends StringEncoderAbstractTest
75+
{
76+
77+
public DoubleMetaphoneTest(String name)
78+
{
79+
super(name);
80+
}
81+
82+
public static Test suite()
83+
{
84+
return (new TestSuite(DoubleMetaphoneTest.class));
85+
}
86+
87+
public void setUp() throws Exception
88+
{
89+
super.setUp();
90+
_doubleMetaphone = new DoubleMetaphone();
91+
}
92+
93+
public void tearDown() throws Exception
94+
{
95+
super.tearDown();
96+
_doubleMetaphone = null;
97+
}
98+
99+
protected StringEncoder makeEncoder()
100+
{
101+
return new Metaphone();
102+
}
103+
104+
// ------------------------------------------------------------------------
105+
106+
public void testDoubleMetaphone()
107+
{
108+
assertEquals("TSTN", _doubleMetaphone.doubleMetaphone("testing"));
109+
assertEquals("0", _doubleMetaphone.doubleMetaphone("The"));
110+
assertEquals("KK", _doubleMetaphone.doubleMetaphone("quick"));
111+
assertEquals("PRN", _doubleMetaphone.doubleMetaphone("brown"));
112+
assertEquals("FKS", _doubleMetaphone.doubleMetaphone("fox"));
113+
assertEquals("JMPT", _doubleMetaphone.doubleMetaphone("jumped"));
114+
assertEquals("AFR", _doubleMetaphone.doubleMetaphone("over"));
115+
assertEquals("0", _doubleMetaphone.doubleMetaphone("the"));
116+
assertEquals("LS", _doubleMetaphone.doubleMetaphone("lazy"));
117+
assertEquals("TKS", _doubleMetaphone.doubleMetaphone("dogs"));
118+
assertEquals("MKFR", _doubleMetaphone.doubleMetaphone("MacCafferey"));
119+
120+
assertEquals("TSTN", _doubleMetaphone.doubleMetaphone("testing", true));
121+
assertEquals("T", _doubleMetaphone.doubleMetaphone("The", true));
122+
assertEquals("KK", _doubleMetaphone.doubleMetaphone("quick", true));
123+
assertEquals("PRN", _doubleMetaphone.doubleMetaphone("brown", true));
124+
assertEquals("FKS", _doubleMetaphone.doubleMetaphone("fox", true));
125+
assertEquals("AMPT", _doubleMetaphone.doubleMetaphone("jumped", true));
126+
assertEquals("AFR", _doubleMetaphone.doubleMetaphone("over", true));
127+
assertEquals("T", _doubleMetaphone.doubleMetaphone("the", true));
128+
assertEquals("LS", _doubleMetaphone.doubleMetaphone("lazy", true));
129+
assertEquals("TKS", _doubleMetaphone.doubleMetaphone("dogs", true));
130+
assertEquals("MKFR", _doubleMetaphone.doubleMetaphone("MacCafferey", true));
131+
}
132+
133+
public void testIsDoubleMetaphoneEqual()
134+
{
135+
doubleMetaphoneEqualTest(false);
136+
doubleMetaphoneEqualTest(true);
137+
}
138+
139+
public void doubleMetaphoneEqualTest(boolean alternate)
140+
{
141+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("Case", "case", alternate));
142+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("CASE", "Case", alternate));
143+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("caSe", "cAsE", alternate));
144+
145+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("cookie", "quick", alternate));
146+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("quick", "cookie", alternate));
147+
148+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("Bryan", "Brian", alternate));
149+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("Brian", "Bryan", alternate));
150+
151+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("Otto", "Auto", alternate));
152+
assertTrue(_doubleMetaphone.isDoubleMetaphoneEqual("Auto", "Otto", alternate));
153+
154+
assertTrue(!_doubleMetaphone.isDoubleMetaphoneEqual("Brain", "Band", alternate));
155+
assertTrue(!_doubleMetaphone.isDoubleMetaphoneEqual("Band", "Brain", alternate));
156+
}
157+
158+
private DoubleMetaphone _doubleMetaphone = null;
159+
}

0 commit comments

Comments
 (0)