File: Any.pm

package info (click to toggle)
libtest-deep-perl 0.106-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 420 kB
  • ctags: 247
  • sloc: perl: 2,067; makefile: 2
file content (65 lines) | stat: -rw-r--r-- 840 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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;