The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 108;
use Test::Requires qw( Number::Phone );

my %test_number = (
    '+810112345678'     => '+81 01 12345678',
    '+810912012345678'  => '+81 09120 12345678',
    '+816033001234'     => '+81 60 33001234',
    '+81120000123'      => '+81 120 000123',
    '+81112001234'      => '+81 11 2001234',
    '+815010001234'     => '+81 50 10001234',
    '+818010012345'     => '+81 80 10012345',
    '+812046012345'     => '+81 20 46012345',
    '+817050112345'     => '+81 70 50112345',
    '+81990500123'      => '+81 990 500123',
    '+81570000123'      => '+81 570 000123',
);

for my $number (keys %test_number) {
    my $phone = Number::Phone->new($number);
    ok($phone->is_valid, "$number is_valid");
    ok(defined $phone->is_mobile, "$number is_mobile");
    ok(defined $phone->is_pager, "$number is_pager");
    ok(defined $phone->is_ipphone, "$number is_ipphone");
    ok(defined $phone->is_tollfree, "$number is_tollfree");
    ok(defined $phone->is_specialrate, "$number is_specialrate");
    is($phone->country_code, 81, "$number country_code");
    is($phone->format, $test_number{$number}, "$number format")
}

my @unsupported_methods = qw(
    is_allocated
    is_in_use
    is_geographic
    is_fixed_line
    is_isdn
    is_adult
    is_personal
    is_corporate
    is_government
    is_international
    is_network_service
    regulator
    areacode
    areaname
    location
    subscriber
    operator
    type
    country
    translates_to
);

my $phone = Number::Phone->new('+810112345678');
for my $method (@unsupported_methods) {
    is($phone->$method(), undef, "$method is unsupported");
}