summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm')
-rwxr-xr-xMaster/tlpkg/tlperl0/lib/Test/Deep/Shallow.pm51
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;