table of contents
other versions
- stretch 0.000063-1
- testing 0.000118-1
- stretch-backports 0.000118-1~bpo9+1
- unstable 0.000118-1
Test2::Compare::Custom(3pm) | User Contributed Perl Documentation | Test2::Compare::Custom(3pm) |
NAME¶
Test2::Compare::Custom - Custom field check for comparisons.DESCRIPTION¶
Sometimes you want to do something complicated or unusual when validating a field nested inside a deep data structure. You could pull it out of the structure and test it separately, or you can use this to embed the check. This provides a way for you to write custom checks for fields in deep comparisons.SYNOPSIS¶
my $cus = Test2::Compare::Custom->new( name => 'IsRef', operator => 'ref(...)', code => sub { my ($got, $exists, $operator, $name) = @_; return ref($got) ? 1 : 0; }, ); # Pass is( { a => 1, ref => {}, b => 2 }, { a => 1, ref => $cus, b => 2 }, "This will pass" ); # Fail is( {a => 1, ref => 'notref', b => 2}, {a => 1, ref => $cus, b => 2}, "This will fail" );
ARGUMENTS¶
Your custom sub will be passed 4 arguments:code => sub { my ($got, $exists, $operator, $name) = @_; return ref($got) ? 1 : 0; },
$_ is also localized to $got to make it easier for those who need to use regexes.
- $got
- $_
- The value to be checked.
- $exists
- This will be a boolean. This will be true if $got exists at all. If $exists is false then it means $got is not simply undef, but doesn't exist at all (think checking the value of a hash key that does not exist).
- $operator
- The operator specified at construction.
- $name
- The name provided at construction.
METHODS¶
- $code = $cus->code
- Returns the coderef provided at construction.
- $name = $cus->name
- Returns the name provided at construction.
- $op = $cus->operator
- Returns the operator provided at construction.
- $bool = $cus->verify(got => $got, exists => $bool)
SOURCE¶
The source code repository for Test2-Suite can be found at http://github.com/Test-More/Test2-Suite/.MAINTAINERS¶
- Chad Granum <exodist@cpan.org>
AUTHORS¶
- Chad Granum <exodist@cpan.org>
COPYRIGHT¶
Copyright 2016 Chad Granum <exodist@cpan.org>.This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2016-12-18 | perl v5.24.1 |