1use Test::More qw[no_plan]; 2use strict; 3use FindBin; 4 5use lib qw[lib ../lib]; 6 7BEGIN { 8 use_ok 'Parse::PhoneNumber'; 9} 10 11my $p = Parse::PhoneNumber->new; 12 13isa_ok $p, 'Parse::PhoneNumber'; 14 15my @good = qw( 16 810-555-9841 17 1-517-842-0924 18 8927908123 19 12480982374 20 +1.342.4234.1501 21 1+823.342.1525 22); 23 24my @bad = qw( 25 1 26 1------------- 27 324-2399 28 234.2381 29 23 30 14876 31 82-231.4198 32); 33 34 35 36for (@good) { 37 my $number = $p->parse( number => $_, assume_us => 1 ); 38 if ( $number ) { 39 isa_ok $number, 'Parse::PhoneNumber::Number'; 40 is $number->cc, 1, "Proper CC code: ".$number->cc; 41 is $number->orig, $_, "Original number: ".$number->orig; 42 like $number->num, qr/^\d+$/, "Original matches: $_"; 43 like $number->opensrs, qr/\+\d+\.\d+(?:x\d+)?/, "Opensrs syntax correct: ".$number->opensrs; 44 like $number->human, qr/\+\d+\s+\d+(?:x\d+)?/, "Human readable format: ".$number->human; 45 if ( $number->ext ) { 46 like $number->ext, qr/\d+/, "Extension: ".$number->ext; 47 } else { 48 is $number->ext, undef, "No extension is undef"; 49 } 50 } else { 51 fail("$_ is good"); 52 diag("$_ did not parse, should"); 53 } 54} 55 56for (@bad) { 57 my $number = $p->parse( number => $_, assume_us => 1 ); 58 59 if ($number) { 60 fail("$_ is bad"); 61 diag("$_ parsed, should not"); 62 } else { 63 ok("$_ is bad"); 64 } 65} 66 67 68__DATA__ 69 70 71