diff options
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm')
-rwxr-xr-x | Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm b/Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm new file mode 100755 index 00000000000..11f252cd5f8 --- /dev/null +++ b/Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm @@ -0,0 +1,51 @@ +use strict; +use warnings; + +package Test::Deep::Shallow; + +use Test::Deep::Cmp; + +use Scalar::Util qw( refaddr ); + +sub init +{ + my $self = shift; + + my $val = shift; + $self->{val} = $val; +} + +sub descend +{ + my $self = shift; + + my $got = shift; + my $exp = $self->{val}; + + my $ok; + + if (!defined $got and !defined $exp) + { + $ok = 1; + } + elsif (defined $got xor defined $exp) + { + $ok = 0; + } + elsif (ref $got and ref $exp) + { + $ok = refaddr($got) == refaddr($exp); + } + elsif (ref $got xor ref $exp) + { + $ok = 0; + } + else + { + $ok = $got eq $exp; + } + + return $ok; +} + +1; |