The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 45;

require_ok('SSN::Validate');

my $ssn = new SSN::Validate;

my %ssns = (
    '001-34-2283' => [ 1, 'NH' ],
    '004-34-2283' => [ 1, 'ME' ],
    '044-56-2283' => [ 1, 'CT' ],
    '212-21-2283' => [ 1, 'MD' ],
    '223789983'   => [ 1, 'VA' ],
    '144563349'   => [ 1, 'NJ' ],
    '123 56 3749' => [ 1, 'NY' ],
    '122 66 3749' => [ 1, 'NY' ],
    '801-33-2245' => [ 1, '??' ],
    '580-22-1345' => [ 1, 'VI' ],
    '258-22-1345' => [ 1, 'GA' ],
    '612-40-3145' => [ 1, '??' ],
    '764-32-3145' => [ 1, '??' ],
    '586-22-7722' => [ 1, '??' ],
    '710-18-7722' => [ 1, 'RB' ],
    '234-18-7722' => [ 1, 'WV' ],
    '250-28-2738' => [ 1, 'SC' ],
    '411-11-2228' => [ 1, 'TN' ],
    '528-11-2228' => [ 1, 'UT' ],
    '585-18-1234' => [ 1, 'NM' ],
    '537-55-1234' => [ 1, 'WA' ],
    '681-18-1234' => [ 1, '??' ],
);

for my $num ( sort { $a cmp $b } keys %ssns ) {
    ok( $ssn->valid_ssn($num) == $ssns{$num}->[0], "valid_ssn($num)" );
    ok( $ssn->get_state($num) eq $ssns{$num}->[1], "get_state($num)" );
}