1# Tests adapted from 2# https://github.com/WaniKani/WanaKana/blob/master/test/tests.js 3 4use warnings; 5use strict; 6use Test::More; 7use Lingua::JA::Moji ':all'; 8use utf8; 9binmode Test::More->builder->output, ":utf8"; 10binmode Test::More->builder->failure_output, ":utf8"; 11 12is (romaji2hiragana ("IROHANIHOHETO"), "いろはにほへと", "Even the colorful fregrant flowers"); 13is (romaji2hiragana ("CHIRINURUWO"), "ちりぬるを", "Die sooner or later"); 14is (romaji2hiragana ("WAKAYOTARESO"), "わかよたれそ", "Us who live in this world"); 15is (romaji2hiragana ("TSUNENARAMU"), "つねならむ", "Cannot live forever, either."); 16is (romaji2hiragana ("UWINOOKUYAMA"), "うゐのおくやま", "This transient mountain with shifts and changes,)"); 17is (romaji2hiragana ("KEFUKOETE"), "けふこえて", "Today we are going to overcome, and reach the world of enlightenment."); 18is (romaji2hiragana ("ASAKIYUMEMISHI"), "あさきゆめみし", "We are not going to have meaningless dreams"); 19is (romaji2hiragana ("WEHIMOSESUN"), "ゑひもせすん", "nor become intoxicated with the fake world anymore"); 20 21is (romaji2hiragana ("babba"), "ばっば", "double B"); 22#is (romaji2hiragana ("cacca"), "cあっcあ", "double C"); 23is (romaji2hiragana ("chaccha"), "ちゃっちゃ", "double Ch"); 24is (romaji2hiragana ("dadda"), "だっだ", "double D"); 25is (romaji2hiragana ("gagga"), "がっが", "double G"); 26is (romaji2hiragana ("hahha"), "はっは", "double H"); 27is (romaji2hiragana ("kakka"), "かっか", "double K"); 28is (romaji2hiragana ("nanna"), "なんな", "double N"); 29is (romaji2hiragana ("pappa"), "ぱっぱ", "double P"); 30is (romaji2hiragana ("rarra"), "らっら", "double R"); 31is (romaji2hiragana ("sassa"), "さっさ", "double S"); 32is (romaji2hiragana ("shassha"), "しゃっしゃ", "double Sh"); 33is (romaji2hiragana ("tatta"), "たった", "double T"); 34is (romaji2hiragana ("tsuttsu"), "つっつ", "double Ts"); 35is (romaji2hiragana ("zazza"), "ざっざ", "double Z"); 36 37is (romaji2hiragana ("mamma"), "まんま", "double M"); 38is (romaji2hiragana ("mamma", { ime => 1 } ), "まっま", "double M IME style"); 39 40is (romaji2hiragana ("fuffu"), "ふっふ", "double F"); 41is (romaji2hiragana ("jajja"), "じゃっじゃ", "double J"); 42is (romaji2hiragana ("qaqqa"), "くぁっくぁ", "double Q"); 43is (romaji2hiragana ("vavva"), "ゔぁっゔぁ", "double V"); 44is (romaji2hiragana ("wawwa"), "わっわ", "double W"); 45is (romaji2hiragana ("yayya"), "やっや", "double Y"); 46 47is (romaji2hiragana ("aiueo"), romaji2hiragana ("AIUEO"), "cAse DoEsn'T MatTER for toHiragana ()"); 48is (romaji2kana ("aiueo"), romaji2kana ("AIUEO"), "cAse DoEsn'T MatTER for toKatakana ()"); 49 50is (romaji2hiragana ("n"), "ん", "Solo N"); 51is (romaji2hiragana ("onn"), "おん", "double N"); 52is (romaji2hiragana ("onna"), "おんな", "N followed by N* syllable"); 53is (romaji2hiragana ("nnn"), "んん", "Triple N"); 54 55is (romaji2hiragana ("onnna", { ime => 1 }, ), "おんな", "Triple N followed by N* syllable (IME mode)"); 56is (romaji2hiragana ("nnnn"), "んん", "Quadruple N"); 57 58is (romaji2hiragana ("nyan"), "にゃん", "nya -> にゃ"); 59# The original behaviour of wanakana was wrong for an ime. 60is (romaji2hiragana ("nnnyann", { ime => 1 }), "んにゃん", "nnnyann -> んにゃん in IME mode"); 61is (romaji2hiragana ("nnnyannn"), "んにゃんん", "nnnya -> んにゃ"); 62 63my $opts = {wapuro => 1, style => 'hepburn'}; 64 65is (kana2romaji("ワニカニ ガ スゴイ ダ", $opts), "wanikani ga sugoi da", "Convert katakana to romaji"); 66is (kana2romaji("わにかに が すごい だ", $opts), "wanikani ga sugoi da", "Convert hiragana to romaji"); 67is (kana2romaji("ワニカニ が すごい だ", $opts), "wanikani ga sugoi da", "Convert mixed kana to romaji"); 68isnt (kana2romaji("わにかにがすごいだ", $opts), "wanikani ga sugoi da", "Spaces must be manually entered"); 69 70# Don't think this is right (?) 71# is (kana2romaji("ちりぬるを", $opts), "chirinuruwo", "Die sooner or later"); 72is (kana2romaji("ちりぬるを", {%$opts, wo => 1}), "chirinuruwo", 73 "Die sooner or later"); 74is (kana2romaji("ちりぬるを", {%$opts, wo => 0}), "chirinuruo", 75 "Die sooner or later"); 76 77is (kana2romaji("いろはにほへと", $opts), "irohanihoheto", "Even the colorful fregrant flowers"); 78is (kana2romaji("わかよたれそ", $opts), "wakayotareso", "Us who live in this world"); 79is (kana2romaji("つねならむ", $opts), "tsunenaramu", "Cannot live forever, either."); 80is (kana2romaji("うゐのおくやま", $opts), "uwinookuyama", "This transient mountain with shifts and changes,)"); 81is (kana2romaji("けふこえて", $opts), "kefukoete", "Today we are going to overcome, and reach the world of enlightenment."); 82is (kana2romaji("あさきゆめみし", $opts), "asakiyumemishi", "We are not going to have meaningless dreams"); 83is (kana2romaji("ゑひもせすん", $opts), "wehimosesun", "nor become intoxicated with the fake world anymore"); 84is (kana2romaji("きんにくまん", $opts), "kinnikuman", "Double and single n"); 85is (kana2romaji("んんにんにんにゃんやん", $opts), "nnninninnyan'yan", "N extravaganza"); 86done_testing (); 87exit; 88