You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/06/27 20:33:49 UTC
[04/15] lucenenet git commit: Added Lucene.Net.Analysis.Phonetic +
tests. Rather than porting over the entire commons-codec library,
only the language features were ported and added to this library.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/1ee3a9cc/src/Lucene.Net.Tests.Analysis.Phonetic/Language/DoubleMetaphoneTest.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Analysis.Phonetic/Language/DoubleMetaphoneTest.cs b/src/Lucene.Net.Tests.Analysis.Phonetic/Language/DoubleMetaphoneTest.cs
new file mode 100644
index 0000000..8a4604d
--- /dev/null
+++ b/src/Lucene.Net.Tests.Analysis.Phonetic/Language/DoubleMetaphoneTest.cs
@@ -0,0 +1,1266 @@
+using NUnit.Framework;
+using System;
+using System.Text;
+
+namespace Lucene.Net.Analysis.Phonetic.Language
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ /// <summary>
+ /// Tests <see cref="DoubleMetaphone"/>
+ /// </summary>
+ public class DoubleMetaphoneTest : StringEncoderAbstractTest<DoubleMetaphone>
+ {
+ /**
+ * Test data from http://aspell.net/test/orig/batch0.tab.
+ *
+ * "Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying
+ * and distribution of this entire article is permitted in any medium,
+ * provided this notice is preserved."
+ *
+ * Massaged the test data in the array below.
+ */
+ private static readonly string[][] FIXTURE = { new string[] {
+ "Accosinly", "Occasionally" }, new string[] {
+ "Ciculer", "Circler" }, new string[] {
+ "Circue", "Circle" }, new string[] {
+ "Maddness", "Madness" }, new string[] {
+ "Occusionaly", "Occasionally" }, new string[] {
+ "Steffen", "Stephen" }, new string[] {
+ "Thw", "The" }, new string[] {
+ "Unformanlly", "Unfortunately" }, new string[] {
+ "Unfortally", "Unfortunately" }, new string[] {
+ "abilitey", "ability" }, new string[] {
+ "abouy", "about" }, new string[] {
+ "absorbtion", "absorption" }, new string[] {
+ "accidently", "accidentally" }, new string[] {
+ "accomodate", "accommodate" }, new string[] {
+ "acommadate", "accommodate" }, new string[] {
+ "acord", "accord" }, new string[] {
+ "adultry", "adultery" }, new string[] {
+ "aggresive", "aggressive" }, new string[] {
+ "alchohol", "alcohol" }, new string[] {
+ "alchoholic", "alcoholic" }, new string[] {
+ "allieve", "alive" }, new string[] {
+ "alot", "a lot" }, new string[] {
+ "alright", "all right" }, new string[] {
+ "amature", "amateur" }, new string[] {
+ "ambivilant", "ambivalent" }, new string[] {
+ "amification", "amplification" }, new string[] {
+ "amourfous", "amorphous" }, new string[] {
+ "annoint", "anoint" }, new string[] {
+ "annonsment", "announcement" }, new string[] {
+ "annoyting", "anting" }, new string[] {
+ "annuncio", "announce" }, new string[] {
+ "anonomy", "anatomy" }, new string[] {
+ "anotomy", "anatomy" }, new string[] {
+ "antidesestablishmentarianism", "antidisestablishmentarianism" }, new string[] {
+ "antidisestablishmentarism", "antidisestablishmentarianism" }, new string[] {
+ "anynomous", "anonymous" }, new string[] {
+ "appelet", "applet" }, new string[] {
+ "appreceiated", "appreciated" }, new string[] {
+ "appresteate", "appreciate" }, new string[] {
+ "aquantance", "acquaintance" }, new string[] {
+ "aratictature", "architecture" }, new string[] {
+ "archeype", "archetype" }, new string[] {
+ "aricticure", "architecture" }, new string[] {
+ "artic", "arctic" }, new string[] {
+ "asentote", "asymptote" }, new string[] {
+ "ast", "at" }, new string[] {
+ "asterick", "asterisk" }, new string[] {
+ "asymetric", "asymmetric" }, new string[] {
+ "atentively", "attentively" }, new string[] {
+ "autoamlly", "automatically" }, new string[] {
+ "bankrot", "bankrupt" }, new string[] {
+ "basicly", "basically" }, new string[] {
+ "batallion", "battalion" }, new string[] {
+ "bbrose", "browse" }, new string[] {
+ "beauro", "bureau" }, new string[] {
+ "beaurocracy", "bureaucracy" }, new string[] {
+ "beggining", "beginning" }, new string[] {
+ "beging", "beginning" }, new string[] {
+ "behaviour", "behavior" }, new string[] {
+ "beleive", "believe" }, new string[] {
+ "belive", "believe" }, new string[] {
+ "benidifs", "benefits" }, new string[] {
+ "bigginging", "beginning" }, new string[] {
+ "blait", "bleat" }, new string[] {
+ "bouyant", "buoyant" }, new string[] {
+ "boygot", "boycott" }, new string[] {
+ "brocolli", "broccoli" }, new string[] {
+ "buch", "bush" }, new string[] {
+ "buder", "butter" }, new string[] {
+ "budr", "butter" }, new string[] {
+ "budter", "butter" }, new string[] {
+ "buracracy", "bureaucracy" }, new string[] {
+ "burracracy", "bureaucracy" }, new string[] {
+ "buton", "button" }, new string[] {
+ "byby", "by by" }, new string[] {
+ "cauler", "caller" }, new string[] {
+ "ceasar", "caesar" }, new string[] {
+ "cemetary", "cemetery" }, new string[] {
+ "changeing", "changing" }, new string[] {
+ "cheet", "cheat" }, new string[] {
+ "cicle", "circle" }, new string[] {
+ "cimplicity", "simplicity" }, new string[] {
+ "circumstaces", "circumstances" }, new string[] {
+ "clob", "club" }, new string[] {
+ "coaln", "colon" }, new string[] {
+ "cocamena", "cockamamie" }, new string[] {
+ "colleaque", "colleague" }, new string[] {
+ "colloquilism", "colloquialism" }, new string[] {
+ "columne", "column" }, new string[] {
+ "comiler", "compiler" }, new string[] {
+ "comitmment", "commitment" }, new string[] {
+ "comitte", "committee" }, new string[] {
+ "comittmen", "commitment" }, new string[] {
+ "comittmend", "commitment" }, new string[] {
+ "commerciasl", "commercials" }, new string[] {
+ "commited", "committed" }, new string[] {
+ "commitee", "committee" }, new string[] {
+ "companys", "companies" }, new string[] {
+ "compicated", "complicated" }, new string[] {
+ "comupter", "computer" }, new string[] {
+ "concensus", "consensus" }, new string[] {
+ "confusionism", "confucianism" }, new string[] {
+ "congradulations", "congratulations" }, new string[] {
+ "conibation", "contribution" }, new string[] {
+ "consident", "consistent" }, new string[] {
+ "consident", "consonant" }, new string[] {
+ "contast", "constant" }, new string[] {
+ "contastant", "constant" }, new string[] {
+ "contunie", "continue" }, new string[] {
+ "cooly", "coolly" }, new string[] {
+ "copping", "coping" }, new string[] {
+ "cosmoplyton", "cosmopolitan" }, new string[] {
+ "courst", "court" }, new string[] {
+ "crasy", "crazy" }, new string[] {
+ "cravets", "caveats" }, new string[] {
+ "credetability", "credibility" }, new string[] {
+ "criqitue", "critique" }, new string[] {
+ "croke", "croak" }, new string[] {
+ "crucifiction", "crucifixion" }, new string[] {
+ "crusifed", "crucified" }, new string[] {
+ "ctitique", "critique" }, new string[] {
+ "cumba", "combo" }, new string[] {
+ "custamisation", "customization" }, new string[] {
+ "dag", "dog" }, new string[] {
+ "daly", "daily" }, new string[] {
+ "danguages", "dangerous" }, new string[] {
+ "deaft", "draft" }, new string[] {
+ "defence", "defense" }, new string[] {
+ "defenly", "defiantly" }, new string[] {
+ "definate", "definite" }, new string[] {
+ "definately", "definitely" }, new string[] {
+ "dependeble", "dependable" }, new string[] {
+ "descrption", "description" }, new string[] {
+ "descrptn", "description" }, new string[] {
+ "desparate", "desperate" }, new string[] {
+ "dessicate", "desiccate" }, new string[] {
+ "destint", "distant" }, new string[] {
+ "develepment", "developments" }, new string[] {
+ "developement", "development" }, new string[] {
+ "develpond", "development" }, new string[] {
+ "devulge", "divulge" }, new string[] {
+ "diagree", "disagree" }, new string[] {
+ "dieties", "deities" }, new string[] {
+ "dinasaur", "dinosaur" }, new string[] {
+ "dinasour", "dinosaur" }, new string[] {
+ "direcyly", "directly" }, new string[] {
+ "discuess", "discuss" }, new string[] {
+ "disect", "dissect" }, new string[] {
+ "disippate", "dissipate" }, new string[] {
+ "disition", "decision" }, new string[] {
+ "dispair", "despair" }, new string[] {
+ "disssicion", "discussion" }, new string[] {
+ "distarct", "distract" }, new string[] {
+ "distart", "distort" }, new string[] {
+ "distroy", "destroy" }, new string[] {
+ "documtations", "documentation" }, new string[] {
+ "doenload", "download" }, new string[] {
+ "dongle", "dangle" }, new string[] {
+ "doog", "dog" }, new string[] {
+ "dramaticly", "dramatically" }, new string[] {
+ "drunkeness", "drunkenness" }, new string[] {
+ "ductioneery", "dictionary" }, new string[] {
+ "dur", "due" }, new string[] {
+ "duren", "during" }, new string[] {
+ "dymatic", "dynamic" }, new string[] {
+ "dynaic", "dynamic" }, new string[] {
+ "ecstacy", "ecstasy" }, new string[] {
+ "efficat", "efficient" }, new string[] {
+ "efficity", "efficacy" }, new string[] {
+ "effots", "efforts" }, new string[] {
+ "egsistence", "existence" }, new string[] {
+ "eitiology", "etiology" }, new string[] {
+ "elagent", "elegant" }, new string[] {
+ "elligit", "elegant" }, new string[] {
+ "embarass", "embarrass" }, new string[] {
+ "embarassment", "embarrassment" }, new string[] {
+ "embaress", "embarrass" }, new string[] {
+ "encapsualtion", "encapsulation" }, new string[] {
+ "encyclapidia", "encyclopedia" }, new string[] {
+ "encyclopia", "encyclopedia" }, new string[] {
+ "engins", "engine" }, new string[] {
+ "enhence", "enhance" }, new string[] {
+ "enligtment", "Enlightenment" }, new string[] {
+ "ennuui", "ennui" }, new string[] {
+ "enought", "enough" }, new string[] {
+ "enventions", "inventions" }, new string[] {
+ "envireminakl", "environmental" }, new string[] {
+ "enviroment", "environment" }, new string[] {
+ "epitomy", "epitome" }, new string[] {
+ "equire", "acquire" }, new string[] {
+ "errara", "error" }, new string[] {
+ "erro", "error" }, new string[] {
+ "evaualtion", "evaluation" }, new string[] {
+ "evething", "everything" }, new string[] {
+ "evtually", "eventually" }, new string[] {
+ "excede", "exceed" }, new string[] {
+ "excercise", "exercise" }, new string[] {
+ "excpt", "except" }, new string[] {
+ "excution", "execution" }, new string[] {
+ "exhileration", "exhilaration" }, new string[] {
+ "existance", "existence" }, new string[] {
+ "expleyly", "explicitly" }, new string[] {
+ "explity", "explicitly" }, new string[] {
+ "expresso", "espresso" }, new string[] {
+ "exspidient", "expedient" }, new string[] {
+ "extions", "extensions" }, new string[] {
+ "factontion", "factorization" }, new string[] {
+ "failer", "failure" }, new string[] {
+ "famdasy", "fantasy" }, new string[] {
+ "faver", "favor" }, new string[] {
+ "faxe", "fax" }, new string[] {
+ "febuary", "february" }, new string[] {
+ "firey", "fiery" }, new string[] {
+ "fistival", "festival" }, new string[] {
+ "flatterring", "flattering" }, new string[] {
+ "fluk", "flux" }, new string[] {
+ "flukse", "flux" }, new string[] {
+ "fone", "phone" }, new string[] {
+ "forsee", "foresee" }, new string[] {
+ "frustartaion", "frustrating" }, new string[] {
+ "fuction", "function" }, new string[] {
+ "funetik", "phonetic" }, new string[] {
+ "futs", "guts" }, new string[] {
+ "gamne", "came" }, new string[] {
+ "gaurd", "guard" }, new string[] {
+ "generly", "generally" }, new string[] {
+ "ghandi", "gandhi" }, new string[] {
+ "goberment", "government" }, new string[] {
+ "gobernement", "government" }, new string[] {
+ "gobernment", "government" }, new string[] {
+ "gotton", "gotten" }, new string[] {
+ "gracefull", "graceful" }, new string[] {
+ "gradualy", "gradually" }, new string[] {
+ "grammer", "grammar" }, new string[] {
+ "hallo", "hello" }, new string[] {
+ "hapily", "happily" }, new string[] {
+ "harrass", "harass" }, new string[] {
+ "havne", "have" }, new string[] {
+ "heellp", "help" }, new string[] {
+ "heighth", "height" }, new string[] {
+ "hellp", "help" }, new string[] {
+ "helo", "hello" }, new string[] {
+ "herlo", "hello" }, new string[] {
+ "hifin", "hyphen" }, new string[] {
+ "hifine", "hyphen" }, new string[] {
+ "higer", "higher" }, new string[] {
+ "hiphine", "hyphen" }, new string[] {
+ "hippie", "hippy" }, new string[] {
+ "hippopotamous", "hippopotamus" }, new string[] {
+ "hlp", "help" }, new string[] {
+ "hourse", "horse" }, new string[] {
+ "houssing", "housing" }, new string[] {
+ "howaver", "however" }, new string[] {
+ "howver", "however" }, new string[] {
+ "humaniti", "humanity" }, new string[] {
+ "hyfin", "hyphen" }, new string[] {
+ "hypotathes", "hypothesis" }, new string[] {
+ "hypotathese", "hypothesis" }, new string[] {
+ "hystrical", "hysterical" }, new string[] {
+ "ident", "indent" }, new string[] {
+ "illegitament", "illegitimate" }, new string[] {
+ "imbed", "embed" }, new string[] {
+ "imediaetly", "immediately" }, new string[] {
+ "imfamy", "infamy" }, new string[] {
+ "immenant", "immanent" }, new string[] {
+ "implemtes", "implements" }, new string[] {
+ "inadvertant", "inadvertent" }, new string[] {
+ "incase", "in case" }, new string[] {
+ "incedious", "insidious" }, new string[] {
+ "incompleet", "incomplete" }, new string[] {
+ "incomplot", "incomplete" }, new string[] {
+ "inconvenant", "inconvenient" }, new string[] {
+ "inconvience", "inconvenience" }, new string[] {
+ "independant", "independent" }, new string[] {
+ "independenent", "independent" }, new string[] {
+ "indepnends", "independent" }, new string[] {
+ "indepth", "in depth" }, new string[] {
+ "indispensible", "indispensable" }, new string[] {
+ "inefficite", "inefficient" }, new string[] {
+ "inerface", "interface" }, new string[] {
+ "infact", "in fact" }, new string[] {
+ "influencial", "influential" }, new string[] {
+ "inital", "initial" }, new string[] {
+ "initinized", "initialized" }, new string[] {
+ "initized", "initialized" }, new string[] {
+ "innoculate", "inoculate" }, new string[] {
+ "insistant", "insistent" }, new string[] {
+ "insistenet", "insistent" }, new string[] {
+ "instulation", "installation" }, new string[] {
+ "intealignt", "intelligent" }, new string[] {
+ "intejilent", "intelligent" }, new string[] {
+ "intelegent", "intelligent" }, new string[] {
+ "intelegnent", "intelligent" }, new string[] {
+ "intelejent", "intelligent" }, new string[] {
+ "inteligent", "intelligent" }, new string[] {
+ "intelignt", "intelligent" }, new string[] {
+ "intellagant", "intelligent" }, new string[] {
+ "intellegent", "intelligent" }, new string[] {
+ "intellegint", "intelligent" }, new string[] {
+ "intellgnt", "intelligent" }, new string[] {
+ "intensionality", "intensionally" }, new string[] {
+ "interate", "iterate" }, new string[] {
+ "internation", "international" }, new string[] {
+ "interpretate", "interpret" }, new string[] {
+ "interpretter", "interpreter" }, new string[] {
+ "intertes", "interested" }, new string[] {
+ "intertesd", "interested" }, new string[] {
+ "invermeantial", "environmental" }, new string[] {
+ "irregardless", "regardless" }, new string[] {
+ "irresistable", "irresistible" }, new string[] {
+ "irritible", "irritable" }, new string[] {
+ "islams", "muslims" }, new string[] {
+ "isotrop", "isotope" }, new string[] {
+ "isreal", "israel" }, new string[] {
+ "johhn", "john" }, new string[] {
+ "judgement", "judgment" }, new string[] {
+ "kippur", "kipper" }, new string[] {
+ "knawing", "knowing" }, new string[] {
+ "latext", "latest" }, new string[] {
+ "leasve", "leave" }, new string[] {
+ "lesure", "leisure" }, new string[] {
+ "liasion", "lesion" }, new string[] {
+ "liason", "liaison" }, new string[] {
+ "libary", "library" }, new string[] {
+ "likly", "likely" }, new string[] {
+ "lilometer", "kilometer" }, new string[] {
+ "liquify", "liquefy" }, new string[] {
+ "lloyer", "layer" }, new string[] {
+ "lossing", "losing" }, new string[] {
+ "luser", "laser" }, new string[] {
+ "maintanence", "maintenance" }, new string[] {
+ "majaerly", "majority" }, new string[] {
+ "majoraly", "majority" }, new string[] {
+ "maks", "masks" }, new string[] {
+ "mandelbrot", "Mandelbrot" }, new string[] {
+ "mant", "want" }, new string[] {
+ "marshall", "marshal" }, new string[] {
+ "maxium", "maximum" }, new string[] {
+ "meory", "memory" }, new string[] {
+ "metter", "better" }, new string[] {
+ "mic", "mike" }, new string[] {
+ "midia", "media" }, new string[] {
+ "millenium", "millennium" }, new string[] {
+ "miniscule", "minuscule" }, new string[] {
+ "minkay", "monkey" }, new string[] {
+ "minum", "minimum" }, new string[] {
+ "mischievious", "mischievous" }, new string[] {
+ "misilous", "miscellaneous" }, new string[] {
+ "momento", "memento" }, new string[] {
+ "monkay", "monkey" }, new string[] {
+ "mosaik", "mosaic" }, new string[] {
+ "mostlikely", "most likely" }, new string[] {
+ "mousr", "mouser" }, new string[] {
+ "mroe", "more" }, new string[] {
+ "neccessary", "necessary" }, new string[] {
+ "necesary", "necessary" }, new string[] {
+ "necesser", "necessary" }, new string[] {
+ "neice", "niece" }, new string[] {
+ "neighbour", "neighbor" }, new string[] {
+ "nemonic", "pneumonic" }, new string[] {
+ "nevade", "Nevada" }, new string[] {
+ "nickleodeon", "nickelodeon" }, new string[] {
+ "nieve", "naive" }, new string[] {
+ "noone", "no one" }, new string[] {
+ "noticably", "noticeably" }, new string[] {
+ "notin", "not in" }, new string[] {
+ "nozled", "nuzzled" }, new string[] {
+ "objectsion", "objects" }, new string[] {
+ "obsfuscate", "obfuscate" }, new string[] {
+ "ocassion", "occasion" }, new string[] {
+ "occuppied", "occupied" }, new string[] {
+ "occurence", "occurrence" }, new string[] {
+ "octagenarian", "octogenarian" }, new string[] {
+ "olf", "old" }, new string[] {
+ "opposim", "opossum" }, new string[] {
+ "organise", "organize" }, new string[] {
+ "organiz", "organize" }, new string[] {
+ "orientate", "orient" }, new string[] {
+ "oscilascope", "oscilloscope" }, new string[] {
+ "oving", "moving" }, new string[] {
+ "paramers", "parameters" }, new string[] {
+ "parametic", "parameter" }, new string[] {
+ "paranets", "parameters" }, new string[] {
+ "partrucal", "particular" }, new string[] {
+ "pataphysical", "metaphysical" }, new string[] {
+ "patten", "pattern" }, new string[] {
+ "permissable", "permissible" }, new string[] {
+ "permition", "permission" }, new string[] {
+ "permmasivie", "permissive" }, new string[] {
+ "perogative", "prerogative" }, new string[] {
+ "persue", "pursue" }, new string[] {
+ "phantasia", "fantasia" }, new string[] {
+ "phenominal", "phenomenal" }, new string[] {
+ "picaresque", "picturesque" }, new string[] {
+ "playwrite", "playwright" }, new string[] {
+ "poeses", "poesies" }, new string[] {
+ "polation", "politician" }, new string[] {
+ "poligamy", "polygamy" }, new string[] {
+ "politict", "politic" }, new string[] {
+ "pollice", "police" }, new string[] {
+ "polypropalene", "polypropylene" }, new string[] {
+ "pompom", "pompon" }, new string[] {
+ "possable", "possible" }, new string[] {
+ "practicle", "practical" }, new string[] {
+ "pragmaticism", "pragmatism" }, new string[] {
+ "preceeding", "preceding" }, new string[] {
+ "precion", "precision" }, new string[] {
+ "precios", "precision" }, new string[] {
+ "preemptory", "peremptory" }, new string[] {
+ "prefices", "prefixes" }, new string[] {
+ "prefixt", "prefixed" }, new string[] {
+ "presbyterian", "Presbyterian" }, new string[] {
+ "presue", "pursue" }, new string[] {
+ "presued", "pursued" }, new string[] {
+ "privielage", "privilege" }, new string[] {
+ "priviledge", "privilege" }, new string[] {
+ "proceedures", "procedures" }, new string[] {
+ "pronensiation", "pronunciation" }, new string[] {
+ "pronisation", "pronunciation" }, new string[] {
+ "pronounciation", "pronunciation" }, new string[] {
+ "properally", "properly" }, new string[] {
+ "proplematic", "problematic" }, new string[] {
+ "protray", "portray" }, new string[] {
+ "pscolgst", "psychologist" }, new string[] {
+ "psicolagest", "psychologist" }, new string[] {
+ "psycolagest", "psychologist" }, new string[] {
+ "quoz", "quiz" }, new string[] {
+ "radious", "radius" }, new string[] {
+ "ramplily", "rampantly" }, new string[] {
+ "reccomend", "recommend" }, new string[] {
+ "reccona", "raccoon" }, new string[] {
+ "recieve", "receive" }, new string[] {
+ "reconise", "recognize" }, new string[] {
+ "rectangeles", "rectangle" }, new string[] {
+ "redign", "redesign" }, new string[] {
+ "reoccurring", "recurring" }, new string[] {
+ "repitition", "repetition" }, new string[] {
+ "replasments", "replacement" }, new string[] {
+ "reposable", "responsible" }, new string[] {
+ "reseblence", "resemblance" }, new string[] {
+ "respct", "respect" }, new string[] {
+ "respecally", "respectfully" }, new string[] {
+ "roon", "room" }, new string[] {
+ "rought", "roughly" }, new string[] {
+ "rsx", "RSX" }, new string[] {
+ "rudemtry", "rudimentary" }, new string[] {
+ "runnung", "running" }, new string[] {
+ "sacreligious", "sacrilegious" }, new string[] {
+ "saftly", "safely" }, new string[] {
+ "salut", "salute" }, new string[] {
+ "satifly", "satisfy" }, new string[] {
+ "scrabdle", "scrabble" }, new string[] {
+ "searcheable", "searchable" }, new string[] {
+ "secion", "section" }, new string[] {
+ "seferal", "several" }, new string[] {
+ "segements", "segments" }, new string[] {
+ "sence", "sense" }, new string[] {
+ "seperate", "separate" }, new string[] {
+ "sherbert", "sherbet" }, new string[] {
+ "sicolagest", "psychologist" }, new string[] {
+ "sieze", "seize" }, new string[] {
+ "simpfilty", "simplicity" }, new string[] {
+ "simplye", "simply" }, new string[] {
+ "singal", "signal" }, new string[] {
+ "sitte", "site" }, new string[] {
+ "situration", "situation" }, new string[] {
+ "slyph", "sylph" }, new string[] {
+ "smil", "smile" }, new string[] {
+ "snuck", "sneaked" }, new string[] {
+ "sometmes", "sometimes" }, new string[] {
+ "soonec", "sonic" }, new string[] {
+ "specificialy", "specifically" }, new string[] {
+ "spel", "spell" }, new string[] {
+ "spoak", "spoke" }, new string[] {
+ "sponsered", "sponsored" }, new string[] {
+ "stering", "steering" }, new string[] {
+ "straightjacket", "straitjacket" }, new string[] {
+ "stumach", "stomach" }, new string[] {
+ "stutent", "student" }, new string[] {
+ "styleguide", "style guide" }, new string[] {
+ "subisitions", "substitutions" }, new string[] {
+ "subjecribed", "subscribed" }, new string[] {
+ "subpena", "subpoena" }, new string[] {
+ "substations", "substitutions" }, new string[] {
+ "suger", "sugar" }, new string[] {
+ "supercede", "supersede" }, new string[] {
+ "superfulous", "superfluous" }, new string[] {
+ "susan", "Susan" }, new string[] {
+ "swimwear", "swim wear" }, new string[] {
+ "syncorization", "synchronization" }, new string[] {
+ "taff", "tough" }, new string[] {
+ "taht", "that" }, new string[] {
+ "tattos", "tattoos" }, new string[] {
+ "techniquely", "technically" }, new string[] {
+ "teh", "the" }, new string[] {
+ "tem", "team" }, new string[] {
+ "teo", "two" }, new string[] {
+ "teridical", "theoretical" }, new string[] {
+ "tesst", "test" }, new string[] {
+ "tets", "tests" }, new string[] {
+ "thanot", "than or" }, new string[] {
+ "theirselves", "themselves" }, new string[] {
+ "theridically", "theoretical" }, new string[] {
+ "thredically", "theoretically" }, new string[] {
+ "thruout", "throughout" }, new string[] {
+ "ths", "this" }, new string[] {
+ "titalate", "titillate" }, new string[] {
+ "tobagan", "tobaggon" }, new string[] {
+ "tommorrow", "tomorrow" }, new string[] {
+ "tomorow", "tomorrow" }, new string[] {
+ "tradegy", "tragedy" }, new string[] {
+ "trubbel", "trouble" }, new string[] {
+ "ttest", "test" }, new string[] {
+ "tunnellike", "tunnel like" }, new string[] {
+ "tured", "turned" }, new string[] {
+ "tyrrany", "tyranny" }, new string[] {
+ "unatourral", "unnatural" }, new string[] {
+ "unaturral", "unnatural" }, new string[] {
+ "unconisitional", "unconstitutional" }, new string[] {
+ "unconscience", "unconscious" }, new string[] {
+ "underladder", "under ladder" }, new string[] {
+ "unentelegible", "unintelligible" }, new string[] {
+ "unfortunently", "unfortunately" }, new string[] {
+ "unnaturral", "unnatural" }, new string[] {
+ "upcast", "up cast" }, new string[] {
+ "upmost", "utmost" }, new string[] {
+ "uranisium", "uranium" }, new string[] {
+ "verison", "version" }, new string[] {
+ "vinagarette", "vinaigrette" }, new string[] {
+ "volumptuous", "voluptuous" }, new string[] {
+ "volunteerism", "voluntarism" }, new string[] {
+ "volye", "volley" }, new string[] {
+ "wadting", "wasting" }, new string[] {
+ "waite", "wait" }, new string[] {
+ "wan't", "won't" }, new string[] {
+ "warloord", "warlord" }, new string[] {
+ "whaaat", "what" }, new string[] {
+ "whard", "ward" }, new string[] {
+ "whimp", "wimp" }, new string[] {
+ "wicken", "weaken" }, new string[] {
+ "wierd", "weird" }, new string[] {
+ "wrank", "rank" }, new string[] {
+ "writeen", "righten" }, new string[] {
+ "writting", "writing" }, new string[] {
+ "wundeews", "windows" }, new string[] {
+ "yeild", "yield" }, new string[] {
+ "youe", "your" }
+ };
+
+ /**
+ * A subset of FIXTURE generated by this test.
+ */
+ private static readonly string[][] MATCHES = { new string[] {
+ "Accosinly", "Occasionally" }, new string[] {
+ "Maddness", "Madness" }, new string[] {
+ "Occusionaly", "Occasionally" }, new string[] {
+ "Steffen", "Stephen" }, new string[] {
+ "Thw", "The" }, new string[] {
+ "Unformanlly", "Unfortunately" }, new string[] {
+ "Unfortally", "Unfortunately" }, new string[] {
+ "abilitey", "ability" }, new string[] {
+ "absorbtion", "absorption" }, new string[] {
+ "accidently", "accidentally" }, new string[] {
+ "accomodate", "accommodate" }, new string[] {
+ "acommadate", "accommodate" }, new string[] {
+ "acord", "accord" }, new string[] {
+ "adultry", "adultery" }, new string[] {
+ "aggresive", "aggressive" }, new string[] {
+ "alchohol", "alcohol" }, new string[] {
+ "alchoholic", "alcoholic" }, new string[] {
+ "allieve", "alive" }, new string[] {
+ "alot", "a lot" }, new string[] {
+ "alright", "all right" }, new string[] {
+ "amature", "amateur" }, new string[] {
+ "ambivilant", "ambivalent" }, new string[] {
+ "amourfous", "amorphous" }, new string[] {
+ "annoint", "anoint" }, new string[] {
+ "annonsment", "announcement" }, new string[] {
+ "annoyting", "anting" }, new string[] {
+ "annuncio", "announce" }, new string[] {
+ "anotomy", "anatomy" }, new string[] {
+ "antidesestablishmentarianism", "antidisestablishmentarianism" }, new string[] {
+ "antidisestablishmentarism", "antidisestablishmentarianism" }, new string[] {
+ "anynomous", "anonymous" }, new string[] {
+ "appelet", "applet" }, new string[] {
+ "appreceiated", "appreciated" }, new string[] {
+ "appresteate", "appreciate" }, new string[] {
+ "aquantance", "acquaintance" }, new string[] {
+ "aricticure", "architecture" }, new string[] {
+ "asterick", "asterisk" }, new string[] {
+ "asymetric", "asymmetric" }, new string[] {
+ "atentively", "attentively" }, new string[] {
+ "bankrot", "bankrupt" }, new string[] {
+ "basicly", "basically" }, new string[] {
+ "batallion", "battalion" }, new string[] {
+ "bbrose", "browse" }, new string[] {
+ "beauro", "bureau" }, new string[] {
+ "beaurocracy", "bureaucracy" }, new string[] {
+ "beggining", "beginning" }, new string[] {
+ "behaviour", "behavior" }, new string[] {
+ "beleive", "believe" }, new string[] {
+ "belive", "believe" }, new string[] {
+ "blait", "bleat" }, new string[] {
+ "bouyant", "buoyant" }, new string[] {
+ "boygot", "boycott" }, new string[] {
+ "brocolli", "broccoli" }, new string[] {
+ "buder", "butter" }, new string[] {
+ "budr", "butter" }, new string[] {
+ "budter", "butter" }, new string[] {
+ "buracracy", "bureaucracy" }, new string[] {
+ "burracracy", "bureaucracy" }, new string[] {
+ "buton", "button" }, new string[] {
+ "byby", "by by" }, new string[] {
+ "cauler", "caller" }, new string[] {
+ "ceasar", "caesar" }, new string[] {
+ "cemetary", "cemetery" }, new string[] {
+ "changeing", "changing" }, new string[] {
+ "cheet", "cheat" }, new string[] {
+ "cimplicity", "simplicity" }, new string[] {
+ "circumstaces", "circumstances" }, new string[] {
+ "clob", "club" }, new string[] {
+ "coaln", "colon" }, new string[] {
+ "colleaque", "colleague" }, new string[] {
+ "colloquilism", "colloquialism" }, new string[] {
+ "columne", "column" }, new string[] {
+ "comitmment", "commitment" }, new string[] {
+ "comitte", "committee" }, new string[] {
+ "comittmen", "commitment" }, new string[] {
+ "comittmend", "commitment" }, new string[] {
+ "commerciasl", "commercials" }, new string[] {
+ "commited", "committed" }, new string[] {
+ "commitee", "committee" }, new string[] {
+ "companys", "companies" }, new string[] {
+ "comupter", "computer" }, new string[] {
+ "concensus", "consensus" }, new string[] {
+ "confusionism", "confucianism" }, new string[] {
+ "congradulations", "congratulations" }, new string[] {
+ "contunie", "continue" }, new string[] {
+ "cooly", "coolly" }, new string[] {
+ "copping", "coping" }, new string[] {
+ "cosmoplyton", "cosmopolitan" }, new string[] {
+ "crasy", "crazy" }, new string[] {
+ "croke", "croak" }, new string[] {
+ "crucifiction", "crucifixion" }, new string[] {
+ "crusifed", "crucified" }, new string[] {
+ "cumba", "combo" }, new string[] {
+ "custamisation", "customization" }, new string[] {
+ "dag", "dog" }, new string[] {
+ "daly", "daily" }, new string[] {
+ "defence", "defense" }, new string[] {
+ "definate", "definite" }, new string[] {
+ "definately", "definitely" }, new string[] {
+ "dependeble", "dependable" }, new string[] {
+ "descrption", "description" }, new string[] {
+ "descrptn", "description" }, new string[] {
+ "desparate", "desperate" }, new string[] {
+ "dessicate", "desiccate" }, new string[] {
+ "destint", "distant" }, new string[] {
+ "develepment", "developments" }, new string[] {
+ "developement", "development" }, new string[] {
+ "develpond", "development" }, new string[] {
+ "devulge", "divulge" }, new string[] {
+ "dieties", "deities" }, new string[] {
+ "dinasaur", "dinosaur" }, new string[] {
+ "dinasour", "dinosaur" }, new string[] {
+ "discuess", "discuss" }, new string[] {
+ "disect", "dissect" }, new string[] {
+ "disippate", "dissipate" }, new string[] {
+ "disition", "decision" }, new string[] {
+ "dispair", "despair" }, new string[] {
+ "distarct", "distract" }, new string[] {
+ "distart", "distort" }, new string[] {
+ "distroy", "destroy" }, new string[] {
+ "doenload", "download" }, new string[] {
+ "dongle", "dangle" }, new string[] {
+ "doog", "dog" }, new string[] {
+ "dramaticly", "dramatically" }, new string[] {
+ "drunkeness", "drunkenness" }, new string[] {
+ "ductioneery", "dictionary" }, new string[] {
+ "ecstacy", "ecstasy" }, new string[] {
+ "egsistence", "existence" }, new string[] {
+ "eitiology", "etiology" }, new string[] {
+ "elagent", "elegant" }, new string[] {
+ "embarass", "embarrass" }, new string[] {
+ "embarassment", "embarrassment" }, new string[] {
+ "embaress", "embarrass" }, new string[] {
+ "encapsualtion", "encapsulation" }, new string[] {
+ "encyclapidia", "encyclopedia" }, new string[] {
+ "encyclopia", "encyclopedia" }, new string[] {
+ "engins", "engine" }, new string[] {
+ "enhence", "enhance" }, new string[] {
+ "ennuui", "ennui" }, new string[] {
+ "enventions", "inventions" }, new string[] {
+ "envireminakl", "environmental" }, new string[] {
+ "enviroment", "environment" }, new string[] {
+ "epitomy", "epitome" }, new string[] {
+ "equire", "acquire" }, new string[] {
+ "errara", "error" }, new string[] {
+ "evaualtion", "evaluation" }, new string[] {
+ "excede", "exceed" }, new string[] {
+ "excercise", "exercise" }, new string[] {
+ "excpt", "except" }, new string[] {
+ "exhileration", "exhilaration" }, new string[] {
+ "existance", "existence" }, new string[] {
+ "expleyly", "explicitly" }, new string[] {
+ "explity", "explicitly" }, new string[] {
+ "failer", "failure" }, new string[] {
+ "faver", "favor" }, new string[] {
+ "faxe", "fax" }, new string[] {
+ "firey", "fiery" }, new string[] {
+ "fistival", "festival" }, new string[] {
+ "flatterring", "flattering" }, new string[] {
+ "flukse", "flux" }, new string[] {
+ "fone", "phone" }, new string[] {
+ "forsee", "foresee" }, new string[] {
+ "frustartaion", "frustrating" }, new string[] {
+ "funetik", "phonetic" }, new string[] {
+ "gaurd", "guard" }, new string[] {
+ "generly", "generally" }, new string[] {
+ "ghandi", "gandhi" }, new string[] {
+ "gotton", "gotten" }, new string[] {
+ "gracefull", "graceful" }, new string[] {
+ "gradualy", "gradually" }, new string[] {
+ "grammer", "grammar" }, new string[] {
+ "hallo", "hello" }, new string[] {
+ "hapily", "happily" }, new string[] {
+ "harrass", "harass" }, new string[] {
+ "heellp", "help" }, new string[] {
+ "heighth", "height" }, new string[] {
+ "hellp", "help" }, new string[] {
+ "helo", "hello" }, new string[] {
+ "hifin", "hyphen" }, new string[] {
+ "hifine", "hyphen" }, new string[] {
+ "hiphine", "hyphen" }, new string[] {
+ "hippie", "hippy" }, new string[] {
+ "hippopotamous", "hippopotamus" }, new string[] {
+ "hourse", "horse" }, new string[] {
+ "houssing", "housing" }, new string[] {
+ "howaver", "however" }, new string[] {
+ "howver", "however" }, new string[] {
+ "humaniti", "humanity" }, new string[] {
+ "hyfin", "hyphen" }, new string[] {
+ "hystrical", "hysterical" }, new string[] {
+ "illegitament", "illegitimate" }, new string[] {
+ "imbed", "embed" }, new string[] {
+ "imediaetly", "immediately" }, new string[] {
+ "immenant", "immanent" }, new string[] {
+ "implemtes", "implements" }, new string[] {
+ "inadvertant", "inadvertent" }, new string[] {
+ "incase", "in case" }, new string[] {
+ "incedious", "insidious" }, new string[] {
+ "incompleet", "incomplete" }, new string[] {
+ "incomplot", "incomplete" }, new string[] {
+ "inconvenant", "inconvenient" }, new string[] {
+ "inconvience", "inconvenience" }, new string[] {
+ "independant", "independent" }, new string[] {
+ "independenent", "independent" }, new string[] {
+ "indepnends", "independent" }, new string[] {
+ "indepth", "in depth" }, new string[] {
+ "indispensible", "indispensable" }, new string[] {
+ "inefficite", "inefficient" }, new string[] {
+ "infact", "in fact" }, new string[] {
+ "influencial", "influential" }, new string[] {
+ "innoculate", "inoculate" }, new string[] {
+ "insistant", "insistent" }, new string[] {
+ "insistenet", "insistent" }, new string[] {
+ "instulation", "installation" }, new string[] {
+ "intealignt", "intelligent" }, new string[] {
+ "intelegent", "intelligent" }, new string[] {
+ "intelegnent", "intelligent" }, new string[] {
+ "intelejent", "intelligent" }, new string[] {
+ "inteligent", "intelligent" }, new string[] {
+ "intelignt", "intelligent" }, new string[] {
+ "intellagant", "intelligent" }, new string[] {
+ "intellegent", "intelligent" }, new string[] {
+ "intellegint", "intelligent" }, new string[] {
+ "intellgnt", "intelligent" }, new string[] {
+ "intensionality", "intensionally" }, new string[] {
+ "internation", "international" }, new string[] {
+ "interpretate", "interpret" }, new string[] {
+ "interpretter", "interpreter" }, new string[] {
+ "intertes", "interested" }, new string[] {
+ "intertesd", "interested" }, new string[] {
+ "invermeantial", "environmental" }, new string[] {
+ "irresistable", "irresistible" }, new string[] {
+ "irritible", "irritable" }, new string[] {
+ "isreal", "israel" }, new string[] {
+ "johhn", "john" }, new string[] {
+ "kippur", "kipper" }, new string[] {
+ "knawing", "knowing" }, new string[] {
+ "lesure", "leisure" }, new string[] {
+ "liasion", "lesion" }, new string[] {
+ "liason", "liaison" }, new string[] {
+ "likly", "likely" }, new string[] {
+ "liquify", "liquefy" }, new string[] {
+ "lloyer", "layer" }, new string[] {
+ "lossing", "losing" }, new string[] {
+ "luser", "laser" }, new string[] {
+ "maintanence", "maintenance" }, new string[] {
+ "mandelbrot", "Mandelbrot" }, new string[] {
+ "marshall", "marshal" }, new string[] {
+ "maxium", "maximum" }, new string[] {
+ "mic", "mike" }, new string[] {
+ "midia", "media" }, new string[] {
+ "millenium", "millennium" }, new string[] {
+ "miniscule", "minuscule" }, new string[] {
+ "minkay", "monkey" }, new string[] {
+ "mischievious", "mischievous" }, new string[] {
+ "momento", "memento" }, new string[] {
+ "monkay", "monkey" }, new string[] {
+ "mosaik", "mosaic" }, new string[] {
+ "mostlikely", "most likely" }, new string[] {
+ "mousr", "mouser" }, new string[] {
+ "mroe", "more" }, new string[] {
+ "necesary", "necessary" }, new string[] {
+ "necesser", "necessary" }, new string[] {
+ "neice", "niece" }, new string[] {
+ "neighbour", "neighbor" }, new string[] {
+ "nemonic", "pneumonic" }, new string[] {
+ "nevade", "Nevada" }, new string[] {
+ "nickleodeon", "nickelodeon" }, new string[] {
+ "nieve", "naive" }, new string[] {
+ "noone", "no one" }, new string[] {
+ "notin", "not in" }, new string[] {
+ "nozled", "nuzzled" }, new string[] {
+ "objectsion", "objects" }, new string[] {
+ "ocassion", "occasion" }, new string[] {
+ "occuppied", "occupied" }, new string[] {
+ "occurence", "occurrence" }, new string[] {
+ "octagenarian", "octogenarian" }, new string[] {
+ "opposim", "opossum" }, new string[] {
+ "organise", "organize" }, new string[] {
+ "organiz", "organize" }, new string[] {
+ "orientate", "orient" }, new string[] {
+ "oscilascope", "oscilloscope" }, new string[] {
+ "parametic", "parameter" }, new string[] {
+ "permissable", "permissible" }, new string[] {
+ "permmasivie", "permissive" }, new string[] {
+ "persue", "pursue" }, new string[] {
+ "phantasia", "fantasia" }, new string[] {
+ "phenominal", "phenomenal" }, new string[] {
+ "playwrite", "playwright" }, new string[] {
+ "poeses", "poesies" }, new string[] {
+ "poligamy", "polygamy" }, new string[] {
+ "politict", "politic" }, new string[] {
+ "pollice", "police" }, new string[] {
+ "polypropalene", "polypropylene" }, new string[] {
+ "possable", "possible" }, new string[] {
+ "practicle", "practical" }, new string[] {
+ "pragmaticism", "pragmatism" }, new string[] {
+ "preceeding", "preceding" }, new string[] {
+ "precios", "precision" }, new string[] {
+ "preemptory", "peremptory" }, new string[] {
+ "prefixt", "prefixed" }, new string[] {
+ "presbyterian", "Presbyterian" }, new string[] {
+ "presue", "pursue" }, new string[] {
+ "presued", "pursued" }, new string[] {
+ "privielage", "privilege" }, new string[] {
+ "priviledge", "privilege" }, new string[] {
+ "proceedures", "procedures" }, new string[] {
+ "pronensiation", "pronunciation" }, new string[] {
+ "pronounciation", "pronunciation" }, new string[] {
+ "properally", "properly" }, new string[] {
+ "proplematic", "problematic" }, new string[] {
+ "protray", "portray" }, new string[] {
+ "pscolgst", "psychologist" }, new string[] {
+ "psicolagest", "psychologist" }, new string[] {
+ "psycolagest", "psychologist" }, new string[] {
+ "quoz", "quiz" }, new string[] {
+ "radious", "radius" }, new string[] {
+ "reccomend", "recommend" }, new string[] {
+ "reccona", "raccoon" }, new string[] {
+ "recieve", "receive" }, new string[] {
+ "reconise", "recognize" }, new string[] {
+ "rectangeles", "rectangle" }, new string[] {
+ "reoccurring", "recurring" }, new string[] {
+ "repitition", "repetition" }, new string[] {
+ "replasments", "replacement" }, new string[] {
+ "respct", "respect" }, new string[] {
+ "respecally", "respectfully" }, new string[] {
+ "rsx", "RSX" }, new string[] {
+ "runnung", "running" }, new string[] {
+ "sacreligious", "sacrilegious" }, new string[] {
+ "salut", "salute" }, new string[] {
+ "searcheable", "searchable" }, new string[] {
+ "seferal", "several" }, new string[] {
+ "segements", "segments" }, new string[] {
+ "sence", "sense" }, new string[] {
+ "seperate", "separate" }, new string[] {
+ "sicolagest", "psychologist" }, new string[] {
+ "sieze", "seize" }, new string[] {
+ "simplye", "simply" }, new string[] {
+ "sitte", "site" }, new string[] {
+ "slyph", "sylph" }, new string[] {
+ "smil", "smile" }, new string[] {
+ "sometmes", "sometimes" }, new string[] {
+ "soonec", "sonic" }, new string[] {
+ "specificialy", "specifically" }, new string[] {
+ "spel", "spell" }, new string[] {
+ "spoak", "spoke" }, new string[] {
+ "sponsered", "sponsored" }, new string[] {
+ "stering", "steering" }, new string[] {
+ "straightjacket", "straitjacket" }, new string[] {
+ "stumach", "stomach" }, new string[] {
+ "stutent", "student" }, new string[] {
+ "styleguide", "style guide" }, new string[] {
+ "subpena", "subpoena" }, new string[] {
+ "substations", "substitutions" }, new string[] {
+ "supercede", "supersede" }, new string[] {
+ "superfulous", "superfluous" }, new string[] {
+ "susan", "Susan" }, new string[] {
+ "swimwear", "swim wear" }, new string[] {
+ "syncorization", "synchronization" }, new string[] {
+ "taff", "tough" }, new string[] {
+ "taht", "that" }, new string[] {
+ "tattos", "tattoos" }, new string[] {
+ "techniquely", "technically" }, new string[] {
+ "teh", "the" }, new string[] {
+ "tem", "team" }, new string[] {
+ "teo", "two" }, new string[] {
+ "teridical", "theoretical" }, new string[] {
+ "tesst", "test" }, new string[] {
+ "theridically", "theoretical" }, new string[] {
+ "thredically", "theoretically" }, new string[] {
+ "thruout", "throughout" }, new string[] {
+ "ths", "this" }, new string[] {
+ "titalate", "titillate" }, new string[] {
+ "tobagan", "tobaggon" }, new string[] {
+ "tommorrow", "tomorrow" }, new string[] {
+ "tomorow", "tomorrow" }, new string[] {
+ "trubbel", "trouble" }, new string[] {
+ "ttest", "test" }, new string[] {
+ "tyrrany", "tyranny" }, new string[] {
+ "unatourral", "unnatural" }, new string[] {
+ "unaturral", "unnatural" }, new string[] {
+ "unconisitional", "unconstitutional" }, new string[] {
+ "unconscience", "unconscious" }, new string[] {
+ "underladder", "under ladder" }, new string[] {
+ "unentelegible", "unintelligible" }, new string[] {
+ "unfortunently", "unfortunately" }, new string[] {
+ "unnaturral", "unnatural" }, new string[] {
+ "upcast", "up cast" }, new string[] {
+ "verison", "version" }, new string[] {
+ "vinagarette", "vinaigrette" }, new string[] {
+ "volunteerism", "voluntarism" }, new string[] {
+ "volye", "volley" }, new string[] {
+ "waite", "wait" }, new string[] {
+ "wan't", "won't" }, new string[] {
+ "warloord", "warlord" }, new string[] {
+ "whaaat", "what" }, new string[] {
+ "whard", "ward" }, new string[] {
+ "whimp", "wimp" }, new string[] {
+ "wicken", "weaken" }, new string[] {
+ "wierd", "weird" }, new string[] {
+ "wrank", "rank" }, new string[] {
+ "writeen", "righten" }, new string[] {
+ "writting", "writing" }, new string[] {
+ "wundeews", "windows" }, new string[] {
+ "yeild", "yield" },
+ };
+
+ /**
+ * Tests encoding APIs in one place.
+ */
+ private void AssertDoubleMetaphone(string expected, string source)
+ {
+ Assert.AreEqual(expected, this.StringEncoder.Encode(source));
+ //try
+ //{
+ // Assert.AreEqual(expected, this.StringEncoder.Encode((object)source));
+ //}
+ //catch (EncoderException e) {
+ // Assert.Fail("Unexpected expection: " + e);
+ //}
+ Assert.AreEqual(expected, this.StringEncoder.GetDoubleMetaphone(source));
+ Assert.AreEqual(expected, this.StringEncoder.GetDoubleMetaphone(source, false));
+ }
+
+ /**
+ * Tests encoding APIs in one place.
+ */
+ public void AssertDoubleMetaphoneAlt(string expected, string source)
+ {
+ Assert.AreEqual(expected, this.StringEncoder.GetDoubleMetaphone(source, true));
+ }
+
+ public void DoubleMetaphoneEqualTest(string[][] pairs, bool useAlternate)
+ {
+ this.ValidateFixture(pairs);
+ foreach (string[] pair in pairs)
+ {
+ String name0 = pair[0];
+ String name1 = pair[1];
+ String failMsg = "Expected match between " + name0 + " and " + name1 + " (use alternate: " + useAlternate + ")";
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual(name0, name1, useAlternate), failMsg);
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual(name1, name0, useAlternate), failMsg);
+ if (!useAlternate)
+ {
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual(name0, name1), failMsg);
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual(name1, name0), failMsg);
+ }
+ }
+ }
+
+ public void DoubleMetaphoneNotEqualTest(bool alternate)
+ {
+ Assert.False(this.StringEncoder.IsDoubleMetaphoneEqual("Brain", "Band", alternate));
+ Assert.False(this.StringEncoder.IsDoubleMetaphoneEqual("Band", "Brain", alternate));
+
+ if (!alternate)
+ {
+ Assert.False(this.StringEncoder.IsDoubleMetaphoneEqual("Brain", "Band"));
+ Assert.False(this.StringEncoder.IsDoubleMetaphoneEqual("Band", "Brain"));
+ }
+ }
+
+ protected override DoubleMetaphone CreateStringEncoder()
+ {
+ return new DoubleMetaphone();
+ }
+
+ [Test]
+ 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");
+ AssertDoubleMetaphone("MKLL", "McClelland");
+ AssertDoubleMetaphone("SNHS", "san jose");
+ AssertDoubleMetaphone("SNFP", "xenophobia");
+
+ 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");
+ AssertDoubleMetaphoneAlt("MKLL", "McClelland");
+ AssertDoubleMetaphoneAlt("SNHS", "san jose");
+ AssertDoubleMetaphoneAlt("SNFP", "xenophobia");
+ AssertDoubleMetaphoneAlt("FKR", "Fokker");
+ AssertDoubleMetaphoneAlt("AK", "Joqqi");
+ AssertDoubleMetaphoneAlt("HF", "Hovvi");
+ AssertDoubleMetaphoneAlt("XRN", "Czerny");
+ }
+
+ [Test]
+ public void TestEmpty()
+ {
+ Assert.AreEqual(null, this.StringEncoder.GetDoubleMetaphone(null));
+ Assert.AreEqual(null, this.StringEncoder.GetDoubleMetaphone(""));
+ Assert.AreEqual(null, this.StringEncoder.GetDoubleMetaphone(" "));
+ Assert.AreEqual(null, this.StringEncoder.GetDoubleMetaphone("\t\n\r "));
+ }
+
+ /**
+ * Test setting maximum length
+ */
+ [Test]
+ public void TestSetMaxCodeLength()
+ {
+ String value = "jumped";
+
+ DoubleMetaphone doubleMetaphone = new DoubleMetaphone();
+
+ // Sanity check of default settings
+ Assert.AreEqual(4, doubleMetaphone.MaxCodeLen, "Default Max Code Length");
+ Assert.AreEqual("JMPT", doubleMetaphone.GetDoubleMetaphone(value, false), "Default Primary");
+ Assert.AreEqual("AMPT", doubleMetaphone.GetDoubleMetaphone(value, true), "Default Alternate");
+
+ // Check setting Max Code Length
+ doubleMetaphone.MaxCodeLen = (3);
+ Assert.AreEqual(3, doubleMetaphone.MaxCodeLen, "Set Max Code Length");
+ Assert.AreEqual("JMP", doubleMetaphone.GetDoubleMetaphone(value, false), "Max=3 Primary");
+ Assert.AreEqual("AMP", doubleMetaphone.GetDoubleMetaphone(value, true), "Max=3 Alternate");
+ }
+
+ [Test]
+ public void TestIsDoubleMetaphoneEqualBasic()
+ {
+ string[][]
+ testFixture = { new string[] { "Case", "case" }, new string[] {
+ "CASE", "Case" }, new string[]{
+ "caSe", "cAsE" }, new string[]{
+ "cookie", "quick" }, new string[]{
+ "quick", "cookie" }, new string[]{
+ "Brian", "Bryan" }, new string[]{
+ "Auto", "Otto" }, new string[]{
+ "Steven", "Stefan" }, new string[]{
+ "Philipowitz", "Filipowicz" }
+ };
+ DoubleMetaphoneEqualTest(testFixture, false);
+ DoubleMetaphoneEqualTest(testFixture, true);
+ }
+
+ /**
+ * Example in the original article but failures in this Java impl:
+ */
+ [Test]
+ public void TestIsDoubleMetaphoneEqualExtended1()
+ {
+ // String[][] testFixture = new String[][] { { "Smith", "Schmidt" }
+ // };
+ // doubleMetaphoneEqualTest(testFixture, false);
+ // doubleMetaphoneEqualTest(testFixture, true);
+ }
+
+ [Test]
+ 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 array.
+ */
+ [Test]
+ public void TestIsDoubleMetaphoneEqualExtended3()
+ {
+ this.ValidateFixture(FIXTURE);
+ StringBuilder failures = new StringBuilder();
+ StringBuilder matches = new StringBuilder();
+ String cr = Environment.NewLine;
+ 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];
+ bool match1 = this.StringEncoder.IsDoubleMetaphoneEqual(name0, name1, false);
+ bool match2 = this.StringEncoder.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);
+ }
+ }
+ matches.Append("};");
+ // Turn on to print a new MATCH array
+ //System.out.println(matches.toString());
+ if (failCount > 0)
+ {
+ // Turn on to see which pairs do NOT match.
+ // String msg = failures.toString();
+ //fail(failCount + " failures out of " + FIXTURE.length + ". The
+ // following could be made to match: " + cr + msg);
+ }
+ }
+
+ [Test]
+ public void TestIsDoubleMetaphoneEqualWithMATCHES()
+ {
+ this.ValidateFixture(MATCHES);
+ for (int i = 0; i < MATCHES.Length; i++)
+ {
+ String name0 = MATCHES[i][0];
+ String name1 = MATCHES[i][1];
+ bool match1 = this.StringEncoder.IsDoubleMetaphoneEqual(name0, name1, false);
+ bool match2 = this.StringEncoder.IsDoubleMetaphoneEqual(name0, name1, true);
+ if (match1 == false && match2 == false)
+ {
+ Assert.Fail("Expected match [" + i + "] " + name0 + " and " + name1);
+ }
+ }
+ }
+
+ [Test]
+ public void TestIsDoubleMetaphoneNotEqual()
+ {
+ DoubleMetaphoneNotEqualTest(false);
+ DoubleMetaphoneNotEqualTest(true);
+ }
+
+ [Test]
+ public void TestCCedilla()
+ {
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual("\u00e7", "S")); // c-cedilla
+ }
+
+ [Test]
+ public void TestNTilde()
+ {
+ Assert.True(this.StringEncoder.IsDoubleMetaphoneEqual("\u00f1", "N")); // n-tilde
+ }
+
+ public void ValidateFixture(string[][] pairs)
+ {
+ if (pairs.Length == 0)
+ {
+ Assert.Fail("Test fixture is empty");
+ }
+ for (int i = 0; i < pairs.Length; i++)
+ {
+ if (pairs[i].Length != 2)
+ {
+ Assert.Fail("Error in test fixture in the data array at index " + i);
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/1ee3a9cc/src/Lucene.Net.Tests.Analysis.Phonetic/Language/MatchRatingApproachEncoderTest.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Analysis.Phonetic/Language/MatchRatingApproachEncoderTest.cs b/src/Lucene.Net.Tests.Analysis.Phonetic/Language/MatchRatingApproachEncoderTest.cs
new file mode 100644
index 0000000..1c5cb1a
--- /dev/null
+++ b/src/Lucene.Net.Tests.Analysis.Phonetic/Language/MatchRatingApproachEncoderTest.cs
@@ -0,0 +1,609 @@
+using NUnit.Framework;
+
+namespace Lucene.Net.Analysis.Phonetic.Language
+{
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ /// <summary>
+ /// Series of tests for the Match Rating Approach algorithm.
+ /// <para/>
+ /// General naming nomenclature for the test is of the form:
+ /// GeneralMetadataOnTheTestArea_ActualTestValues_ExpectedResult
+ /// <para/>
+ /// An unusual value is indicated by the term "corner case"
+ /// </summary>
+ public class MatchRatingApproachEncoderTest : StringEncoderAbstractTest<MatchRatingApproachEncoder>
+ {
+ // ********** BEGIN REGION - TEST SUPPORT METHODS
+
+ [Test]
+ public void TestAccentRemoval_AllLower_SuccessfullyRemoved()
+ {
+ Assert.AreEqual("aeiou", this.StringEncoder.RemoveAccents("áéíóú"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_WithSpaces_SuccessfullyRemovedAndSpacesInvariant()
+ {
+ Assert.AreEqual("ae io u", this.StringEncoder.RemoveAccents("áé íó ú"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_UpperandLower_SuccessfullyRemovedAndCaseInvariant()
+ {
+ Assert.AreEqual("AeiOuu", this.StringEncoder.RemoveAccents("ÁeíÓuu"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_MixedWithUnusualChars_SuccessfullyRemovedAndUnusualcharactersInvariant()
+ {
+ Assert.AreEqual("A-e'i.,o&u", this.StringEncoder.RemoveAccents("Á-e'í.,ó&ú"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_GerSpanFrenMix_SuccessfullyRemoved()
+ {
+ Assert.AreEqual("aeoußAEOUnNa", this.StringEncoder.RemoveAccents("äëöüßÄËÖÜñÑà"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_ComprehensiveAccentMix_AllSuccessfullyRemoved()
+ {
+ Assert.AreEqual("E,E,E,E,U,U,I,I,A,A,O,e,e,e,e,u,u,i,i,a,a,o,c",
+ this.StringEncoder.RemoveAccents("È,É,Ê,Ë,Û,Ù,Ï,Î,À,Â,Ô,è,é,ê,ë,û,ù,ï,î,à,â,ô,ç"));
+ }
+
+ [Test]
+ public void TestAccentRemovalNormalString_NoChange()
+ {
+ Assert.AreEqual("Colorless green ideas sleep furiously", this.StringEncoder.RemoveAccents("Colorless green ideas sleep furiously"));
+ }
+
+ [Test]
+ public void TestAccentRemoval_NINO_NoChange()
+ {
+ Assert.AreEqual("", this.StringEncoder.RemoveAccents(""));
+ }
+
+ [Test]
+ public void TestAccentRemoval_NullValue_ReturnNullSuccessfully()
+ {
+ Assert.AreEqual(null, this.StringEncoder.RemoveAccents(null));
+ }
+
+ [Test]
+ public void TestRemoveSingleDoubleConsonants_BUBLE_RemovedSuccessfully()
+ {
+ Assert.AreEqual("BUBLE", this.StringEncoder.RemoveDoubleConsonants("BUBBLE"));
+ }
+
+ [Test]
+ public void TestRemoveDoubleConsonants_MISSISSIPPI_RemovedSuccessfully()
+ {
+ Assert.AreEqual("MISISIPI", this.StringEncoder.RemoveDoubleConsonants("MISSISSIPPI"));
+ }
+
+ [Test]
+ public void TestRemoveDoubleDoubleVowel_BEETLE_NotRemoved()
+ {
+ Assert.AreEqual("BEETLE", this.StringEncoder.RemoveDoubleConsonants("BEETLE"));
+ }
+
+ [Test]
+ public void TestIsVowel_CapitalA_ReturnsTrue()
+ {
+ Assert.True(this.StringEncoder.IsVowel("A"));
+ }
+
+ [Test]
+ public void TestIsVowel_SmallD_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsVowel("d"));
+ }
+
+ [Test]
+ public void TestRemoveVowel_ALESSANDRA_Returns_ALSSNDR()
+ {
+ Assert.AreEqual("ALSSNDR", this.StringEncoder.RemoveVowels("ALESSANDRA"));
+ }
+
+ [Test]
+ public void TestRemoveVowel__AIDAN_Returns_ADN()
+ {
+ Assert.AreEqual("ADN", this.StringEncoder.RemoveVowels("AIDAN"));
+ }
+
+ [Test]
+ public void TestRemoveVowel__DECLAN_Returns_DCLN()
+ {
+ Assert.AreEqual("DCLN", this.StringEncoder.RemoveVowels("DECLAN"));
+ }
+
+ [Test]
+ public void TestGetFirstLast3__ALEXANDER_Returns_Aleder()
+ {
+ Assert.AreEqual("Aleder", this.StringEncoder.GetFirst3Last3("Alexzander"));
+ }
+
+ [Test]
+ public void TestGetFirstLast3_PETE_Returns_PETE()
+ {
+ Assert.AreEqual("PETE", this.StringEncoder.GetFirst3Last3("PETE"));
+ }
+
+ [Test]
+ public void TestleftTorightThenRightToLeft_ALEXANDER_ALEXANDRA_Returns4()
+ {
+ Assert.AreEqual(4, this.StringEncoder.LeftToRightThenRightToLeftProcessing("ALEXANDER", "ALEXANDRA"));
+ }
+
+ [Test]
+ public void TestleftTorightThenRightToLeft_EINSTEIN_MICHAELA_Returns0()
+ {
+ Assert.AreEqual(0, this.StringEncoder.LeftToRightThenRightToLeftProcessing("EINSTEIN", "MICHAELA"));
+ }
+
+ [Test]
+ public void TestGetMinRating_7_Return4_Successfully()
+ {
+ Assert.AreEqual(4, this.StringEncoder.GetMinRating(7));
+ }
+
+ [Test]
+ public void TestGetMinRating_1_Returns5_Successfully()
+ {
+ Assert.AreEqual(5, this.StringEncoder.GetMinRating(1));
+ }
+
+ [Test]
+ public void TestGetMinRating_2_Returns5_Successfully()
+ {
+ Assert.AreEqual(5, this.StringEncoder.GetMinRating(2));
+ }
+
+ [Test]
+ public void TestGetMinRating_5_Returns4_Successfully()
+ {
+ Assert.AreEqual(4, this.StringEncoder.GetMinRating(5));
+ }
+
+ [Test]
+ public void TestGetMinRating_5_Returns4_Successfully2()
+ {
+ Assert.AreEqual(4, this.StringEncoder.GetMinRating(5));
+ }
+
+ [Test]
+ public void TestGetMinRating_6_Returns4_Successfully()
+ {
+ Assert.AreEqual(4, this.StringEncoder.GetMinRating(6));
+ }
+
+ [Test]
+ public void TestGetMinRating_7_Returns4_Successfully()
+ {
+ Assert.AreEqual(4, this.StringEncoder.GetMinRating(7));
+ }
+
+ [Test]
+ public void TestGetMinRating_8_Returns3_Successfully()
+ {
+ Assert.AreEqual(3, this.StringEncoder.GetMinRating(8));
+ }
+
+ [Test]
+ public void TestGetMinRating_10_Returns3_Successfully()
+ {
+ Assert.AreEqual(3, this.StringEncoder.GetMinRating(10));
+ }
+
+ [Test]
+ public void TestGetMinRating_11_Returns_3_Successfully()
+ {
+ Assert.AreEqual(3, this.StringEncoder.GetMinRating(11));
+ }
+
+ [Test]
+ public void TestGetMinRating_13_Returns_1_Successfully()
+ {
+ Assert.AreEqual(1, this.StringEncoder.GetMinRating(13));
+ }
+
+ [Test]
+ public void TestCleanName_SuccessfullyClean()
+ {
+ Assert.AreEqual("THISISATEST", this.StringEncoder.CleanName("This-ís a t.,es &t"));
+ }
+
+ [Test]
+ public void TestIsVowel_SingleVowel_ReturnsTrue()
+ {
+ Assert.True(this.StringEncoder.IsVowel(("I")));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_SecondNameNothing_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("test", ""));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_FirstNameNothing_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("", "test"));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_SecondNameJustSpace_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("test", " "));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_FirstNameJustSpace_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals(" ", "test"));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_SecondNameNull_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("test", null));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_FirstNameNull_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals(null, "test"));
+ }
+
+ [Test]
+ public void TestIsEncodeEquals_CornerCase_FirstNameJust1Letter_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("t", "test"));
+ }
+
+ [Test]
+ public void TestIsEncodeEqualsSecondNameJust1Letter_ReturnsFalse()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("test", "t"));
+ }
+
+ // ***** END REGION - TEST SUPPORT METHODS
+
+ // ***** BEGIN REGION - TEST GET MRA ENCODING
+
+ [Test]
+ public void TestGetEncoding_HARPER_HRPR()
+ {
+ Assert.AreEqual("HRPR", this.StringEncoder.Encode("HARPER"));
+ }
+
+ [Test]
+ public void TestGetEncoding_SMITH_to_SMTH()
+ {
+ Assert.AreEqual("SMTH", this.StringEncoder.Encode("Smith"));
+ }
+
+ [Test]
+ public void TestGetEncoding_SMYTH_to_SMYTH()
+ {
+ Assert.AreEqual("SMYTH", this.StringEncoder.Encode("Smyth"));
+ }
+
+ [Test]
+ public void TestGetEncoding_Space_to_Nothing()
+ {
+ Assert.AreEqual("", this.StringEncoder.Encode(" "));
+ }
+
+ [Test]
+ public void TestGetEncoding_NoSpace_to_Nothing()
+ {
+ Assert.AreEqual("", this.StringEncoder.Encode(""));
+ }
+
+ [Test]
+ public void TestGetEncoding_Null_to_Nothing()
+ {
+ Assert.AreEqual("", this.StringEncoder.Encode(null));
+ }
+
+ [Test]
+ public void TestGetEncoding_One_Letter_to_Nothing()
+ {
+ Assert.AreEqual("", this.StringEncoder.Encode("E"));
+ }
+
+ [Test]
+ public void TestCompareNameNullSpace_ReturnsFalseSuccessfully()
+ {
+ Assert.False(StringEncoder.IsEncodeEquals(null, " "));
+ }
+
+ [Test]
+ public void TestCompareNameSameNames_ReturnsFalseSuccessfully()
+ {
+ Assert.True(StringEncoder.IsEncodeEquals("John", "John"));
+ }
+
+ // ***** END REGION - TEST GET MRA ENCODING
+
+ // ***** BEGIN REGION - TEST GET MRA COMPARISONS
+
+ [Test]
+ public void TestCompare_SMITH_SMYTH_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("smith", "smyth"));
+ }
+
+ [Test]
+ public void TestCompare_BURNS_BOURNE_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Burns", "Bourne"));
+ }
+
+ [Test]
+ public void TestCompare_ShortNames_AL_ED_WorksButNoMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Al", "Ed"));
+ }
+
+ [Test]
+ public void TestCompare_CATHERINE_KATHRYN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Catherine", "Kathryn"));
+ }
+
+ [Test]
+ public void TestCompare_BRIAN_BRYAN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Brian", "Bryan"));
+ }
+
+ [Test]
+ public void TestCompare_SEAN_SHAUN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Séan", "Shaun"));
+ }
+
+ [Test]
+ public void TestCompare_COLM_COLIN_WithAccentsAndSymbolsAndSpaces_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Cólm. ", "C-olín"));
+ }
+
+ [Test]
+ public void TestCompare_STEPHEN_STEVEN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Stephen", "Steven"));
+ }
+
+ [Test]
+ public void TestCompare_STEVEN_STEFAN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Steven", "Stefan"));
+ }
+
+ [Test]
+ public void TestCompare_STEPHEN_STEFAN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Stephen", "Stefan"));
+ }
+
+ [Test]
+ public void TestCompare_SAM_SAMUEL_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Sam", "Samuel"));
+ }
+
+ [Test]
+ public void TestCompare_MICKY_MICHAEL_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Micky", "Michael"));
+ }
+
+ [Test]
+ public void TestCompare_OONA_OONAGH_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Oona", "Oonagh"));
+ }
+
+ [Test]
+ public void TestCompare_SOPHIE_SOFIA_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Sophie", "Sofia"));
+ }
+
+ [Test]
+ public void TestCompare_FRANCISZEK_FRANCES_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Franciszek", "Frances"));
+ }
+
+ [Test]
+ public void TestCompare_TOMASZ_TOM_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Tomasz", "tom"));
+ }
+
+ [Test]
+ public void TestCompare_SmallInput_CARK_Kl_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Kl", "Karl"));
+ }
+
+ [Test]
+ public void TestCompareNameToSingleLetter_KARL_C_DoesNotMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Karl", "C"));
+ }
+
+ [Test]
+ public void TestCompare_ZACH_ZAKARIA_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Zach", "Zacharia"));
+ }
+
+ [Test]
+ public void TestCompare_KARL_ALESSANDRO_DoesNotMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Karl", "Alessandro"));
+ }
+
+ [Test]
+ public void TestCompare_Forenames_UNA_OONAGH_ShouldSuccessfullyMatchButDoesNot()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Úna", "Oonagh")); // Disappointing
+ }
+
+ // ***** Begin Region - Test Get Encoding - Surnames
+
+ [Test]
+ public void TestCompare_Surname_OSULLIVAN_OSUILLEABHAIN_SuccessfulMatch()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("O'Sullivan", "Ó ' Súilleabháin"));
+ }
+
+ [Test]
+ public void TestCompare_LongSurnames_MORIARTY_OMUIRCHEARTAIGH_DoesNotSuccessfulMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Moriarty", "OMuircheartaigh"));
+ }
+
+ [Test]
+ public void TestCompare_LongSurnames_OMUIRCHEARTAIGH_OMIREADHAIGH_SuccessfulMatch()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("o'muireadhaigh", "Ó 'Muircheartaigh "));
+ }
+
+ [Test]
+ public void TestCompare_Surname_COOPERFLYNN_SUPERLYN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Cooper-Flynn", "Super-Lyn"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_HAILEY_HALLEY_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Hailey", "Halley"));
+ }
+
+ // **** BEGIN YIDDISH/SLAVIC SECTION ****
+
+ [Test]
+ public void TestCompare_Surname_AUERBACH_UHRBACH_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Auerbach", "Uhrbach"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_MOSKOWITZ_MOSKOVITZ_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Moskowitz", "Moskovitz"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_LIPSHITZ_LIPPSZYC_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("LIPSHITZ", "LIPPSZYC"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_LEWINSKY_LEVINSKI_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("LEWINSKY", "LEVINSKI"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_SZLAMAWICZ_SHLAMOVITZ_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("SZLAMAWICZ", "SHLAMOVITZ"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_ROSOCHOWACIEC_ROSOKHOVATSETS_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("R o s o ch o w a c ie c", " R o s o k ho v a ts e ts"));
+ }
+
+ [Test]
+ public void TestCompare_Surname_PRZEMYSL_PSHEMESHIL_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals(" P rz e m y s l", " P sh e m e sh i l"));
+ }
+
+ // **** END YIDDISH/SLAVIC SECTION ****
+
+ [Test]
+ public void TestCompare_PETERSON_PETERS_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Peterson", "Peters"));
+ }
+
+ [Test]
+ public void TestCompare_MCGOWAN_MCGEOGHEGAN_SuccessfullyMatched()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("McGowan", "Mc Geoghegan"));
+ }
+
+ [Test]
+ public void TestCompare_SurnamesCornerCase_MURPHY_Space_NoMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Murphy", " "));
+ }
+
+ [Test]
+ public void TestCompare_SurnamesCornerCase_MURPHY_NoSpace_NoMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Murphy", ""));
+ }
+
+ [Test]
+ public void TestCompare_SurnameCornerCase_Nulls_NoMatch()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals(null, null));
+ }
+
+ [Test]
+ public void TestCompare_Surnames_MURPHY_LYNCH_NoMatchExpected()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Murphy", "Lynch"));
+ }
+
+ [Test]
+ public void TestCompare_Forenames_SEAN_JOHN_MatchExpected()
+ {
+ Assert.True(this.StringEncoder.IsEncodeEquals("Sean", "John"));
+ }
+
+ [Test]
+ public void TestCompare_Forenames_SEAN_PETE_NoMatchExpected()
+ {
+ Assert.False(this.StringEncoder.IsEncodeEquals("Sean", "Pete"));
+ }
+
+ protected override MatchRatingApproachEncoder CreateStringEncoder()
+ {
+ return new MatchRatingApproachEncoder();
+ }
+
+ // ***** END REGION - TEST GET MRA COMPARISONS
+
+ }
+}