မာတိကာသို့ ခုန်သွားရန်

မဝ်ဂျူ:ja/testcases

နူ ဝိက်ရှေန်နရဳ

Documentation for this module may be created at မဝ်ဂျူ:ja/testcases/doc

-- Unit tests for [[Module:ja]]. Click talk page to run tests.
local p = require('Module:UnitTests')
local m = require('Module:ja')

function p:k2r(original, romaji)
	self:equals(original, m.kana_to_romaji(original), romaji)
end

function p:k2r_no_diacritics(original, romaji)
	self:equals(original, m.kana_to_romaji(original, {no_diacritics = true}), romaji)
end

function p:k2r_hist(original, romaji)
	self:equals("historical: " .. original, m.kana_to_romaji(original, {hist = true}), romaji)
end

function p:r2k(original, katakana)
	self:equals(original, m.romaji_to_kata(original), katakana)
end

function p:script_detection(original, script)
	self:equals(original, m.script(original), script)
end

function p:k2h(original, hiragana)
	self:equals(original, m.kata_to_hira(original), hiragana)
end

function p:h2k(original, katakana)
	self:equals(original, m.hira_to_kata(original), katakana)
end

function p:other(fun, original, output)
	local mf

	if fun == 'jsort' then mf = m.jsort
	elseif fun == 'count_morae' then mf = m.count_morae
	elseif fun == 'rm_spaces_hyphens' then mf = m.rm_spaces_hyphens
	elseif fun == 'kanji_grade' then mf = m.kanji_grade
	end

	self:equals(fun .. ': ' .. original, mf(original), output)
end

function p:test_all()
	self:k2r("アイェキキェ ヴィェウィフエ", "ayekikye vyewifue")
	self:k2r("しんい", "shin'i")
	self:k2r_no_diacritics("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyoushode hyougensareru shakujitoshiteno kanjio, kyokudoni soutaikashita monodearu")
	self:k2r("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyōshode hyōgensareru shakujitoshiteno kanjio, kyokudoni sōtaikashita monodearu")
	self:k2r("しんかんせん", "shinkansen")
	-- ====
	self:k2r("こううん", "kōun")
	self:k2r("これはテストです。", "korehatesutodesu.")
	self:k2r("これ は テスト です。それ は。それ は", "kore wa tesuto desu. sore wa. sore wa")
	self:k2r("'''^ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso")
	self:k2r("^'''ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso")
	-- ====
	self:k2r("は うはう う は う は", "wa uhau u wa u wa")
	self:k2r("へ うへう う へ う へ", "e uheu u e u e")
	self:k2r(".は うはう う .は う .は", "ha uhau u ha u ha")
	self:k2r("は. うはう う は. う は.", "ha uhau u ha u ha")
	self:k2r("^これ ^は ^テスト ^です。^へ へ", "Kore Wa Tesuto Desu. E e") -- but what kind of sick monster capitalizes particles
	self:k2r("^ちょ% ^はっ%かい", "Cho Hakkai")
	self:k2r("てにをは", "tenioha")
	self:k2r("ぎゃく-ハーレム", "gyaku-hāremu")
	self:k2r("ねこ-は", "neko-ha")
	self:k2r("ねこ-'''は'''", "neko-'''ha'''")
	self:k2r("ねこ-は の", "neko-ha no")
	self:k2r("ねこ-'''は''' の", "neko-'''ha''' no")
	self:k2r("は", "ha")
	self:k2r("'''は'''", "'''ha'''")
	self:k2r("<u>は</u>", "<u>ha</u>")
	self:k2r("それ は ね", "sore wa ne")
	self:k2r("'''こんにち は'''", "'''konnichi wa'''")
	self:k2r("それ '''は''' ね", "sore '''wa''' ne")
	-- ====
--[[
	self:k2r("^へ へ。", "E e.") -- doesn't work as of jan 2017 probably because the code detects へ + the two surrounding
	self:k2r("^へ へ。", "E e.") -- characters, and if the first へ is processed the other does not have a preceding
	self:k2r("^へ へ x", "E e x") -- character to allow it to be detected (can be easily fixed but has not proven
	self:k2r("^へ へ x", "E e x") -- itself to need fixing yet)
]]
	self:k2r("うぉ", "wo")
	self:k2r("は は では ^はっけん はっけん 「はっけん」 '''はっけん'''", "wa wa deha Hakken hakken “hakken” '''hakken'''")
	self:k2r("は は では ^はっけん はっけん 「はっけん」 '''はっけん'''", "wa wa deha Hakken hakken “hakken” '''hakken'''")
	-- ====
	self:k2r("ぎゃ ぎぃ ぎゅ ぎぇ ぎょ。くぁ くぃ くぅ くぇ くぉ", "gya gī gyu gye gyo. kwa kwi kū kwe kwo")
	self:k2r("うぁ うぃ うぅ うぇ うぉ。ヴぁ ヴぃ ヴ ヴぇ ヴぉ", "wa wi ū we wo. va vi vu ve vo")
	self:k2r("ふぁ ふぃ ふ ふぇ ふぉ", "fa fi fu fe fo")
	self:k2r("てぃ でぃ とぅ どぅ すぁ すぃ しぃ しぇ しょ ちぃ ぢぃ つぉ てぇ てゅ とぁ とぃ ふょ てょ", "ti di tu du sa si shī she sho chī jī tso tē tyu twa twi fyo tyo")
	self:k2r("ねぃ ぬゃ", "ni nya") -- ¯\_(ツ)_/¯
	self:k2r("ねぇ、", "nē,")
	self:k2r("シークヮーサー", "shīkwāsā")
	-- ====
	self:k2r("りゃくしょう じょうず つみき ツァーリ ちゅうか つづけて そっち がっしょう マッツァーリ", "ryakushō jōzu tsumiki tsāri chūka tsuzukete sotchi gasshō mattsāri")
	self:k2r("こー やって。ばっさり", "kō yatte. bassari")
	self:k2r("し を ぼっ.す", "shi o bossu")
	self:k2r("がーー", "gāa")
	self:k2r("が がー がーー がーーー がーーーー がーーーーー", "ga gā gāa gāā gāāa gāāā")
	self:k2r("じと じっと じっっと じっっっと じっっっっと じっっっっっと", "jito jitto jittto jitttto jittttto jitttttto")
	self:k2r("めっちゃ めっっちゃ めっっっちゃ", "metcha mettcha metttcha")
	self:k2r("あっ あーっ あぁーっ あああっっっ", "a&#39; ā&#39; āa&#39; āa&#39;&#39;&#39;")
	self:k2r("はええ", "haē")
	self:k2r("まてぇぇぇ", "matēē")
	self:k2r("あっ と いう ま に", "at to iu ma ni")
	self:k2r("あっ、まちがえた", "a&#39;, machigaeta")
--[[
	self:k2r("あっ. まちがえた", "ah machigaeta") -- conflicts with the "し を ぼっ.す" test for now
]]
	self:k2r("あっ と いう ま に", "at to iu ma ni")
	self:k2r("'''だまっ'''て", "'''damat'''te")
	self:k2r("いっ'''ぱつ''' の じゅうだん", "ip'''patsu''' no jūdan")
	self:k2r("'''ノン'''アポ", "'''non'''&#39;apo")
	-- ====
	self:k2r("じゅうにヶげつ せきヶはら", "jūnikagetsu sekigahara")
	self:k2r("じゅうに'''ヶ'''げつ せき'''ヶ'''はら", "jūni'''ka'''getsu seki'''ga'''hara")
	self:k2r("いっヵげつ いっ'''ヵ'''げつ", "ikkagetsu ik'''ka'''getsu")
	self:k2r("けんいち にちようび こんや", "ken'ichi nichiyōbi kon'ya")
	self:k2r("すゞき あゝ", "suzuki ā")
	self:k2r("<u>ほっ</u>する", "<u>hos</u>suru")
	self:k2r("<u>みっ</u>つ", "<u>mit</u>tsu")
	self:k2r("<u>ち</u>", "<u>chi</u>")
	self:k2r("<u>めっ</u>ちゃ", "<u>met</u>cha")
	-- ====
	self:k2r("あ~ あ〜 あ〰", "a~ a~ a~")
	self:k2r("あ!!!!", "a!!!!")
	self:k2r("200%", "200%")
	-- ====
	self:k2r("jyouzu じょうず", "jyouzu jōzu")
	self:k2r("^トゥットゥルー♪ ^まゆしぃ☆です", "Tutturū♪ Mayushī☆desu")
	self:k2r("「^だって、すてき な まち です し、それ に なんと いって も この じょうひん な ふいんき!^'''ザ'''・お-じょう-さま!^くうき も バラ の かおり が する と いう かっ!」", "“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&#39;!”")
	-- ====
--[[
	self:k2r("あっあ", "?")
	self:k2r("ウッーウッーウマウマ", "?")
	self:k2r("あ゙ あ゛", "?")
]]

	self:k2r_hist("づ", "du")
	self:k2r_hist("ず", "zu")
	self:k2r_hist("ぢ", "di")
	self:k2r_hist("じ", "zi")
	self:k2r_hist("きやう", "kyau")
	self:k2r_hist("くゑ", "kwe")
	self:k2r_hist("きよ", "kyo")
	self:k2r_hist("くゐよく", "kwyoku")
	self:k2r_hist("きよう", "kyou")
	-- ===
	self:k2r_hist('すゐ', 'suwi')
	-- ====
	self:k2r_hist("おお", "oo") -- [[Talk:公]]
	self:k2r_hist("おう", "ou")
	self:k2r_hist("はん", "fan")
	self:k2r_hist("しよう", "syou")
	self:k2r_hist("し.よう", "siyou")
	-- ====
	self:k2r_hist("つ.ゑ", "tuwe")
	self:k2r_hist("つ", "tu")
	self:k2r_hist("ち", "ti")
	self:k2r_hist("ちや", "tya")

	self:r2k("ayekikye vyewifue", "アイェキキェ ヴィェウィフエ")
	self:r2k("shinkansen", "シンカンセン")
	self:r2k("shin'i", "シンイ")
	self:r2k("shin'ya shinya", "シンヤ シニャ")
	self:r2k("na ni nu ne no nya nyu nye nyo", "ナ ニ ヌ ネ ノ ニャ ニュ ニェ ニョ")
	self:r2k("bakkurasshu", "バックラッシュ")

	self:script_detection('あいこくしん愛国心メ', 'Hira+Kana+Hani')
	self:script_detection('あいこくしん愛国心', 'Hira+Hani')
	self:script_detection('ァー', 'Kana')
	self:script_detection('あっぷるringo', 'Hira+Romaji')
	self:script_detection('ニッポン11', 'Kana+Number')
	self:script_detection('ニッポンnippon', 'Kana+Romaji')
	self:script_detection('一つ', 'Hira+Hani')
	self:script_detection('〆る', 'Hira+Abbreviation')

	self:k2h('アメリカじん', 'あめりかじん')

	self:h2k('うぃきぺでぃあ デス', 'ウィキペディア デス')

	self:other('jsort', 'でーじ', 'てえじ\'')

	self:other('count_morae', 'しゃっきんジャー', 6)

	self:other('rm_spaces_hyphens', 'ishu kakutōgi sen', 'ishukakutōgisen')

	self:other('kanji_grade', '立', 1)
	self:other('kanji_grade', '尊立', 6)
	self:other('kanji_grade', '藉尊立', 9)
end
 
return p