| 1 | use strict; |
|---|
| 2 | use warnings; |
|---|
| 3 | use utf8; |
|---|
| 4 | use Encode::JP::Mobile::Character; |
|---|
| 5 | use Test::More tests => 24; |
|---|
| 6 | |
|---|
| 7 | # docomo |
|---|
| 8 | { |
|---|
| 9 | my $char = Encode::JP::Mobile::Character->from_unicode(0xE63E); |
|---|
| 10 | is $char->name, "晴れ"; |
|---|
| 11 | ok Encode::is_utf8($char->name), 'flagged'; |
|---|
| 12 | is $char->unicode_hex, "E63E"; |
|---|
| 13 | is $char->number, 1; |
|---|
| 14 | is $char->fallback_name('I'), undef; |
|---|
| 15 | } |
|---|
| 16 | |
|---|
| 17 | # docomo ext |
|---|
| 18 | { |
|---|
| 19 | my $char = Encode::JP::Mobile::Character->from_unicode(0xE757); |
|---|
| 20 | is $char->number, "拡76", 'docomo ext'; |
|---|
| 21 | ok Encode::is_utf8($char->number); |
|---|
| 22 | } |
|---|
| 23 | |
|---|
| 24 | { |
|---|
| 25 | is(Encode::JP::Mobile::Character->from_number(carrier => 'I', number => "拡76")->unicode_hex, 'E757'); |
|---|
| 26 | } |
|---|
| 27 | |
|---|
| 28 | # KDDI |
|---|
| 29 | { |
|---|
| 30 | my $char = Encode::JP::Mobile::Character->from_unicode(0xECA2); |
|---|
| 31 | is $char->fallback_name('I'), "(>3<)"; |
|---|
| 32 | is $char->fallback_name('H'), "(>3<)", "airhphone is same as docomo"; |
|---|
| 33 | ok Encode::is_utf8($char->fallback_name('I')); |
|---|
| 34 | is $char->name, "チュー2", "What's name for 0xECA2"; |
|---|
| 35 | ok Encode::is_utf8($char->name); |
|---|
| 36 | is $char->number, 455, 'number'; |
|---|
| 37 | } |
|---|
| 38 | |
|---|
| 39 | # KDDI from number. |
|---|
| 40 | { |
|---|
| 41 | is(Encode::JP::Mobile::Character->from_number(carrier => 'E', number => 455)->unicode_hex, 'ECA2'); |
|---|
| 42 | eval { Encode::JP::Mobile::Character->from_number(carrier => 'E', number => 1000000) }; like $@, qr{^unknown number: 1000000 for kddi}; |
|---|
| 43 | } |
|---|
| 44 | |
|---|
| 45 | # softbank from number |
|---|
| 46 | is(Encode::JP::Mobile::Character->from_number(carrier => 'V', number => 1)->unicode_hex, 'E001'); |
|---|
| 47 | |
|---|
| 48 | # carrier |
|---|
| 49 | my $map = +{ |
|---|
| 50 | 0xE532 => 'V', |
|---|
| 51 | 0xECE7 => 'E', |
|---|
| 52 | 0xE6E5 => 'I', |
|---|
| 53 | }; |
|---|
| 54 | while (my ($unicode, $carrier) = each %$map) { |
|---|
| 55 | is(Encode::JP::Mobile::Character->from_unicode($unicode)->carrier, $carrier, "carrier $carrier"); |
|---|
| 56 | } |
|---|
| 57 | |
|---|
| 58 | # validation |
|---|
| 59 | eval { Encode::JP::Mobile::Character->from_number(number => 3) }; like $@, qr{^missing carrier}, 'validation'; |
|---|
| 60 | eval { Encode::JP::Mobile::Character->from_number(carrier => 'E') }; like $@, qr{^missing number}, 'validation'; |
|---|
| 61 | eval { Encode::JP::Mobile::Character->from_unicode(0xE63E)->fallback_name }; like $@, qr{^missing carrier}, 'validation'; |
|---|
| 62 | eval { Encode::JP::Mobile::Character->from_unicode(0xE63E)->fallback_name('G') }; like $@, qr{^invalid carrier name\(I or E or V\)}, 'validation'; |
|---|
| 63 | |
|---|