.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.el \{\
. de IX
..
.\}
.\" ========================================================================
.\"
.IX Title "Test2::Compare::Base 3"
.TH Test2::Compare::Base 3 "2019-05-18" "perl v5.10.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Test2::Compare::Base \- Base class for comparison classes.
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
All comparison classes for Test2::Compare should inherit from this base class.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 3
\& package Test2::Compare::MyCheck;
\& use strict;
\& use warnings;
\&
\& use base \*(AqTest2::Compare::Base\*(Aq;
\& use Test2::Util::HashBase qw/stuff/;
\&
\& sub name { \*(AqSTUFF\*(Aq }
\&
\& sub operator {
\& my $self = shift;
\& my ($got) = @_;
\& return \*(Aqeq\*(Aq;
\& }
\&
\& sub verify {
\& my $self = shift;
\& my $params = @_;
\&
\& # Always check if $got exists! This method must return false if no
\& # value at all was received.
\& return 0 unless $params{exists};
\&
\& my $got = $params{got};
\&
\& # Returns true if both values match. This includes undef, 0, and other
\& # false\-y values!
\& return $got eq $self\->stuff;
\& }
.Ve
.SH "METHODS"
.IX Header "METHODS"
Some of these must be overridden, others can be.
.ie n .IP "$dclass = $check\->delta_class" 4
.el .IP "\f(CW$dclass\fR = \f(CW$check\fR\->delta_class" 4
.IX Item "$dclass = $check->delta_class"
Returns the delta subclass that should be used. By default
Test2::Compare::Delta is used.
.ie n .IP "@deltas = $check\->deltas(id => $id, exists => $bool, got => $got, convert => \e&convert, seen => \e%seen)" 4
.el .IP "\f(CW@deltas\fR = \f(CW$check\fR\->deltas(id => \f(CW$id\fR, exists => \f(CW$bool\fR, got => \f(CW$got\fR, convert => \e&convert, seen => \e%seen)" 4
.IX Item "@deltas = $check->deltas(id => $id, exists => $bool, got => $got, convert => &convert, seen => %seen)"
Should return child deltas.
.ie n .IP "@lines = $check\->got_lines($got)" 4
.el .IP "\f(CW@lines\fR = \f(CW$check\fR\->got_lines($got)" 4
.IX Item "@lines = $check->got_lines($got)"
This is your chance to provide line numbers for errors in the \f(CW$got\fR
structure.
.ie n .IP "$op = $check\->\fIoperator()\fR" 4
.el .IP "\f(CW$op\fR = \f(CW$check\fR\->\fIoperator()\fR" 4
.IX Item "$op = $check->operator()"
.PD 0
.ie n .IP "$op = $check\->operator($got)" 4
.el .IP "\f(CW$op\fR = \f(CW$check\fR\->operator($got)" 4
.IX Item "$op = $check->operator($got)"
.PD
Returns the operator that was used to compare the check with the received data
in \f(CW$got\fR. If there was no value for got then there will be no arguments,
undef will only be an argument if undef was seen in \f(CW$got\fR. This is how you
can tell the difference between a missing value and an undefined one.
.ie n .IP "$bool = $check\->verify(id => $id, exists => $bool, got => $got, convert => \e&convert, seen => \e%seen)" 4
.el .IP "\f(CW$bool\fR = \f(CW$check\fR\->verify(id => \f(CW$id\fR, exists => \f(CW$bool\fR, got => \f(CW$got\fR, convert => \e&convert, seen => \e%seen)" 4
.IX Item "$bool = $check->verify(id => $id, exists => $bool, got => $got, convert => &convert, seen => %seen)"
Return true if there is a shallow match, that is both items are arrayrefs, both
items are the same string or same number, etc. This should not recurse, as deep
checks are done in \f(CW\*(C`$check\->deltas()\*(C'\fR.
.ie n .IP "$name = $check\->name" 4
.el .IP "\f(CW$name\fR = \f(CW$check\fR\->name" 4
.IX Item "$name = $check->name"
Get the name of the check.
.ie n .IP "$display = $check\->render" 4
.el .IP "\f(CW$display\fR = \f(CW$check\fR\->render" 4
.IX Item "$display = $check->render"
What should be displayed in a table for this check, usually the name or value.
.ie n .IP "$delta = $check\->run(id => $id, exists => $bool, got => $got, convert => \e&convert, seen => \e%seen)" 4
.el .IP "\f(CW$delta\fR = \f(CW$check\fR\->run(id => \f(CW$id\fR, exists => \f(CW$bool\fR, got => \f(CW$got\fR, convert => \e&convert, seen => \e%seen)" 4
.IX Item "$delta = $check->run(id => $id, exists => $bool, got => $got, convert => &convert, seen => %seen)"
This is where the checking is done, first a shallow check using
\&\f(CW\*(C`$check\->verify\*(C'\fR, then checking \f(CW\*(C`$check\->deltas()\*(C'\fR. \f(CW\*(C`\e%seen\*(C'\fR is used
to prevent cycles.
.SH "SOURCE"
.IX Header "SOURCE"
The source code repository for Test2\-Suite can be found at
\&\fIhttps://github.com/Test\-More/Test2\-Suite/\fR.
.SH "MAINTAINERS"
.IX Header "MAINTAINERS"
.IP "Chad Granum <exodist@cpan.org>" 4
.IX Item "Chad Granum <exodist@cpan.org>"
.SH "AUTHORS"
.IX Header "AUTHORS"
.PD 0
.IP "Chad Granum <exodist@cpan.org>" 4
.IX Item "Chad Granum <exodist@cpan.org>"
.PD
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright 2018 Chad Granum <exodist@cpan.org>.
.PP
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
.PP
See \fIhttp://dev.perl.org/licenses/\fR
Copyright 2K16 - 2K18 Indonesian Hacker Rulez