The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use utf8;
use Test::Requires qw/Text::MeCab/;
use Test::Base;
plan tests => 1 * blocks;

binmode Test::More->builder->$_ => ':utf8'
    for qw/output failure_output todo_output/;

use Acme::Pinoko;

my $pinoko = Acme::Pinoko->new(parser => 'Text::MeCab');

run
{
    my $block = shift;
    is($pinoko->say($block->input), $block->expected);
};


__DATA__

=== No change
--- input:    せっかくいいとこなのにぃ
--- expected: せっかくいいとこなのにぃ

=== No change
--- input:    やったー
--- expected: やったー

=== No change (アニメ版では変化するが漫画版では変化しない)
--- input:    先生
--- expected: 先生

=== No change
--- input:    ピノコ
--- expected: ピノコ

=== No change
--- input:    ちゃんとお食べ。残すなんてぜいたくよ
--- expected: ちゃんとお食べ。残ちゅなんてぜいたくよのさ

=== No change
--- input:    ラルゴ
--- expected: ラルゴ
--- SKIP 漫画版では変化しないが保留 (アニメ版では「ヤユゴ」に変わることもある?)

=== No change
--- input:    めいっぱいたいへーん
--- expected: めいっぱいたいへーん

=== No change
--- input:    早くのませて
--- expected: 早くのませて

=== No change
--- input:    つくえ
--- expected: つくえ

=== No change
--- input:    稼げばいいじゃないの
--- expected: 稼げばいいじゃないのよさ

=== No change
--- input:    おっかない
--- expected: おっかない

=== No change
--- input:    卵焼き
--- expected: 卵焼き

=== No change
--- input:    おこづかい
--- expected: おこづかい
--- SKIP 漫画版では変化しないが本来は「づ」が「じゅ」に変わるべきと考える

=== No change
--- input:    ルナルナ
--- expected: ルナルナ
--- SKIP 漫画版では変化しないが例外すぎるのでスキップ

=== No change
--- input:    あったかーい
--- expected: あったかーい

=== No change
--- input:    帰ってきて
--- expected: 帰ってきて

=== No change
--- input:    待ってたのよ
--- expected: 待ってたのよさ

=== No change
--- input:    犬のかわりなの
--- expected: 犬のかわりなの
--- SKIP り -> い になるべき

=== No change
--- input:    ポケット
--- expected: ポケット

=== No change
--- input:    あけていい?
--- expected: あけていい?

=== No change
--- input:    アッチョンブリケ
--- expected: アッチョンブリケ

=== No change
--- input:    アッチョンブリケー
--- expected: アッチョンブリケー

=== No change
--- input:    アッチョンブリケーー
--- expected: アッチョンブリケーー

=== No change
--- input:    アラマンチュ
--- expected: アラマンチュ

=== No change
--- input:    シーウーノアラマンチュ
--- expected: シーウーノアラマンチュ

=== No change
--- input:    かわいー
--- expected: かわいー

=== No change
--- input:    旅行のおみやげ
--- expected: 旅行のおみやげ

=== No change
--- input:    ビンも入ってたもんね
--- expected: ビンも入ってたもんね

=== No change
--- input:    ちがう
--- expected: ちがう

=== No change
--- input:    あの人の妹
--- expected: あの人の妹

=== No change
--- input:    ちっちゃーく
--- expected: ちっちゃーく

=== No change
--- input:    ひっぱたくとかみつく
--- expected: ひっぱたくとかみつく

=== No change
--- input:    させて
--- expected: させて

=== No change
--- input:    ヾ(^▽^*
--- expected: ヾ(^▽^*

=== Np change
--- input:    \(^o^)/
--- expected: \(^o^)/

=== No change
--- input: 777
--- expected: 777

=== No change
--- input:    20
--- expected: 20

=== No change
--- input:    ishikawa
--- expected: ishikawa

=== No change
--- input:    ホシーン
--- expected: ホシーン

=== う -> ゆ
--- input:    思う
--- expected: 思ゆ
--- SKIP 滅多に変化しない

=== さ -> ちゃ
--- input:    お星さま
--- expected: お星ちゃま
--- SKIP 星が「ほし」になるが重要ではないので保留

=== さ -> ちゃ
--- input:    まさか
--- expected: まちゃか

=== さ -> ちゃ
--- input:    お魚
--- expected: おちゃかな

=== さ -> ちゃ, ろ -> よ
--- input:    ご苦労様
--- expected: ごくようちゃま

=== し -> ち
--- input:    知ってんだから
--- expected: ちってんらかや

=== し -> ち
--- input:    詳しく
--- expected: 詳ちく

=== し -> ち
--- input:    内緒
--- expected: ないちょ

=== し -> ち
--- input:    自信
--- expected: じちん

=== し -> ち
--- input:    オシッコ
--- expected: オチッコ

=== し -> ち
--- input:    死んだ
--- expected: ちんら

=== し -> ち
--- input:    モシモシ
--- expected: モチモチ

=== し -> ち
--- input:    お話ししたかった
--- expected: お話ちちたかった

=== し -> ち, ら -> や
--- input:    プライバシー
--- expected: プヤイバチー

=== し -> ち, る -> ゆ
--- input:    バカにしてるじゃんか
--- expected: バカにちてゆじゃんか

=== し -> ち, れ -> え
--- input:    話してくれなければ渡しません
--- expected: 話ちてくえなけえば渡ちません

=== じ -> じゅ
--- input:    真面目
--- expected: まじゅめ

=== じ -> じゅ
--- input:    はじめて
--- expected: はじゅめて

=== しゃ -> ちゃ
--- input:    いらっしゃい
--- expected: いやっちゃい

=== しゃ -> ちゃ
--- input:    ほうしゃのう
--- expected: ほうちゃのう

=== しゅ -> ちゅ
--- input:    シュークリーム
--- expected: チュークイーム

=== しゅ -> ちゅ
--- input:    助手で
--- expected: じょちゅれ

=== しょ -> ちょ
--- input:    見ましょ
--- expected: 見まちょ

=== しょ -> ちょ
--- input:    立派でしょ
--- expected: いっぱれちょ

=== しょ -> ちょ
--- input:    紹介
--- expected: ちょうかい

=== しょ -> ちょ
--- input:    お食事
--- expected: おちょくじ

=== しょう -> ちょ
--- input:    あてましょうか
--- expected: あてまちょう
--- SKIP 「しょ」のみ「ちょ」に変換されることも多いので保留

=== す -> ちゅ
--- input:    もうすぐ
--- expected: もうちゅぐ

=== す -> ちゅ
--- input:    行ってきます
--- expected: 行ってきまちゅ

=== す -> ちゅ
--- input:    座って
--- expected: ちゅわって

=== す -> ちゅ
--- input:    助けて
--- expected: たちゅけて

=== す -> ちゅ, り -> い
--- input:    ヒステリー
--- expected: ヒチュテイー

=== す -> ちゅ, る -> ゆ
--- input:    する
--- expected: ちゅゆ

=== す -> ち
--- input:    すごく
--- expected: ちごく
--- SKIP 「す」->「ちゅ」にほぼ統一されているため

=== ず -> じゅ
--- input:    絆
--- expected: きじゅな

=== ず -> じゅ
--- input:    恋煩い
--- expected: こいわじゅやい

=== ず -> じゅ
--- input:    ズボン
--- expected: ジュボン

=== ず -> ず
--- input:    ずーっと
--- expected: ずーっと

=== そ -> ちょ
--- input:    治そう
--- expected: 治ちょう
--- SKIP 「そ」->「ちょ」に変化しないパターンも多いので保留

=== そ -> ちょ
--- input:    かわいそう
--- expected: かわいちょう
--- SKIP 「そ」->「ちょ」に変化しないパターンも多いので保留

=== だ -> ら
--- input:    お友だちなの?
--- expected: お友らちなの?

=== だ -> ら
--- input:    だめ
--- expected: らめ

=== だ -> ら
--- input:    ちょうだい
--- expected: ちょうらい

=== だ -> ら
--- input:    お手伝い
--- expected: おてつらい

=== だ -> ら
--- input:    誰
--- expected: らえ

=== だ -> ら
--- input:    旦那
--- expected: らんな

=== だ -> ら
--- input:    なーんだ
--- expected: なーんら

=== だ -> だ
--- input:    だるくて
--- expected: だゆくて

=== だ -> だ
--- input:    だが
--- expected: だが

=== だ -> ら, です -> れちゅ
--- input:    だったんですって
--- expected: らったんれちゅって

=== づ -> じゅ
--- input:    小包
--- expected: こじゅつみ

=== づ -> じゅ
--- input:    こづつみ
--- expected: こじゅつみ

=== っつ -> っちゅ
--- input:    ガッツが足りない
--- expected: ガッチュが足いない

=== で -> れ
--- input:    とんでも
--- expected: とんれも

=== で -> れ
--- input:    まるで
--- expected: まゆれ

=== で -> れ, れ -> え
--- input:    バレンタインデー
--- expected: バエンタインレー

=== ど -> ろ
--- input:    ひどい
--- expected: ひろい

=== ど -> ろ
--- input:    気の毒に
--- expected: 気のろくに

=== ど -> ろ
--- input:    時々
--- expected: ときろき

=== の -> ん
--- input:    巣の中
--- expected: 巣ん中
--- SKIP ルールが明確でない

=== の -> ん
--- input:    生まれたのよ
--- expected: 生まえたんよ
--- SKIP ルールが明確でない

=== ら -> や
--- input:    泳ぎたいくらい
--- expected: 泳ぎたいくやい

=== ら -> や
--- input:    わからない
--- expected: わかやない

=== ら -> や
--- input:    うらめしそう
--- expected: うやめちそう

=== ら -> や
--- input:    嫌われちゃう
--- expected: きやわえちゃう

=== ら -> や, し -> ち
--- input:    シラコ
--- expected: チヤコ

=== り -> い
--- input:    はっきりして
--- expected: はっきいちて

=== り -> い
--- input:    お守り
--- expected: お守い

=== る -> ゆ
--- input:    やるな
--- expected: やゆな

=== る -> ゆ
--- input:    悪い
--- expected: わゆい

=== る -> ゆ
--- input:    送る
--- expected: 送ゆ

=== る -> ゆ
--- input:    許せない
--- expected: ゆゆせない

=== る -> ゆ
--- input:    セル
--- expected: セユ

=== ル -> ユ
--- input:    アルバム
--- expected: アユバム

=== れ -> え
--- input:    きれー
--- expected: きえー

=== れ -> え
--- input:    それ
--- expected: そえ

=== れ -> え
--- input:    テレビ
--- expected: テエビ

=== れ -> え, さ -> ちゃ, る -> ゆ
--- input:    殺される
--- expected: こよちゃえゆ

=== れ -> え, し -> ち
--- input:    してくれれば
--- expected: ちてくええば

=== れ -> え, る -> ゆ
--- input:    倒れてる
--- expected: 倒えてゆ

=== ら -> や, れ -> え, る -> ゆ
--- input:    しばられてる
--- expected: ちばやえてゆ

=== ろ -> よ
--- input:    そろそろ
--- expected: そよそよ

=== ろ -> よ
--- input:    泥棒
--- expected: どよぼう

=== ろ -> よ
--- input:    お風呂
--- expected: おふよ

=== です -> れちゅ
--- input:    おそいです
--- expected: おそいれちゅ

=== です -> れちゅ
--- input:    いいですか
--- expected: いいれちゅか

=== のです -> のれちゅ
--- input:    地が黒いのです(# ̄З ̄)
--- expected: 地がくよいのれちゅ(# ̄З ̄)

=== ですね -> れちゅね
--- input:    感謝ですね
--- expected: かんちゃれちゅね

=== でしょ -> れちょ
--- input:    おそいでしょ
--- expected: おそいれちょ

=== でしょ -> れちょ
--- input:    片思いでしょ
--- expected: 片思いれちょ

=== でしょx2 -> れちょx2
--- input:    冒険でしょでしょ
--- expected: 冒険れちょれちょ

=== でしょ -> れちょ, る -> ゆ
--- input:    上手く受けるでしょ
--- expected: 上手く受けゆれちょ

=== しゅじゅつ -> しうつ
--- input:    主述
--- expected: しうつ
--- SKIP MeCab では「主述」は「主」「述」に分割されるのに加え、あまり重要でないので

=== 手術 -> シウツ
--- input:    手術が成功
--- expected: シウツが成功

=== 憂鬱 -> ユーツ
--- input:    憂鬱
--- expected: ユーツ

=== 抜群 -> ばちぐん
--- input:    抜群
--- expected: バチグン

=== キス -> キチュ
--- input:    キス
--- expected: キチュ

=== あのね -> あんね
--- input:    あのね
--- expected: あんね

=== それで -> そいれ
--- input:    それでどうなったの
--- expected: そいれろうなったのよさ

=== こども -> こよも
--- input:    こども
--- expected: こよも

=== なんだ -> なんや
--- input:    なんだか
--- expected: なんやか

=== うそつき -> うそちゅき
--- input:    ウソツキ
--- expected: ウソチュキ

=== 1人 -> ひとい
--- input:    1人
--- expected: ひとい
--- SKIP MeCab では「ひとり」と読み推定してくれないため

=== 18歳 -> 18ちゃい
--- input:    18歳
--- expected: 18ちゃい

=== 奥さん -> おくたん
--- input:    奥さんです
--- expected: おくたんれちゅ

=== レディ -> レレイ
--- input:    レディなのよ
--- expected: レレイなのよさ

=== レディー? -> レレイ
--- input:    レディーなのよ
--- expected: レレイなのよさ

=== レディー? -> レレイ
--- input:    レディーーなのよ
--- expected: レレイーなのよさ

=== レディ -> レレイ
--- input:    ピノコはレディです
--- expected: ピノコはレレイれちゅ

=== キャンディー? -> キャンレー
--- input:    キャンディ
--- expected: キャンレー

=== キャンディー? -> キャンレー
--- input:    キャンディー
--- expected: キャンレー

=== キャンディー? -> キャンレー
--- input:    キャンディーー
--- expected: キャンレーー

=== アクセサリ -> アクチェチャイ
--- input:    アクセサリ
--- expected: アクチェチャイ

=== アクセサリー -> アクチェチャイー
--- input:    アクセサリー
--- expected: アクチェチャイー

=== 了解 -> アラマンチュ
--- input:    了解
--- expected: アラマンチュ
--- SKIP この解釈はアニメ版限定なので

=== そりゃあ -> そやァ
--- input:    そりゃあ
--- expected: そやァ

=== そりゃー -> そやァ
--- input:    そりゃー
--- expected: そやァ

=== 〜の -> 〜のよさ
--- input:    行くの
--- expected: 行くのよさ

=== 〜の! -> 〜のよさ!
--- input:    行くの!
--- expected: 行くのよさ!

=== 〜の! -> 〜のよさ!
--- input:    行くの!
--- expected: 行くのよさ!
--- SKIP 「の」が名詞扱いになるため

=== 〜の。 -> 〜のよさ。
--- input:    行くの。
--- expected: 行くのよさ。

=== 〜のよ -> 〜のよさ
--- input:    いいじゃないのよ
--- expected: いいじゃないのよさ

=== 〜のよ+半角スペース -> 〜のよさ+半角スペース
--- input eval
"いいじゃないのよ "
--- expected eval
"いいじゃないのよさ "

=== 〜のよ+全角スペース -> 〜のよさ+全角スペース
--- input eval
"いいじゃないのよ "
--- expected eval
"いいじゃないのよさ "

=== 〜のよ・・ -> 〜のよさ・・
--- input:    いいじゃないのよ・・
--- expected: いいじゃないのよさ・・

=== 〜のよ・・ -> 〜のよさ・・
--- input:    いいじゃないのよ・・
--- expected: いいじゃないのよさ・・

=== 〜のよ‥ -> 〜のよさ‥
--- input:    いいじゃないのよ‥
--- expected: いいじゃないのよさ‥

=== 〜のよ… -> 〜のよさ…
--- input:    いいじゃないのよ…
--- expected: いいじゃないのよさ…

=== 〜のよ。 -> 〜のよさ。
--- input:    いいじゃないのよ。
--- expected: いいじゃないのよさ。

=== 〜のよ. -> 〜のよさ.
--- input:    いいじゃないのよ.
--- expected: いいじゃないのよさ.

=== 〜のよ. -> 〜のよさ.
--- input:    いいじゃないのよ.
--- expected: いいじゃないのよさ.

=== 〜のよ  -> 〜のよさ 
--- input:    いいじゃないのよ 
--- expected: いいじゃないのよさ 

=== 生野 -> No のよさ
--- input:    生野
--- expected: 生野

=== の+形容詞 -> No のよさ
--- input:    どれくらいの高さ
--- expected: ろえくやいの高ちゃ

=== の+助動詞 -> No のよさ
--- input:    吐き気しかしないのだけど
--- expected: 吐き気ちかちないのらけよ

=== の+連体詞 -> No のよさ
--- input:    3セット目のあの流れ
--- expected: 3セット目のあの流え

=== の+動詞 -> No のよさ
--- input:    彼のやりすぎ
--- expected: かえのやいちゅぎ

=== の+副詞 -> No のよさ
--- input:    自分のそういうとこ
--- expected: 自分のそういうとこ

=== の+形状詞 -> No のよさ
--- input:    もののようで
--- expected: もののようれ

=== の+代名詞 -> No のよさ
--- input:    あれのそれ
--- expected: あえのそえ

=== の+接頭詞 -> No のよさ
--- input:    トロンボーンの主旋律
--- expected: トヨンボーンのちゅせんいつ

=== の+接頭詞 -> No のよさ
--- input:    ただのおでぶちゃん
--- expected: たらのおれぶちゃん

=== 名詞+の+接頭詞 -> No のよさ
--- input:    ただのおでぶちゃん
--- expected: たらのおれぶちゃん

=== 名詞+の+スペース -> No のよさ
--- input:    Perlの Perl
--- expected: Perlの Perl

=== 名詞+の -> No のよさ
--- input:    Perlの
--- expected: Perlの

=== の+終端じゃない記号 -> No のよさ
--- input:    Perlの「ハッシュ」
--- expected: Perlの「ハッチュ」

=== 〜だよ -> 〜だのよ
--- input:    ゴキブリ以下だよ
--- expected: ゴキブイ以下だのよ

=== 〜だよ! -> 〜だのよ!
--- input:    ゴキブリ以下だよ!
--- expected: ゴキブイ以下だのよ!

=== 〜だよ\n -> 〜だのよ\n
--- input eval
"ゴキブリ以下だよ\n"
--- expected eval
"ゴキブイ以下だのよ\n"

=== 〜だよ\t -> 〜だのよ\t
--- input eval
"ゴキブリ以下だよ\t"
--- expected eval
"ゴキブイ以下だのよ\t"

=== 〜ね -> 〜ね
--- input:    気をつけてね
--- expected: 気をつけてね

=== 〜よ -> 〜よのさ
--- input:    並んでる人よ
--- expected: なやんれゆ人よのさ

=== 〜よ -> 〜よのさ
--- input:    しっかりやりましょうよ
--- expected: ちっかいやいまちょうよのさ

=== 〜よね -> 〜よのね
--- input:    きれいよね
--- expected: きえいよのね

=== 〜わ -> 〜わのよ
--- input:    書くわ
--- expected: 書くわのよ
--- SKIP 「わのね」か「わのよ」かはランダム

=== 〜わ -> 〜わのね
--- input:    失敬しちゃうわ
--- expected: ちっけいしちゃうわのね
--- SKIP 「わのね」か「わのよ」かはランダム

=== 〜わよ -> 〜わのよ
--- input:    するわよ
--- expected: ちゅゆわのよ

=== 〜わね -> 〜わのね
--- input:    失敬しちゃうわね
--- expected: ちっけいしちゃうわのね

=== 〜なのよね -> 〜なのよのね
--- input:    ピノコなのよね
--- expected: ピノコなのよのね

=== 〜のよ -> 〜のよさ
--- input:    なんのよ
--- expected: なんのよさ

=== 〜のよね -> 〜のよね
--- input:    したかったのよね
--- expected: ちたかったのよね

=== 〜したらどうなの -> 〜ちたやろうなのよさ
--- input:    ほげほげしたらどうなの
--- expected: ほげほげちたやろうなのよさ

=== wwwwwwwwwwww
--- input:    思ってるよw
--- expected: 思ってゆよのさw

=== wwwwwwwwwwww
--- input:    思ってるよww
--- expected: 思ってゆよのさww

=== 固有名詞
--- input:    テレビ愛知
--- expected: テエビ愛知

=== ヶ
--- input:    一ヶ月
--- expected: 一ヶ月

=== ヶ
--- input:    桐ヶ谷
--- expected: きいヶ谷

=== ケ
--- input:    桐ケ谷
--- expected: きいがや

=== ヵ
--- input:    一ヵ月
--- expected: 一ヵ月

=== 3
--- input:    中3
--- expected: ちゅうちゃん

=== 月
--- input:    3月
--- expected: ちゃんがつ

=== LOW LINE
--- input:    研_3月
--- expected: 研_3月

=== FULL WIDTH LOW LINE
--- input:    研_3月
--- expected: 研_3月

=== 長音化阻止
--- input:    言い聞かせる
--- expected: 言い聞かせゆ

=== づ -> じゅ
--- input:    顔を近づけて
--- expected: 顔を近じゅけて