Test2::Compare::Base(3p) | Perl Programmers Reference Guide | Test2::Compare::Base(3p)

# NAME

Test2::Compare::Base - Base class for comparison classes.

# DESCRIPTION

All comparison classes for Test2::Compare should inherit from this base class.

# SYNOPSIS

        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;
        }

# METHODS

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.

# SOURCE

The source code repository for Test2-Suite can be found at https://github.com/Test-More/Test2-Suite/.

# MAINTAINERS

Chad Granum <exodist@cpan.org>

# AUTHORS

Chad Granum <exodist@cpan.org>

# COPYRIGHT

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/

2025-01-28 | perl v5.40.1