Data-Transpose

 view release on metacpan or  search on metacpan

t/transpose-validation-classes.t  view on Meta::CPAN

    my $field = shift;
    return $field
      if $field =~ m/\w/;
    return (undef, "Not a \\w");
}

my $vcr = Data::Transpose::Validator::Subrefs->new( \&custom_sub );

ok($vcr->is_valid("H!"), "Hi! is valid");
ok(!$vcr->is_valid("!"), "! is not");
is($vcr->error, "Not a \\w", "error displayed correctly");

sub validator_call {
    my $field = shift;
    if ( $field =~ /^[01]$/ ) {
        return 1;
    }
    else {
        return ( undef, "Not a boolean yes/no (1/0)" );
    }
}


$vcr = Data::Transpose::Validator::Subrefs->new(call => \&validator_call);
ok($vcr->is_valid(0), "0 is valid");
ok($vcr->is_valid(1), "1 is valid");
ok(!$vcr->is_valid(3), "3 is not valid");
is($vcr->error, "Not a boolean yes/no (1/0)");

undef $vcr;




print "Testing strings\n";

my $vs = Data::Transpose::Validator::String->new;

ok($vs->is_valid(" "), "Space is valid");
ok($vs->is_valid("\n"), "Newline is valid");
ok(!$vs->error, "No error");
ok(!$vs->is_valid([]), "Arrayref is not valid");
is($vs->error, "Not a string");
ok($vs->is_valid("0"), '"0" is valid');
ok(!$vs->is_valid(""), 'empty string is not valid');
is($vs->error, "Empty string");
ok(!$vs->is_valid(undef), "undef is invalid");
is($vs->error, "String is undefined");
undef $vs;

print "Testing urls\n";

my $vu = Data::Transpose::Validator::URL->new;

my @goodurls = ("http://google.com",
                "https://google.com",
                "https://this.doesnt-exists.but-is-valid.co.gov");

my @badurls = ("http://this@.doesnt@-exists.but-is-valid.co.gov",
               "__http://__",
               "http:\\google.com",
               "htp://google.com",
               "http:/google.com",
               "https:/google.com",
              );


foreach my $url (@goodurls) {
    ok($vu->is_valid($url), "$url is valid")
};

foreach my $url (@badurls) {
    ok(!$vu->is_valid($url), "$url is not valid");
    my @errors = $vu->error;
    is_deeply($errors[0], ["badurl",
                           "URL is not correct (the protocol is required)"],
              "Error code for $url is correct" . $vu->error);
}


my $vnr = Data::Transpose::Validator::NumericRange->new(
                                                        min => -90,
                                                        max => 90,
                                                       );

foreach my $val (-90, 10.5, 0, , 80.234, 90) {
    ok($vnr->is_valid($val), "$val is valid");
    ok(!$vnr->error, "No errors");
    if (my $error = $vnr->error) {
        print $error, "\n";
    }
}

foreach my $val (-91, -110.5, 1234, , 181.234, 90.1) {
    ok(!$vnr->is_valid($val), "$val is not valid");
    ok($vnr->error, "$val output an error: " . $vnr->error);
}


my $vnri = Data::Transpose::Validator::NumericRange->new(
                                                        min => 0,
                                                        max => 15,
                                                        integer => 1,
                                                       );

foreach my $val (0, 15, 8) {
    ok($vnri->is_valid($val), "$val is valid");
    ok(!$vnri->error, "No errors");
}

foreach my $val (-1, 0.5, 8.5, 14.99, 15.1) {
    ok(!$vnri->is_valid($val), "$val is not valid");
    ok($vnri->error, "Error returned: " . $vnri->error);
}

my $vset = Data::Transpose::Validator::Set->new(
                                                list => [qw/Yes No Maybe/],
                                                multiple => 0,
                                               );

foreach my $val ("Yes", "No", "Maybe") {



( run in 0.736 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )