Provided by: libtest2-suite-perl_0.000125-1_all bug


       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

       @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


       Chad Granum <>


       Chad Granum <>


       Copyright 2018 Chad Granum <>.

       This program is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.