| File: | local/lib/perl5/Test/Deep/Cmp.pm |
| Coverage: | 37.2% |
| line | stmt | bran | cond | sub | time | code |
|---|---|---|---|---|---|---|
| 1 | 2 2 2 | 5 3 34 | use strict; | |||
| 2 | 2 2 2 | 4 2 110 | use warnings; | |||
| 3 | ||||||
| 4 | package Test::Deep::Cmp; | |||||
| 5 | ||||||
| 6 | use overload | |||||
| 7 | 2 | 82 | '&' => \&make_all, | |||
| 8 | '|' => \&make_any, | |||||
| 9 | '""' => \&string, | |||||
| 10 | fallback => 1, | |||||
| 11 | 2 2 | 6 2 | ; | |||
| 12 | 2 2 2 | 5 2 148 | use Scalar::Util; | |||
| 13 | ||||||
| 14 | sub import | |||||
| 15 | { | |||||
| 16 | 16 | 14 | my $pkg = shift; | |||
| 17 | ||||||
| 18 | 16 | 25 | my $callpkg = caller(); | |||
| 19 | 16 | 46 | if ($callpkg =~ /^Test::Deep::/) | |||
| 20 | { | |||||
| 21 | 2 2 2 | 6 2 512 | no strict 'refs'; | |||
| 22 | ||||||
| 23 | 16 16 | 6 934 | push @{$callpkg."::ISA"}, $pkg; | |||
| 24 | } | |||||
| 25 | } | |||||
| 26 | ||||||
| 27 | sub new | |||||
| 28 | { | |||||
| 29 | 176 | 88 | my $pkg = shift; | |||
| 30 | ||||||
| 31 | 176 | 185 | my $self = bless {}, $pkg; | |||
| 32 | ||||||
| 33 | 176 | 197 | $self->init(@_); | |||
| 34 | 176 | 219 | return $self; | |||
| 35 | } | |||||
| 36 | ||||||
| 37 | sub init | |||||
| 38 | { | |||||
| 39 | } | |||||
| 40 | ||||||
| 41 | sub make_all | |||||
| 42 | { | |||||
| 43 | 0 | 0 | my ($e1, $e2) = @_; | |||
| 44 | ||||||
| 45 | 0 | 0 | if (Scalar::Util::blessed($e1) and $e1->isa("Test::Deep::All")) | |||
| 46 | { | |||||
| 47 | 0 | 0 | $e1->add($e2); | |||
| 48 | 0 | 0 | return $e1; | |||
| 49 | } | |||||
| 50 | elsif(Scalar::Util::blessed($e2) and $e2->isa("Test::Deep::All")) | |||||
| 51 | { | |||||
| 52 | 0 | 0 | $e2->add($e1); | |||
| 53 | 0 | 0 | return $e2; | |||
| 54 | } | |||||
| 55 | else | |||||
| 56 | { | |||||
| 57 | 0 | 0 | return Test::Deep::all($e1, $e2); | |||
| 58 | } | |||||
| 59 | } | |||||
| 60 | ||||||
| 61 | sub make_any | |||||
| 62 | { | |||||
| 63 | 0 | 0 | my ($e1, $e2) = @_; | |||
| 64 | ||||||
| 65 | 0 | 0 | if (Scalar::Util::blessed($e1) and $e1->isa("Test::Deep::Any")) | |||
| 66 | { | |||||
| 67 | 0 | 0 | $e1->add($e2); | |||
| 68 | 0 | 0 | return $e1; | |||
| 69 | } | |||||
| 70 | elsif(Scalar::Util::blessed($e2) and $e2->isa("Test::Deep::Any")) | |||||
| 71 | { | |||||
| 72 | 0 | 0 | $e2->add($e1); | |||
| 73 | 0 | 0 | return $e2; | |||
| 74 | } | |||||
| 75 | else | |||||
| 76 | { | |||||
| 77 | 0 | 0 | return Test::Deep::any($e1, $e2); | |||
| 78 | } | |||||
| 79 | } | |||||
| 80 | ||||||
| 81 | sub cmp | |||||
| 82 | { | |||||
| 83 | 0 | 0 | my ($a1, $a2, $rev) = @_; | |||
| 84 | ||||||
| 85 | 0 | 0 | ($a1, $a2) = ($a2, $a1) if $rev; | |||
| 86 | ||||||
| 87 | 0 | 0 | return (overload::StrVal($a1) cmp overload::StrVal($a2)); | |||
| 88 | } | |||||
| 89 | ||||||
| 90 | sub string | |||||
| 91 | { | |||||
| 92 | 0 | 0 | my $self = shift; | |||
| 93 | ||||||
| 94 | 0 | 0 | return overload::StrVal($self); | |||
| 95 | } | |||||
| 96 | ||||||
| 97 | sub render_stack | |||||
| 98 | { | |||||
| 99 | 0 | 0 | my $self = shift; | |||
| 100 | 0 | 0 | my $var = shift; | |||
| 101 | ||||||
| 102 | 0 | 0 | return $var; | |||
| 103 | } | |||||
| 104 | ||||||
| 105 | sub renderExp | |||||
| 106 | { | |||||
| 107 | 0 | 0 | my $self = shift; | |||
| 108 | ||||||
| 109 | 0 | 0 | return $self->renderGot($self->{val}); | |||
| 110 | } | |||||
| 111 | ||||||
| 112 | sub renderGot | |||||
| 113 | { | |||||
| 114 | 0 | 0 | my $self = shift; | |||
| 115 | ||||||
| 116 | 0 | 0 | return Test::Deep::render_val(@_); | |||
| 117 | } | |||||
| 118 | ||||||
| 119 | sub reset_arrow | |||||
| 120 | { | |||||
| 121 | 0 | 0 | return 1; | |||
| 122 | } | |||||
| 123 | ||||||
| 124 | sub data | |||||
| 125 | { | |||||
| 126 | 22 | 10 | my $self = shift; | |||
| 127 | ||||||
| 128 | 22 | 26 | return $Test::Deep::Stack->getLast; | |||
| 129 | } | |||||
| 130 | ||||||
| 131 | 1; | |||||