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