📄 doublemetaphonetest.java
字号:
"properally", "properly" }, {
"proplematic", "problematic" }, {
"protray", "portray" }, {
"pscolgst", "psychologist" }, {
"psicolagest", "psychologist" }, {
"psycolagest", "psychologist" }, {
"quoz", "quiz" }, {
"radious", "radius" }, {
"reccomend", "recommend" }, {
"reccona", "raccoon" }, {
"recieve", "receive" }, {
"reconise", "recognize" }, {
"rectangeles", "rectangle" }, {
"reoccurring", "recurring" }, {
"repitition", "repetition" }, {
"replasments", "replacement" }, {
"respct", "respect" }, {
"respecally", "respectfully" }, {
"rsx", "RSX" }, {
"runnung", "running" }, {
"sacreligious", "sacrilegious" }, {
"salut", "salute" }, {
"searcheable", "searchable" }, {
"seferal", "several" }, {
"segements", "segments" }, {
"sence", "sense" }, {
"seperate", "separate" }, {
"sicolagest", "psychologist" }, {
"sieze", "seize" }, {
"simplye", "simply" }, {
"sitte", "site" }, {
"slyph", "sylph" }, {
"smil", "smile" }, {
"sometmes", "sometimes" }, {
"soonec", "sonic" }, {
"specificialy", "specifically" }, {
"spel", "spell" }, {
"spoak", "spoke" }, {
"sponsered", "sponsored" }, {
"stering", "steering" }, {
"straightjacket", "straitjacket" }, {
"stumach", "stomach" }, {
"stutent", "student" }, {
"styleguide", "style guide" }, {
"subpena", "subpoena" }, {
"substations", "substitutions" }, {
"supercede", "supersede" }, {
"superfulous", "superfluous" }, {
"susan", "Susan" }, {
"swimwear", "swim wear" }, {
"syncorization", "synchronization" }, {
"taff", "tough" }, {
"taht", "that" }, {
"tattos", "tattoos" }, {
"techniquely", "technically" }, {
"teh", "the" }, {
"tem", "team" }, {
"teo", "two" }, {
"teridical", "theoretical" }, {
"tesst", "test" }, {
"theridically", "theoretical" }, {
"thredically", "theoretically" }, {
"thruout", "throughout" }, {
"ths", "this" }, {
"titalate", "titillate" }, {
"tobagan", "tobaggon" }, {
"tommorrow", "tomorrow" }, {
"tomorow", "tomorrow" }, {
"trubbel", "trouble" }, {
"ttest", "test" }, {
"tyrrany", "tyranny" }, {
"unatourral", "unnatural" }, {
"unaturral", "unnatural" }, {
"unconisitional", "unconstitutional" }, {
"unconscience", "unconscious" }, {
"underladder", "under ladder" }, {
"unentelegible", "unintelligible" }, {
"unfortunently", "unfortunately" }, {
"unnaturral", "unnatural" }, {
"upcast", "up cast" }, {
"verison", "version" }, {
"vinagarette", "vinaigrette" }, {
"volunteerism", "voluntarism" }, {
"volye", "volley" }, {
"waite", "wait" }, {
"wan't", "won't" }, {
"warloord", "warlord" }, {
"whaaat", "what" }, {
"whard", "ward" }, {
"whimp", "wimp" }, {
"wicken", "weaken" }, {
"wierd", "weird" }, {
"wrank", "rank" }, {
"writeen", "righten" }, {
"writting", "writing" }, {
"wundeews", "windows" }, {
"yeild", "yield" }, };
public static Test suite() {
return (new TestSuite(DoubleMetaphoneTest.class));
}
private DoubleMetaphone doubleMetaphone = null;
public DoubleMetaphoneTest(String name) {
super(name);
}
/**
* Tests encoding APIs in one place.
*/
private void assertDoubleMetaphone(String expected, String source) {
assertEquals(expected, this.getDoubleMetaphone().encode(source));
try {
assertEquals(expected, this.getDoubleMetaphone().encode((Object) source));
} catch (EncoderException e) {
fail("Unexpected expection: " + e);
}
assertEquals(expected, this.getDoubleMetaphone().doubleMetaphone(source));
assertEquals(expected, this.getDoubleMetaphone().doubleMetaphone(source, false));
}
/**
* Tests encoding APIs in one place.
*/
public void assertDoubleMetaphoneAlt(String expected, String source) {
assertEquals(expected, this.getDoubleMetaphone().doubleMetaphone(source, true));
}
public void doubleMetaphoneEqualTest(String[][] pairs, boolean useAlternate) {
this.validateFixture(pairs);
for (int i = 0; i < pairs.length; i++) {
String name0 = pairs[i][0];
String name1 = pairs[i][1];
String failMsg = "Expected match between " + name0 + " and " + name1 + " (use alternate: " + useAlternate + ")";
assertTrue(failMsg, this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1, useAlternate));
assertTrue(failMsg, this.getDoubleMetaphone().isDoubleMetaphoneEqual(name1, name0, useAlternate));
if (!useAlternate) {
assertTrue(failMsg, this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1));
assertTrue(failMsg, this.getDoubleMetaphone().isDoubleMetaphoneEqual(name1, name0));
}
}
}
public void doubleMetaphoneNotEqualTest(boolean alternate) {
assertFalse(this.getDoubleMetaphone().isDoubleMetaphoneEqual("Brain", "Band", alternate));
assertFalse(this.getDoubleMetaphone().isDoubleMetaphoneEqual("Band", "Brain", alternate));
if (!alternate) {
assertFalse(this.getDoubleMetaphone().isDoubleMetaphoneEqual("Brain", "Band"));
assertFalse(this.getDoubleMetaphone().isDoubleMetaphoneEqual("Band", "Brain"));
}
}
private DoubleMetaphone getDoubleMetaphone() {
return this.doubleMetaphone;
}
protected StringEncoder makeEncoder() {
return new Metaphone();
}
private void setDoubleMetaphone(DoubleMetaphone doubleMetaphone) {
this.doubleMetaphone = doubleMetaphone;
}
public void setUp() throws Exception {
super.setUp();
this.setDoubleMetaphone(new DoubleMetaphone());
}
public void tearDown() throws Exception {
super.tearDown();
this.setDoubleMetaphone(null);
}
public void testDoubleMetaphone() {
assertDoubleMetaphone("TSTN", "testing");
assertDoubleMetaphone("0", "The");
assertDoubleMetaphone("KK", "quick");
assertDoubleMetaphone("PRN", "brown");
assertDoubleMetaphone("FKS", "fox");
assertDoubleMetaphone("JMPT", "jumped");
assertDoubleMetaphone("AFR", "over");
assertDoubleMetaphone("0", "the");
assertDoubleMetaphone("LS", "lazy");
assertDoubleMetaphone("TKS", "dogs");
assertDoubleMetaphone("MKFR", "MacCafferey");
assertDoubleMetaphone("STFN", "Stephan");
assertDoubleMetaphone("KSSK", "Kuczewski");
assertDoubleMetaphoneAlt("TSTN", "testing");
assertDoubleMetaphoneAlt("T", "The");
assertDoubleMetaphoneAlt("KK", "quick");
assertDoubleMetaphoneAlt("PRN", "brown");
assertDoubleMetaphoneAlt("FKS", "fox");
assertDoubleMetaphoneAlt("AMPT", "jumped");
assertDoubleMetaphoneAlt("AFR", "over");
assertDoubleMetaphoneAlt("T", "the");
assertDoubleMetaphoneAlt("LS", "lazy");
assertDoubleMetaphoneAlt("TKS", "dogs");
assertDoubleMetaphoneAlt("MKFR", "MacCafferey");
assertDoubleMetaphoneAlt("STFN", "Stephan");
assertDoubleMetaphoneAlt("KXFS", "Kutchefski");
}
public void testEmpty() {
assertEquals(null, this.getDoubleMetaphone().doubleMetaphone(null));
assertEquals(null, this.getDoubleMetaphone().doubleMetaphone(""));
assertEquals(null, this.getDoubleMetaphone().doubleMetaphone(" "));
assertEquals(null, this.getDoubleMetaphone().doubleMetaphone("\t\n\r "));
}
public void testIsDoubleMetaphoneEqualBasic() {
String[][] testFixture = new String[][] { { "Case", "case" }, {
"CASE", "Case" }, {
"caSe", "cAsE" }, {
"cookie", "quick" }, {
"quick", "cookie" }, {
"Brian", "Bryan" }, {
"Auto", "Otto" }, {
"Steven", "Stefan" }, {
"Philipowitz", "Filipowicz" }
};
doubleMetaphoneEqualTest(testFixture, false);
doubleMetaphoneEqualTest(testFixture, true);
}
/**
* Example in the original article but failures in this Java impl:
*/
public void testIsDoubleMetaphoneEqualExtended1() {
// String[][] testFixture = new String[][] { { "Smith", "Schmidt" }
// };
// doubleMetaphoneEqualTest(testFixture, false);
// doubleMetaphoneEqualTest(testFixture, true);
}
public void testIsDoubleMetaphoneEqualExtended2() {
String[][] testFixture = new String[][] { { "Jablonski", "Yablonsky" }
};
//doubleMetaphoneEqualTest(testFixture, false);
doubleMetaphoneEqualTest(testFixture, true);
}
/**
* Used to generate the MATCHES array and test possible matches from the
* FIXTURE arrary.
*/
public void testIsDoubleMetaphoneEqualExtended3() {
this.validateFixture(FIXTURE);
StringBuffer failures = new StringBuffer();
StringBuffer matches = new StringBuffer();
String cr = System.getProperty("line.separator");
matches.append("private static final String[][] MATCHES = {" + cr);
int failCount = 0;
for (int i = 0; i < FIXTURE.length; i++) {
String name0 = FIXTURE[i][0];
String name1 = FIXTURE[i][1];
boolean match1 = this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1, false);
boolean match2 = this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1, true);
if (match1 == false && match2 == false) {
String failMsg = "[" + i + "] " + name0 + " and " + name1 + cr;
failures.append(failMsg);
failCount++;
} else {
matches.append("{\"" + name0 + "\", \"" + name1 + "\"}," + cr);
}
}
String msg = failures.toString();
matches.append("};");
// Turn on to print a new MATCH array
//System.out.println(matches.toString());
if (msg.length() > 0) {
// Turn on to see which pairs do NOT match.
//fail(failCount + " failures out of " + FIXTURE.length + ". The
// following could be made to match: " + cr + msg);
}
}
public void testIsDoubleMetaphoneEqualWithMATCHES() {
this.validateFixture(MATCHES);
for (int i = 0; i < MATCHES.length; i++) {
String name0 = MATCHES[i][0];
String name1 = MATCHES[i][1];
boolean match1 = this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1, false);
boolean match2 = this.getDoubleMetaphone().isDoubleMetaphoneEqual(name0, name1, true);
if (match1 == false && match2 == false) {
fail("Expected match [" + i + "] " + name0 + " and " + name1);
}
}
}
public void testIsDoubleMetaphoneNotEqual() {
doubleMetaphoneNotEqualTest(false);
doubleMetaphoneNotEqualTest(true);
}
public void testCCedilla() {
this.getDoubleMetaphone().isDoubleMetaphoneEqual("
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -