107 lines
1.1 KiB
Perl
107 lines
1.1 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
package Test::Deep::Cmp;
|
|
|
|
use overload
|
|
'&' => \&make_all,
|
|
'|' => \&make_any,
|
|
'""' => \&string,
|
|
fallback => 1,
|
|
;
|
|
|
|
use Scalar::Util ();
|
|
|
|
sub import
|
|
{
|
|
my $pkg = shift;
|
|
|
|
my $callpkg = caller();
|
|
if ($callpkg =~ /^Test::Deep::/)
|
|
{
|
|
no strict 'refs';
|
|
|
|
push @{$callpkg."::ISA"}, $pkg;
|
|
}
|
|
}
|
|
|
|
sub new
|
|
{
|
|
my $pkg = shift;
|
|
|
|
my $self = bless {}, $pkg;
|
|
|
|
$self->init(@_);
|
|
return $self;
|
|
}
|
|
|
|
sub init
|
|
{
|
|
}
|
|
|
|
sub make_all
|
|
{
|
|
my ($e1, $e2) = @_;
|
|
|
|
return Test::Deep::all($e1, $e2);
|
|
}
|
|
|
|
sub make_any
|
|
{
|
|
my ($e1, $e2) = @_;
|
|
|
|
return Test::Deep::any($e1, $e2);
|
|
}
|
|
|
|
sub cmp
|
|
{
|
|
my ($a1, $a2, $rev) = @_;
|
|
|
|
($a1, $a2) = ($a2, $a1) if $rev;
|
|
|
|
return (overload::StrVal($a1) cmp overload::StrVal($a2));
|
|
}
|
|
|
|
sub string
|
|
{
|
|
my $self = shift;
|
|
|
|
return overload::StrVal($self);
|
|
}
|
|
|
|
sub render_stack
|
|
{
|
|
my $self = shift;
|
|
my $var = shift;
|
|
|
|
return $var;
|
|
}
|
|
|
|
sub renderExp
|
|
{
|
|
my $self = shift;
|
|
|
|
return $self->renderGot($self->{val});
|
|
}
|
|
|
|
sub renderGot
|
|
{
|
|
my $self = shift;
|
|
|
|
return Test::Deep::render_val(@_);
|
|
}
|
|
|
|
sub reset_arrow
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
sub data
|
|
{
|
|
my $self = shift;
|
|
|
|
return $Test::Deep::Stack->getLast;
|
|
}
|
|
|
|
1;
|