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::More;
use Test::Exception;
use t::Utils;

use Acme::PrettyCure;

# skip warnings
binmode(Test::More->builder->$_, ':utf8') for qw/failure_output output todo_output/;

my ($saki, $mai) = Acme::PrettyCure->girls('SplashStar');

isa_ok $saki, 'Acme::PrettyCure::Girl::CureBloom';
isa_ok $mai,  'Acme::PrettyCure::Girl::CureEgret';

throws_ok { $saki->transform } qr/ラピ/, 'SSも単独変身不可能';
throws_ok { $saki->transform($saki) } qr/ラピ/, '舞以外とも変身は出来ない';

throws_ok { $mai->transform } qr/チョピ/, '初代は単独変身不可能';
throws_ok { $mai->transform($mai) } qr/チョピ/, '咲以外とも変身は出来ない';

is $saki->name, '日向咲';
is $mai->name, '美翔舞';

is_output sub { $saki->transform($mai); }, <<EOS, '変身時の台詞';
輝く金の花、キュアブルーム!
きらめく銀の翼、キュアイーグレット!
ふたりはプリキュア!
聖なる泉を汚す者よ!
アコギな真似はおやめなさい!
EOS

is $saki->name, 'キュアブルーム';
is $mai->name, 'キュアイーグレット';

$saki = $saki->powerup;
$mai = $mai->powerup;

isa_ok $saki, 'Acme::PrettyCure::Girl::CureBloom';
isa_ok $mai,  'Acme::PrettyCure::Girl::CureEgret';

is $saki->name, 'キュアブライト';
is $mai->name, 'キュアウィンディ';

done_testing;