summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Test/Deep/Any.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Test/Deep/Any.pm')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test/Deep/Any.pm65
1 files changed, 65 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Test/Deep/Any.pm b/Master/tlpkg/tlperl/lib/Test/Deep/Any.pm
new file mode 100755
index 00000000000..2485d9b87f9
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Test/Deep/Any.pm
@@ -0,0 +1,65 @@
+use strict;
+use warnings;
+
+package Test::Deep::Any;
+
+use Test::Deep::Cmp;
+
+use overload
+ '&' => \&add,
+ fallback => 1,
+;
+
+sub init
+{
+ my $self = shift;
+
+ my @list = map {Test::Deep::wrap($_)} @_;
+
+ $self->{val} = \@list;
+}
+
+sub descend
+{
+ my $self = shift;
+ my $got = shift;
+
+ foreach my $cmp (@{$self->{val}})
+ {
+ return 1 if Test::Deep::eq_deeply_cache($got, $cmp);
+ }
+
+ return 0;
+}
+
+sub diagnostics
+{
+ my $self = shift;
+ my ($where, $last) = @_;
+
+ my $expect = $self->{val};
+
+ my $got = $self->renderGot($last->{got});
+ my $things = join(", ", map {$_->renderExp} @$expect);
+
+ my $diag = <<EOM;
+Comparing $where with Any
+got : $got
+expected : Any of ( $things )
+EOM
+
+ $diag =~ s/\n+$/\n/;
+ return $diag;
+}
+
+sub add
+{
+ my $self = shift;
+ my $expect = shift;
+
+ push(@{$self->{val}}, Test::Deep::wrap($expect));
+
+ return $self;
+}
+
+1;