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(...)'
,
stringify_got
=> 1,
code
=>
sub
{
my
%args
=
@_
;
return
$args
{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 in a hash:
code
=>
sub
{
my
%args
=
@_
;
# provides got, exists, operator, name
return
ref
(
$args
{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. Ifexists
is false then it meansgot
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.
- $stringify = $cus->stringify_got
-
Returns the stringify_got flag provided at construction.
- $bool = $cus->verify(got => $got, exists => $bool)
SOURCE
The source code repository for Test2-Suite can be found at https://github.com/Test-More/test-more/.
MAINTAINERS
AUTHORS
COPYRIGHT
Copyright 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.
See http://dev.perl.org/licenses/