summaryrefslogblamecommitdiff
path: root/core/src/test/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithmSpec.scala
blob: 5b0f46dd2f66192b224508dc90e48f67551ad48b (plain) (tree)
1
2
3
4
5
6
7
8
9
                                             
 



                                                                                     
                 

                                                                                    
                 





















































































































































































                                                                                                                                       

                 
 
package com.rockymadden.stringmetric.phonetic

object RefinedNysiisAlgorithmSpec extends org.specs2.mutable.SpecificationWithJUnit {
	"RefinedNysiisAlgorithm compute()" should {
		"return None with empty argument" in {
			RefinedNysiisAlgorithm.compute("").isDefined must beFalse
		}
		"return None with non-phonetic argument" in {
			RefinedNysiisAlgorithm.compute("123").isDefined must beFalse
		}
		"return Some with phonetic argument" in {
			// a
			RefinedNysiisAlgorithm.compute("a").get must beEqualTo("a")
			RefinedNysiisAlgorithm.compute("aa").get must beEqualTo("a")

			// b
			RefinedNysiisAlgorithm.compute("b").get must beEqualTo("b")
			RefinedNysiisAlgorithm.compute("bb").get must beEqualTo("b")

			// c
			RefinedNysiisAlgorithm.compute("c").get must beEqualTo("c")
			RefinedNysiisAlgorithm.compute("cc").get must beEqualTo("c")

			// d
			RefinedNysiisAlgorithm.compute("d").get must beEqualTo("d")
			RefinedNysiisAlgorithm.compute("dd").get must beEqualTo("d")

			// e
			RefinedNysiisAlgorithm.compute("e").get must beEqualTo("e")
			RefinedNysiisAlgorithm.compute("ee").get must beEqualTo("y")

			// f
			RefinedNysiisAlgorithm.compute("f").get must beEqualTo("f")
			RefinedNysiisAlgorithm.compute("ff").get must beEqualTo("f")

			// g
			RefinedNysiisAlgorithm.compute("g").get must beEqualTo("g")
			RefinedNysiisAlgorithm.compute("gg").get must beEqualTo("g")

			// h
			RefinedNysiisAlgorithm.compute("h").get must beEqualTo("h")
			RefinedNysiisAlgorithm.compute("hh").get must beEqualTo("h")

			// i
			RefinedNysiisAlgorithm.compute("i").get must beEqualTo("i")
			RefinedNysiisAlgorithm.compute("ii").get must beEqualTo("i")

			// j
			RefinedNysiisAlgorithm.compute("j").get must beEqualTo("j")
			RefinedNysiisAlgorithm.compute("jj").get must beEqualTo("j")

			// k
			RefinedNysiisAlgorithm.compute("k").get must beEqualTo("c")
			RefinedNysiisAlgorithm.compute("kk").get must beEqualTo("c")

			// l
			RefinedNysiisAlgorithm.compute("l").get must beEqualTo("l")
			RefinedNysiisAlgorithm.compute("ll").get must beEqualTo("l")

			// m
			RefinedNysiisAlgorithm.compute("m").get must beEqualTo("m")
			RefinedNysiisAlgorithm.compute("mm").get must beEqualTo("mn")

			// n
			RefinedNysiisAlgorithm.compute("n").get must beEqualTo("n")
			RefinedNysiisAlgorithm.compute("nn").get must beEqualTo("n")

			// o
			RefinedNysiisAlgorithm.compute("o").get must beEqualTo("o")
			RefinedNysiisAlgorithm.compute("oo").get must beEqualTo("o")

			// p
			RefinedNysiisAlgorithm.compute("p").get must beEqualTo("p")
			RefinedNysiisAlgorithm.compute("pp").get must beEqualTo("p")

			// q
			RefinedNysiisAlgorithm.compute("q").get must beEqualTo("q")
			RefinedNysiisAlgorithm.compute("qq").get must beEqualTo("qg")

			// r
			RefinedNysiisAlgorithm.compute("r").get must beEqualTo("r")
			RefinedNysiisAlgorithm.compute("rr").get must beEqualTo("r")

			// s
			RefinedNysiisAlgorithm.compute("s").get must beEqualTo("s")
			RefinedNysiisAlgorithm.compute("ss").get must beEqualTo("s")

			// t
			RefinedNysiisAlgorithm.compute("t").get must beEqualTo("t")
			RefinedNysiisAlgorithm.compute("tt").get must beEqualTo("t")

			// u
			RefinedNysiisAlgorithm.compute("u").get must beEqualTo("u")
			RefinedNysiisAlgorithm.compute("uu").get must beEqualTo("u")

			// v
			RefinedNysiisAlgorithm.compute("v").get must beEqualTo("v")
			RefinedNysiisAlgorithm.compute("vv").get must beEqualTo("v")

			// w
			RefinedNysiisAlgorithm.compute("w").get must beEqualTo("w")
			RefinedNysiisAlgorithm.compute("ww").get must beEqualTo("w")

			// x
			RefinedNysiisAlgorithm.compute("x").get must beEqualTo("x")
			RefinedNysiisAlgorithm.compute("xx").get must beEqualTo("x")

			// y
			RefinedNysiisAlgorithm.compute("y").get must beEqualTo("y")
			RefinedNysiisAlgorithm.compute("yy").get must beEqualTo("y")
			RefinedNysiisAlgorithm.compute("ybyb").get must beEqualTo("ybab")

			// z
			RefinedNysiisAlgorithm.compute("z").get must beEqualTo("z")
			RefinedNysiisAlgorithm.compute("zz").get must beEqualTo("z")

			// Head cases.
			RefinedNysiisAlgorithm.compute("mac").get must beEqualTo("mc")
			RefinedNysiisAlgorithm.compute("pf").get must beEqualTo("f")

			// Last cases.
			RefinedNysiisAlgorithm.compute("ix").get must beEqualTo("ic")
			RefinedNysiisAlgorithm.compute("ex").get must beEqualTo("ec")
			RefinedNysiisAlgorithm.compute("ye").get must beEqualTo("y")
			RefinedNysiisAlgorithm.compute("ee").get must beEqualTo("y")
			RefinedNysiisAlgorithm.compute("ie").get must beEqualTo("y")
			RefinedNysiisAlgorithm.compute("dt").get must beEqualTo("d")
			RefinedNysiisAlgorithm.compute("rt").get must beEqualTo("d")
			RefinedNysiisAlgorithm.compute("rd").get must beEqualTo("d")
			RefinedNysiisAlgorithm.compute("nt").get must beEqualTo("d")
			RefinedNysiisAlgorithm.compute("nd").get must beEqualTo("d")

			// Core cases.
			RefinedNysiisAlgorithm.compute("bevb").get must beEqualTo("bafb")
			RefinedNysiisAlgorithm.compute("bghtb").get must beEqualTo("bgtb")
			RefinedNysiisAlgorithm.compute("bdgb").get must beEqualTo("bgb")
			RefinedNysiisAlgorithm.compute("bphb").get must beEqualTo("bfb")
			RefinedNysiisAlgorithm.compute("bknb").get must beEqualTo("bnb")
			RefinedNysiisAlgorithm.compute("bshb").get must beEqualTo("bsb")
			RefinedNysiisAlgorithm.compute("bschb").get must beEqualTo("bsb")
			RefinedNysiisAlgorithm.compute("bywb").get must beEqualTo("bab")
			RefinedNysiisAlgorithm.compute("byw").get must beEqualTo("by")
			RefinedNysiisAlgorithm.compute("ywb").get must beEqualTo("yb")
			RefinedNysiisAlgorithm.compute("bwrb").get must beEqualTo("brb")

			// Transcode cases.
			RefinedNysiisAlgorithm.compute("bay").get must beEqualTo("by")

			// Miscellaneous.
			RefinedNysiisAlgorithm.compute("macdonald").get must beEqualTo("mcdanald")
			RefinedNysiisAlgorithm.compute("phone").get must beEqualTo("fan")
			RefinedNysiisAlgorithm.compute("aggregate").get must beEqualTo("agragat")
			RefinedNysiisAlgorithm.compute("accuracy").get must beEqualTo("acaracy")
			RefinedNysiisAlgorithm.compute("encyclopedia").get must beEqualTo("encaclapad")
			RefinedNysiisAlgorithm.compute("honorificabilitudinitatibus").get must beEqualTo("hanarafacabalatadanatatab")
			RefinedNysiisAlgorithm.compute("antidisestablishmentarianism").get must beEqualTo("antadasastablasnantaranasn")

			// Dropby.
			RefinedNysiisAlgorithm.compute("edwards").get must beEqualTo("edwad")
			RefinedNysiisAlgorithm.compute("parez").get must beEqualTo("par")
			RefinedNysiisAlgorithm.compute("macintosh").get must beEqualTo("mcantas")
			RefinedNysiisAlgorithm.compute("phillipson").get must beEqualTo("falapsan")
			RefinedNysiisAlgorithm.compute("haddix").get must beEqualTo("hadac")
			RefinedNysiisAlgorithm.compute("essex").get must beEqualTo("esac")
			RefinedNysiisAlgorithm.compute("moye").get must beEqualTo("my")
			RefinedNysiisAlgorithm.compute("mckee").get must beEqualTo("mcy")
			RefinedNysiisAlgorithm.compute("mackie").get must beEqualTo("mcy")
			RefinedNysiisAlgorithm.compute("heitschmidt").get must beEqualTo("hatsnad")
			RefinedNysiisAlgorithm.compute("bart").get must beEqualTo("bad")
			RefinedNysiisAlgorithm.compute("hurd").get must beEqualTo("had")
			RefinedNysiisAlgorithm.compute("hunt").get must beEqualTo("had")
			RefinedNysiisAlgorithm.compute("westerlund").get must beEqualTo("wastarlad")
			RefinedNysiisAlgorithm.compute("evers").get must beEqualTo("evar")
			RefinedNysiisAlgorithm.compute("devito").get must beEqualTo("dafat")
			RefinedNysiisAlgorithm.compute("rawson").get must beEqualTo("rasan")
			RefinedNysiisAlgorithm.compute("shoulders").get must beEqualTo("saldar")
			RefinedNysiisAlgorithm.compute("leighton").get must beEqualTo("lagtan")
			RefinedNysiisAlgorithm.compute("wooldridge").get must beEqualTo("waldrag")
			RefinedNysiisAlgorithm.compute("oliphant").get must beEqualTo("olafad")
			RefinedNysiisAlgorithm.compute("hatchett").get must beEqualTo("hatcat")
			RefinedNysiisAlgorithm.compute("mcknight").get must beEqualTo("mcnagt")
			RefinedNysiisAlgorithm.compute("rickert").get must beEqualTo("racad")
			RefinedNysiisAlgorithm.compute("bowman").get must beEqualTo("banan")
			RefinedNysiisAlgorithm.compute("vasquez").get must beEqualTo("vasg")
			RefinedNysiisAlgorithm.compute("bashaw").get must beEqualTo("bas")
			RefinedNysiisAlgorithm.compute("schoenhoeft").get must beEqualTo("sanaft") // dropby wrongly says scanaft
			RefinedNysiisAlgorithm.compute("heywood").get must beEqualTo("had")
			RefinedNysiisAlgorithm.compute("hayman").get must beEqualTo("hanan")
			RefinedNysiisAlgorithm.compute("seawright").get must beEqualTo("saragt")
			RefinedNysiisAlgorithm.compute("kratzer").get must beEqualTo("cratsar")
			RefinedNysiisAlgorithm.compute("canaday").get must beEqualTo("canady")
			RefinedNysiisAlgorithm.compute("crepeau").get must beEqualTo("crap")
		}
	}
}