Business-AT-SSN

 view release on metacpan or  search on metacpan

lib/Business/AT/SSN.pm  view on Meta::CPAN

    last unless defined $num[$i];
    $sum += $d * $num[$i++];
  }
  return 1 unless $sum%11 == $num[3];
}

sub get_dob {
  my $self = shift;
  my ($d, $m, $y) = $self->ssn =~ /^\d{4}(\d{2})(\d{2})(\d{2})$/;
  my $now = DateTime->now;
  # guess a year
  $y = (($now->year) - ($y + 1900) < 100) ? $y + 1900 : $y + 2000;
  try {
     my $dt = DateTime->new(year => $y, month => $m, day => $d);
     $self->date_of_birth( $dt );
     return 1;
  } catch {
    $self->clear_dob;
    return 0;
  };
}

t/basic.t  view on Meta::CPAN


$ssn_object->ssn('168025025');
is($ssn_object->is_valid, 0, sprintf("[%s] is too short", $ssn_object->ssn));

$ssn_object->ssn('1689250230');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));


$ssn_object->ssn('1688250208');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));
is($ssn_object->date_of_birth->year, 2008, sprintf("[%s] guessed a year", $ssn_object->ssn));

$ssn_object->ssn('w688250208');
is($ssn_object->is_valid, 0, sprintf("[%s] contains invalid character", $ssn_object->ssn));
is($ssn_object->error_messages->[0], 'Invalid characters', sprintf("[%s] error message [%s]", $ssn_object->ssn, $ssn_object->error_messages->[0]));

$ssn_object->ssn('2686251308');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));
is($ssn_object->date_of_birth, undef, sprintf("[%s] has no valid date", $ssn_object->ssn));

my $ssn_o = Business::AT::SSN->new(ssn => $ssn);



( run in 1.010 second using v1.01-cache-2.11-cpan-748bfb374f4 )