Module:Hrkt-translit/testcases

From Linguifex
Jump to navigation Jump to search

Documentation for this module may be created at Module:Hrkt-translit/testcases/doc

local m = require("Module:Hrkt-translit")
local t = require("Module:UnitTests")

local options
local function e(k, r, lang)
	return t:equals(k, m.tr(k, lang or "ja", nil, options), r)
end

function t:test_transliterate_kana()
	options = nil
	e("あ", "a")
	e("あぁ", "ā")
	e("ああ", "ā")
	e("あー", "ā")
	e("い", "i")
	e("いぃ", "yi")
	e("いい", "ī")
	e("いー", "ī")
	e("いぇ", "ye")
	e("う", "u")
	e("ゔ", "vu")
	e("うぁ", "wa")
	e("ゔぁ", "va")
	e("うぃ", "wi")
	e("ゔぃ", "vi")
	e("うぃぇ", "wye")
	e("ゔぃぇ", "vye")
	e("うぅ", "wu")
	e("うう", "ū")
	e("うー", "ū")
	e("うぇ", "we")
	e("ゔぇ", "ve")
	e("うぉ", "wo")
	e("ゔぉ", "vo")
	e("うゃ", "wya")
	e("ゔゃ", "vya")
	e("うゅ", "wyu")
	e("ゔゅ", "vyu")
	e("うょ", "wyo")
	e("ゔょ", "vyo")
	e("え", "e")
	e("えぃ", "ei")
	e("えい", "ei")
	e("えぇ", "ē")
	e("ええ", "ē")
	e("えー", "ē")
	e("お", "o")
	e("おぅ", "ou")
	e("おう", "ō")
	e("おぉ", "ō")
	e("おお", "ō")
	e("おー", "ō")
	e("か", "ka")
	e("が", "ga")
	e("かぁ", "kā")
	e("かあ", "kā")
	e("かー", "kā")
	e("がぁ", "gā")
	e("があ", "gā")
	e("がー", "gā")
	e("き", "ki")
	e("ぎ", "gi")
	e("きぃ", "kyi")
	e("きい", "kī")
	e("きー", "kī")
	e("ぎぃ", "gyi")
	e("ぎい", "gī")
	e("ぎー", "gī")
	e("きゃ", "kya")
	e("ぎゃ", "gya")
	e("きゃぁ", "kyā")
	e("きゃー", "kyā")
	e("きゃあ", "kyā")
	e("ぎゃぁ", "gyā")
	e("ぎゃー", "gyā")
	e("ぎゃあ", "gyā")
	e("きゅ", "kyu")
	e("ぎゅ", "gyu")
	e("きゅぅ", "kyū")
	e("きゅー", "kyū")
	e("きゅう", "kyū")
	e("ぎゅぅ", "gyū")
	e("ぎゅー", "gyū")
	e("ぎゅう", "gyū")
	e("きょ", "kyo")
	e("ぎょ", "gyo")
	e("きょぅ", "kyō")
	e("きょう", "kyō")
	e("ぎょぅ", "gyō")
	e("ぎょう", "gyō")
	e("きょぉ", "kyō")
	e("きょー", "kyō")
	e("きょお", "kyō")
	e("ぎょぉ", "gyō")
	e("ぎょー", "gyō")
	e("ぎょお", "gyō")
	e("く", "ku")
	e("ぐ", "gu")
	e("くぁ", "kwa")
	e("ぐぁ", "gwa")
	e("くぃ", "kwi")
	e("ぐぃ", "gwi")
	e("くぅ", "kwu")
	e("くう", "kū")
	e("くー", "kū")
	e("ぐぅ", "gwu")
	e("ぐう", "gū")
	e("ぐー", "gū")
	e("くぇ", "kwe")
	e("ぐぇ", "gwe")
	e("くぉ", "kwo")
	e("ぐぉ", "gwo")
	e("くゎ", "kwa")
	e("ぐゎ", "gwa")
	e("け", "ke")
	e("げ", "ge")
	e("けぃ", "kei")
	e("けい", "kei")
	e("げぃ", "gei")
	e("げい", "gei")
	e("けぇ", "kē")
	e("けえ", "kē")
	e("けー", "kē")
	e("げぇ", "gē")
	e("げえ", "gē")
	e("げー", "gē")
	e("こ", "ko")
	e("ご", "go")
	e("こぅ", "kō")
	e("こう", "kō")
	e("ごぅ", "gō")
	e("ごう", "gō")
	e("こぉ", "kō")
	e("こお", "kō")
	e("こー", "kō")
	e("ごぉ", "gō")
	e("ごお", "gō")
	e("ごー", "gō")
	e("さ", "sa")
	e("ざ", "za")
	e("さぁ", "sā")
	e("さあ", "sā")
	e("さー", "sā")
	e("ざぁ", "zā")
	e("ざあ", "zā")
	e("ざー", "zā")
	e("し", "shi")
	e("じ", "ji")
	e("しぃ", "shyi")
	e("しい", "shī")
	e("しー", "shī")
	e("じぃ", "jyi")
	e("じい", "jī")
	e("じー", "jī")
	e("しゃ", "sha")
	e("じゃ", "ja")
	e("しゃぁ", "shā")
	e("しゃー", "shā")
	e("しゃあ", "shā")
	e("じゃぁ", "jā")
	e("じゃー", "jā")
	e("じゃあ", "jā")
	e("しゅ", "shu")
	e("じゅ", "ju")
	e("しゅぅ", "shwu")
	e("しゅー", "shū")
	e("しゅう", "shū")
	e("じゅぅ", "jwu")
	e("じゅー", "jū")
	e("じゅう", "jū")
	e("しょ", "sho")
	e("じょ", "jo")
	e("しょぅ", "shō")
	e("しょう", "shō")
	e("じょぅ", "jō")
	e("じょう", "jō")
	e("しょぉ", "shō")
	e("しょー", "shō")
	e("しょお", "shō")
	e("じょぉ", "jō")
	e("じょー", "jō")
	e("じょお", "jō")
	e("す", "su")
	e("ず", "zu")
	e("すぁ", "swa")
	e("ずぁ", "zwa")
	e("すぃ", "si")
	e("ずぃ", "zi")
	e("すぃぇ", "sye")
	e("ずぃぇ", "zye")
	e("すぅ", "swu")
	e("すう", "sū")
	e("すー", "sū")
	e("ずぅ", "zwu")
	e("ずう", "zū")
	e("ずー", "zū")
	e("すぇ", "swe")
	e("ずぇ", "zwe")
	e("すぉ", "swo")
	e("ずぉ", "zwo")
	e("すゃ", "sya")
	e("ずゃ", "zya")
	e("すゅ", "syu")
	e("ずゅ", "zyu")
	e("すょ", "syo")
	e("ずょ", "zyo")
	e("すゎ", "swa")
	e("ずゎ", "zwa")
	e("せ", "se")
	e("ぜ", "ze")
	e("せぃ", "sei")
	e("せい", "sei")
	e("ぜぃ", "zei")
	e("ぜい", "zei")
	e("せぇ", "sē")
	e("せえ", "sē")
	e("せー", "sē")
	e("ぜぇ", "zē")
	e("ぜえ", "zē")
	e("ぜー", "zē")
	e("そ", "so")
	e("ぞ", "zo")
	e("そぅ", "sō")
	e("そう", "sō")
	e("ぞぅ", "zō")
	e("ぞう", "zō")
	e("そぉ", "sō")
	e("そお", "sō")
	e("そー", "sō")
	e("ぞぉ", "zō")
	e("ぞお", "zō")
	e("ぞー", "zō")
	e("た", "ta")
	e("だ", "da")
	e("たぁ", "tā")
	e("たあ", "tā")
	e("たー", "tā")
	e("だぁ", "dā")
	e("だあ", "dā")
	e("だー", "dā")
	e("ち", "chi")
	e("ぢ", "ji")
	e("ちぃ", "chyi")
	e("ちい", "chī")
	e("ちー", "chī")
	e("ぢぃ", "jyi")
	e("ぢい", "jī")
	e("ぢー", "jī")
	e("ちゃ", "cha")
	e("ぢゃ", "ja")
	e("ちゃぁ", "chā")
	e("ちゃー", "chā")
	e("ちゃあ", "chā")
	e("ぢゃぁ", "jā")
	e("ぢゃー", "jā")
	e("ぢゃあ", "jā")
	e("ちゅ", "chu")
	e("ぢゅ", "ju")
	e("ちゅぅ", "chwu")
	e("ちゅー", "chū")
	e("ちゅう", "chū")
	e("ぢゅぅ", "jwu")
	e("ぢゅー", "jū")
	e("ぢゅう", "jū")
	e("ちょ", "cho")
	e("ぢょ", "jo")
	e("ちょぅ", "chō")
	e("ちょう", "chō")
	e("ぢょぅ", "jō")
	e("ぢょう", "jō")
	e("ちょぉ", "chō")
	e("ちょー", "chō")
	e("ちょお", "chō")
	e("ぢょぉ", "jō")
	e("ぢょー", "jō")
	e("ぢょお", "jō")
	e("て", "te")
	e("で", "de")
	e("てぃ", "ti")
	e("てい", "tei")
	e("でぃ", "di")
	e("でい", "dei")
	e("てぃぇ", "tye")
	e("でぃぇ", "dye")
	e("てぇ", "tē")
	e("てえ", "tē")
	e("てー", "tē")
	e("でぇ", "dē")
	e("でえ", "dē")
	e("でー", "dē")
	e("てゃ", "tya")
	e("でゃ", "dya")
	e("てゅ", "tyu")
	e("でゅ", "dyu")
	e("てょ", "tyo")
	e("でょ", "dyo")
	e("と", "to")
	e("ど", "do")
	e("とぁ", "twa")
	e("どぁ", "dwa")
	e("とぃ", "twi")
	e("どぃ", "dwi")
	e("とぅ", "tu")
	e("とう", "tō")
	e("どぅ", "du")
	e("どう", "dō")
	e("とぅぉ", "two")
	e("どぅぉ", "dwo")
	e("とぇ", "twe")
	e("どぇ", "dwe")
	e("とぉ", "tō")
	e("とお", "tō")
	e("とー", "tō")
	e("どぉ", "dō")
	e("どお", "dō")
	e("どー", "dō")
	e("とゎ", "twa")
	e("どゎ", "dwa")
	e("と゚", "tu")
	e("ト゚ゥ", "twu")
	e("ト゚ー", "tū")
end

function t:test_transliterate_normal()
	options = nil
	e("アイェキキェ ヴィェウィフエ", "ayekikye vyewifue")
	e("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyōshode hyōgensareru shakujitoshiteno kanjio, kyokudoni sōtaikashita monodearu")
	e("しんかんせん", "shinkansen")
	e("ぴなーるん", "phinārun", "xug")
	-- ====
	e("こううん", "kōun")
	e("きんえん", "kin'en")
	e("きんねん", "kinnen")
	e("きねん", "kinen")
	e("きんゆう", "kin'yū")
	e("きにゅう", "kinyū")
	e("おんわ", "onwa")
	e("^コンウィ", "Konwi")
	e("^コーンウォール", "Kōnwōru")
	e("^ルブヌィ", "Rubu'nwi")
	e("^ヴィーンヌィツャ", "Vīnnwitsya")
	e("^ロヴァニエミ", "Rovaniemi")
	e("オヴム", "ovumu")
	e("クヴァルク", "kuvaruku")
	e("^リッヴィ", "Rivvi")
	e("^プロッヴィデンティ", "Purovvidenti")
	e("ウヌカㇻアン", "unukar'an", "ain")
	e("アㇺアㇺ", "am'am", "ain")
	e("ばーㇲ゙ア", "bādz'a", "mvi")
	e("わ ゐ 𛄟 ゑ を ワ ヰ 𛄢 ヱ ヲ", "wa i wu e o wa i wu e o")
	e("わ゙ ゐ゙ ゔ ゑ゙ を゙ ヷ ヸ ヴ ヹ ヺ", "va vi vu ve vo va vi vu ve vo")
	e("これはテストです。", "korehatesutodesu.")
	e("これ は テスト です。それ は。それ は", "kore wa tesuto desu. sore wa. sore wa")
	e("'''^ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso")
	e("^'''ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso")
	-- ====
	e("は うはう う は う は", "wa uhau u wa u wa")
	e("へ うへう う へ う へ", "e uheu u e u e")
	e(".は うはう う .は う .は", "ha uhau u ha u ha")
	e("は. うはう う は. う は.", "ha uhau u ha u ha")
	e("^これ ^は ^テスト ^です。^へ へ", "Kore Wa Tesuto Desu. E e") -- but what kind of sick monster capitalizes particles
	e("^ちょ% ^はっ%かい", "Cho Hakkai")
	e("てにをは", "tenioha")
	e("をぅとーてぃ", "wutōti", "ryu")
	e("ぎゃく-ハーレム", "gyaku-hāremu")
	e("ねこ-は", "neko-ha")
	e("ねこ-'''は'''", "neko-'''ha'''")
	e("ねこ-は の", "neko-ha no")
	e("ねこ-'''は''' の", "neko-'''ha''' no")
	e("は", "ha")
	e("'''は'''", "'''ha'''")
	e("<u>は</u>", "<u>ha</u>")
	e("それ は ね", "sore wa ne")
	e("'''こんにち は'''", "'''konnichi wa'''")
	e("それ '''は''' ね", "sore '''wa''' ne")
	e("^へ へ。", "E e.")
	e("^へ へ。", "E e.")
	e("^へ へ x", "E e x")
	e("^へ へ x", "E e x")
	e("うぉ", "wo")
	e("は は", "wa wa")
	e("では", "deha")
	e("はー", "hā")
	e("は〜", "ha~")
	e("は〰", "ha~")
	e("は゠は", "ha-ha")
	e("ハッ", "ha'")
	e("はっけん", "hakken")
	e("^はっけん", "Hakken")
	e("「はっけん」", "“hakken”")
	e("'''はっけん'''", "'''hakken'''")
	e("^〇〇 と も よばれます。", "◯◯ to mo yobaremasu.") -- [https://web.archive.org/web/20230204053800/https://en.wiktionary.org/wiki/こと]
	-- ====
	e("ぎゃ ぎぃ ぎゅ ぎぇ ぎょ。くぁ くぃ くぅ くぇ くぉ", "gya gī gyu gye gyo. kwa kwi kū kwe kwo")
	e("うぁ うぃ うぅ うぇ うぉ。ヴぁ ヴぃ ヴ ヴぇ ヴぉ", "wa wi wu we wo. va vi vu ve vo")
	e("ふぁ ふぃ ふ ふぇ ふぉ", "fa fi fu fe fo")
	e("てぃ でぃ とぅ どぅ すぁ すぃ しぃ しぇ しょ ちぃ ぢぃ つぉ てぇ てゅ とぁ とぃ ふょ てょ", "ti di tu du sa si shī she sho chī jī tso tē tyu twa twi fyo tyo")
	e("ねぃ ぬゃ", "ni nya") -- ¯\_(ツ)_/¯
	e("ねぇ、", "nē,")
	e("シークヮーサー", "shīkwāsā")
	-- ====
	e("りゃくしょう じょうず つみき ツァーリ ちゅうか つづけて そっち がっしょう マッツァーリ", "ryakushō jōzu tsumiki tsāri chūka tsuzukete sotchi gasshō mattsāri")
	e("こー やって。ばっさり", "kō yatte. bassari")
	e("し を ぼっ.す", "shi o bo'su")
	e("が がー がーー がーーー がーーーー がーーーーー", "ga gā gaaa gaaaa gaaaaa gaaaaaa")
	e("じと じっと じっっと じっっっと じっっっっと じっっっっっと", "jito jitto jittto jitttto jittttto jitttttto")
	e("めっちゃ めっっちゃ めっっっちゃ", "metcha mettcha metttcha")
	e("あっ あーっ あぁーっ あああっっっ", "a' ā' aaa' āa'''")
	e("はええ", "haē")
	e("まてぇぇぇ", "mateeee")
	e("あっ と いう ま に", "a' to iu ma ni")
	e("あっ、まちがえた", "a', machigaeta")
	e("あっ. まちがえた", "a' machigaeta")
	e("あっ と いう ま に", "a' to iu ma ni")
	e("ボン・キュッ・ボン", "bon kyub bon")
	e("アッ・^シャルキーヤ", "as Sharukīya")
	e("アッ゠^リヤード", "ar-Riyādo")
	e("アッ.゠^リヤード", "a'-Riyādo")
	e("アッ゠.^リヤード", "a'-Riyādo")
	e("アッ.^リヤード", "a'Riyādo")
	e("^ハガッニャ", "Haga'nya")
	e("トッモ", "to'mo")
	e("'''だまっ'''て", "'''damat'''te")
	e("いっ'''ぱつ''' の じゅうだん", "ip'''patsu''' no jūdan")
	e("'''ノン'''アポ", "'''non''''apo")
	e("んんと", "nnto")
	e("んーと", "nnto")
	e("っんーと", "'nnto")
	-- ====
	e("せきヶはら", "sekigahara")
	e("せき'''ヶ'''はら", "seki'''ga'''hara")
	e("けんいち にちようび こんや", "ken'ichi nichiyōbi kon'ya")
	e("すゞき あゝ", "suzuki ā")
	e("ところゞゝゝ", "tokorodokoro")
	e("じゝ", "jishi")
	e("バナヽ", "banana")
	e("イタベイトホヾニタリ", "itabeitohobonitari")
	e("ボヽ゚モフォ", "bopomofo")
	e("しゅゞ", "shuju")
	e("キ^ュンヽ^ヽ", "kYunkyuN")
	e("フィヽ", "fifi")
	e("<u>ほっ</u>する", "<u>hos</u>suru")
	e("<u>みっ</u>つ", "<u>mit</u>tsu")
	e("<u>ち</u>", "<u>chi</u>")
	e("<u>めっ</u>ちゃ", "<u>met</u>cha")
	-- ====
	e("あ~ あ〜 あ〰", "a~ a~ a~")
	e("あ!!!!", "a!!!!")
	e("200%", "200%")
	-- ====
	e("jyouzu じょうず", "jyouzu jōzu")
	e("^トゥットゥルー♪ ^まゆしぃ☆です", "Tutturū♪ Mayushī☆desu")
	e("「^だって、すてき な まち です し、それ に なんと いって も この じょうひん な ふいんき!^'''ザ'''・お-じょう-さま!^くうき も バラ の かおり が する と いう かっ!」", "“Datte, suteki na machi desu shi, sore ni nanto itte mo kono jōhin na fuinki! '''Za''' o-jō-sama! Kūki mo bara no kaori ga suru to iu ka'!”")
	e("あっあ", "a'a")
	e("ウッーウッーウマウマ", "u'uu'uumauma")
	e("あ゙ あ゛", "'a 'a")
	e("さあ゙", "sa'a")
	e("ウ゚", "ũ")
	e("ん゙ ん゛", "'n 'n")
	e("[[よる|よっ]]て", "yotte")
	e("^'''って''' なんで おまえ が ここ に!", "'''Tte''' nande omae ga koko ni!") -- [https://en.wiktionary.org/w/index.php?title=って&oldid=76847684]
	e("あいうえお<br>おえういあ", "aiueo<br>oeuia") -- [https://en.wiktionary.org/w/index.php?title=裏垢&oldid=64163569]
	e("あいうえお<br>'''おえ'''ういあ", "aiueo<br>'''oe'''uia") -- [https://en.wiktionary.org/w/index.php?title=裏垢&oldid=64163569]
	e("これ は<br>テスト です", "kore wa<br>tesuto desu") -- [https://en.wiktionary.org/w/index.php?title=電子計算機&oldid=80107202]
	e("はこ%おし", "hakooshi") -- [https://en.wiktionary.org/w/index.php?title=Module:ja&diff=prev&oldid=41701081]
	e("ごん%べ%え", "gonbee") -- [https://en.wiktionary.org/w/index.php?title=Module:ja&diff=prev&oldid=41701081]
	e("っっ^っって", "ttTtte")
	e("しんい", "shin'i")
	e("し.んい", "shin'i")
	e("しん.い", "shin'i")
	e("し・んい", "shi n'i")
	e("しん・い", "shin i")
	e("し.ん.い", "shin'i")
	e("し.ん・い", "shin i")
	e("し・ん.い", "shi n'i")
	e("し・ん・い", "shi n i")
	e("しんうぃ", "shinwi")
	e("し.んうぃ", "shinwi")
	e("しん.うぃ", "shinwi")
	e("し・んうぃ", "shi nwi")
	e("しん・うぃ", "shin wi")
	e("し.ん.うぃ", "shinwi")
	e("し.ん・うぃ", "shin wi")
	e("し・ん.うぃ", "shi nwi")
	e("し・ん・うぃ", "shi n wi")
	e("しぬぃん", "shi'nwin")
	e("し.ぬぃん", "shi'nwin")
	e("しぬぃ.ん", "shi'nwin")
	e("し・ぬぃん", "shi nwin")
	e("しぬぃ・ん", "shi'nwi n")
	e("し.ぬぃ.ん", "shi'nwin")
	e("し.ぬぃ・ん", "shi'nwi n")
	e("し・ぬぃ.ん", "shi nwin")
	e("し・ぬぃ・ん", "shi nwi n")
	e("しぬ𛅐ん", "shi'nwin")
	e("し.ぬ𛅐ん", "shi'nwin")
	e("しぬ𛅐.ん", "shi'nwin")
	e("し・ぬ𛅐ん", "shi nwin")
	e("しぬ𛅐・ん", "shi'nwi n")
	e("し.ぬ𛅐.ん", "shi'nwin")
	e("し.ぬ𛅐・ん", "shi'nwi n")
	e("し・ぬ𛅐.ん", "shi nwin")
	e("し・ぬ𛅐・ん", "shi nwi n")
	e("うんぐ", "ungu")
	e("う.んぐ", "ungu")
	e("うん.ぐ", "ungu")
	e("う・んぐ", "u ngu")
	e("うん・ぐ", "un gu")
	e("う.ん.ぐ", "ungu")
	e("う.ん・ぐ", "un gu")
	e("う・ん.ぐ", "u ngu")
	e("う・ん・ぐ", "u n gu")
	e("うく゚ん", "u'ngun")
	e("う.く゚ん", "u'ngun")
	e("うく゚.ん", "u'ngun")
	e("う・く゚ん", "u ngun")
	e("うく゚・ん", "u'ngu n")
	e("う.く゚.ん", "u'ngun")
	e("う.く゚・ん", "u'ngu n")
	e("う・く゚.ん", "u ngun")
	e("う・く゚・ん", "u ngu n")
	e("んく゚", "n'ngu")
	e("ん.く゚", "n'ngu")
	e("ん・く゚", "n ngu")
	e("っな゙", "'nna", "ryn")
	e("っん゙", "'nn", "ryu")
	e("エック゚", "e'nngu")
	e("んぬ", "nnu")
	e("んぬぁ", "nnwa")
	e("ん゙ぬ", "'nnu")
	e("ん゙ぬぁ", "'nnwa")
	e("ふづぁ", "fuza", "mvi")
end

function t:test_transliterate_historical()
	options = {hist = true}
	e("づ", "du")
	e("ず", "zu")
	e("ぢ", "di")
	e("じ", "zi")
	e("つ", "tu")
	e("ち", "ti")
	e("おお", "oo") -- [[Talk:公]]
	e("おう", "ou")
	e("はん", "fan")
	-- ===
	e("しよう", "syou")
	e("きやう", "kyau")
	e("し.よう", "siyou")
	e("いゆ", "iyu")
	e("きよ", "kyo")
	e("きよう", "kyou")
	e("ちや", "tya")
	e("くわ", "kwa") -- only before く / ぐ
	e("くゑ", "kwe")
	e("く.わ", "kuwa")
	e("すゑ", "suwe")
	e("にうわ", "niuwa")
	e("つ.ゑ", "tuwe")
	e("くゐよく", "kwyoku")
	e("かんわ", "kan'wa")
	e("くわんゐん", "kwan'win")
end

function t:test_transliterate_no_diacritics()
	options = {no_diacritics = true}
	e("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyoushode hyougensareru shakujitoshiteno kanjio, kyokudoni soutaikashita monodearu")
end
 
return t