Test2::Compare::Base - Base class for comparison classes.
All comparison classes for Test2::Compare should inherit from this base class.
package Test2::Compare::MyCheck;
use strict;
use warnings;
use base 'Test2::Compare::Base';
use Test2::Util::HashBase qw/stuff/;
sub name { 'STUFF' }
sub operator {
my $self = shift;
my ($got) = @_;
return 'eq';
}
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;
}
Some of these must be overridden, others can be.
- $dclass = $check->delta_class
- Returns the delta subclass that should be used. By default
Test2::Compare::Delta is used.
- @deltas = $check->deltas(id => $id, exists => $bool, got =>
$got, convert => \&convert, seen => \%seen)
- Should return child deltas.
- @lines = $check->got_lines($got)
- This is your chance to provide line numbers for errors in the
$got structure.
- $op = $check->operator()
- $op = $check->operator($got)
- Returns the operator that was used to compare the check with the received
data in $got. If there was no value for got then
there will be no arguments, undef will only be an argument if undef was
seen in $got. This is how you can tell the
difference between a missing value and an undefined one.
- $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
"$check->deltas()".
- $name = $check->name
- Get the name of the check.
- $display = $check->render
- What should be displayed in a table for this check, usually the name or
value.
- $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
"$check->verify", then checking
"$check->deltas()".
"\%seen" is used to prevent cycles.
The source code repository for Test2-Suite can be found at
https://github.com/Test-More/Test2-Suite/.
- Chad Granum <exodist@cpan.org>
- Chad Granum <exodist@cpan.org>
Copyright 2018 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/