use strict;
use warnings;
use Encode;
use Encode::JP::Mobile ':props';
use Test::More;
eval { require YAML };
plan skip_all => $@ if $@;
my $dat = YAML::LoadFile("dat/kddi-table.yaml");
plan tests => 20 * @$dat;
for my $r (@$dat) {
my $sjis = pack "H*", $r->{sjis};
my $jis = "\e\$B" . pack("H*", $r->{email_jis}) . "\e(B";
my $unicode = chr hex $r->{unicode};
my $auto = chr hex $r->{unicode_auto};
is decode("x-sjis-kddi-cp932-raw", $sjis), $unicode, $r->{unicode};
is encode("x-sjis-kddi-cp932-raw", $unicode), $sjis, $r->{unicode};
is encode("x-sjis-kddi-auto-raw", $auto), $sjis, $r->{unicode};
is decode("x-sjis-kddi-auto-raw", $sjis), $auto, $r->{unicode};
is decode("x-iso-2022-jp-kddi", $jis), $unicode, $r->{unicode};
is encode("x-iso-2022-jp-kddi", $unicode), $jis, $r->{unicode};
is decode("x-iso-2022-jp-kddi-auto", $jis), $auto, $r->{unicode};
is encode("x-iso-2022-jp-kddi-auto", $auto), $jis, $r->{unicode};
# is decode("x-utf8-kddi", encode("x-utf8-kddi", $auto)), $auto, $r->{unicode};
my $x = encode("x-utf8-kddi", $auto);
Encode::_utf8_on($x);
is $x, $auto, $r->{unicode};
if ($unicode =~ /\p{InKDDISoftBankConflicts}/) {
isnt decode('x-utf8-kddi', encode('x-utf8-kddi', $unicode)), $unicode, $r->{unicode};
} else {
eval { encode("x-utf8-kddi", $unicode, Encode::FB_CROAK) };
like $@, qr{does not map to x-utf8-kddi}, "$r->{unicode} does not map to x-utf8-kddi";
}
ok $unicode =~ /^\p{InKDDIPictograms}+$/;
ok $unicode =~ /^\p{InKDDICP932Pictograms}+$/;
ok $unicode !~ /^\p{InKDDIAutoPictograms}+$/;
ok $unicode =~ /^\p{InMobileJPPictograms}+$/;
ok $unicode !~ /^\p{InDoCoMoPictograms}+$/;
ok $auto =~ /^\p{InKDDIPictograms}+$/;
ok $auto =~ /^\p{InKDDIAutoPictograms}+$/;
ok $auto !~ /^\p{InKDDICP932Pictograms}+$/;
ok $auto =~ /^\p{InMobileJPPictograms}+$/;
ok $auto !~ /^\p{InDoCoMoPictograms}+$/;
}