The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More tests => 14;
use Encode::JP::Mobile ':props';

ok InKDDISoftBankConflicts();
ok InKDDICP932Pictograms();
ok InKDDIAutoPictograms();
ok InKDDIPictograms();

ok "\x{E501}" =~ /\p{InKDDISoftBankConflicts}/;
ok "\x{E44C}" !~ /\p{InKDDISoftBankConflicts}/;
ok "\x{E501}" =~ /\p{InKDDICP932Pictograms}/;
ok "\x{F0FC}" !~ /\p{InKDDICP932Pictograms}/;
ok "\x{F0FC}" =~ /\p{InKDDIAutoPictograms}/;
ok "\x{E501}" !~ /\p{InKDDIAutoPictograms}/;
ok "\x{F0FC}" =~ /\p{InKDDIPictograms}/;
ok "\x{E501}" =~ /\p{InKDDIPictograms}/;

my $possibly_kddi = "\x{E589} \x{E501}"; # E589 is only in KDDI
is guess_carrier($possibly_kddi), "kddi";

my $possibly_softbank = "\x{E44C} \x{E501}"; # E44C is only in SoftBank
is guess_carrier($possibly_softbank), "softbank";

sub guess_carrier {
    my $string = shift;
    if ($string =~ /\p{InKDDISoftBankConflicts}/) {
        eval { Encode::encode("x-sjis-kddi-cp932-raw", $string, Encode::FB_CROAK) };
        if ($@) {
            return 'softbank';
        } else {
            return 'kddi';
        }
    }

    return;
}