From: Norbert Buchmuller Date: Fri, 28 Nov 2008 15:43:36 +0000 (+0100) Subject: * Replaced eq_bind() implementation to use Test::Deep::eq_deeply(). X-Git-Tag: v0.08240~189^2~11 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ce3b4eb94a66d94e1c0daf5b010897d29e1edef6;p=dbsrgits%2FDBIx-Class.git * Replaced eq_bind() implementation to use Test::Deep::eq_deeply(). --- diff --git a/Makefile.PL b/Makefile.PL index c1b6596..351dcaa 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -33,6 +33,7 @@ test_requires 'DBD::SQLite' => 1.14; test_requires 'Test::Builder' => 0.33; test_requires 'Test::Warn' => 0.11; test_requires 'Test::Exception' => 0; +test_requires 'Test::Deep' => 0; install_script 'script/dbicadmin'; diff --git a/t/lib/DBIC/SqlMakerTest.pm b/t/lib/DBIC/SqlMakerTest.pm index 95ff407..0ab8939 100644 --- a/t/lib/DBIC/SqlMakerTest.pm +++ b/t/lib/DBIC/SqlMakerTest.pm @@ -28,6 +28,8 @@ our @EXPORT = qw/ use Scalar::Util qw(looks_like_number blessed reftype); use Data::Dumper; + use Test::Builder; + use Test::Deep qw(eq_deeply); our $tb = __PACKAGE__->builder; @@ -69,58 +71,7 @@ our @EXPORT = qw/ { my ($bind_ref1, $bind_ref2) = @_; - my $ref1 = ref $bind_ref1; - my $ref2 = ref $bind_ref2; - - return 0 if $ref1 ne $ref2; - - if ($ref1 eq 'SCALAR' || $ref1 eq 'REF') { - return eq_bind($$bind_ref1, $$bind_ref2); - } elsif ($ref1 eq 'ARRAY') { - return 0 if scalar @$bind_ref1 != scalar @$bind_ref2; - for (my $i = 0; $i < @$bind_ref1; $i++) { - return 0 if !eq_bind($bind_ref1->[$i], $bind_ref2->[$i]); - } - return 1; - } elsif ($ref1 eq 'HASH') { - return - eq_bind( - [sort keys %$bind_ref1], - [sort keys %$bind_ref2] - ) - && eq_bind( - [map { $bind_ref1->{$_} } sort keys %$bind_ref1], - [map { $bind_ref2->{$_} } sort keys %$bind_ref2] - ); - } else { - if (!defined $bind_ref1 || !defined $bind_ref2) { - return !(defined $bind_ref1 ^ defined $bind_ref2); - } elsif (blessed($bind_ref1) || blessed($bind_ref2)) { - return 0 if (blessed($bind_ref1) || "") ne (blessed($bind_ref2) || ""); - return 1 if $bind_ref1 == $bind_ref2; # uses overloaded '==' - # fallback: compare the guts of the object - my $reftype1 = reftype $bind_ref1; - my $reftype2 = reftype $bind_ref2; - return 0 if $reftype1 ne $reftype2; - if ($reftype1 eq 'SCALAR' || $reftype1 eq 'REF') { - $bind_ref1 = $$bind_ref1; - $bind_ref2 = $$bind_ref2; - } elsif ($reftype1 eq 'ARRAY') { - $bind_ref1 = [@$bind_ref1]; - $bind_ref2 = [@$bind_ref2]; - } elsif ($reftype1 eq 'HASH') { - $bind_ref1 = {%$bind_ref1}; - $bind_ref2 = {%$bind_ref2}; - } else { - return 0; - } - return eq_bind($bind_ref1, $bind_ref2); - } elsif (looks_like_number($bind_ref1) && looks_like_number($bind_ref2)) { - return $bind_ref1 == $bind_ref2; - } else { - return $bind_ref1 eq $bind_ref2; - } - } + return eq_deeply($bind_ref1, $bind_ref2); } }