From: Norbert Buchmuller Date: Fri, 28 Nov 2008 08:26:34 +0000 (+0000) Subject: Replaced eq_bind() implementation to use Test::Deep::eq_deeply(). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=4abea32b11d885ad9a7b9617e50e38c8be39b78f;p=scpubgit%2FQ-Branch.git Replaced eq_bind() implementation to use Test::Deep::eq_deeply(). --- diff --git a/lib/SQL/Abstract/Test.pm b/lib/SQL/Abstract/Test.pm index 49f7800..4153add 100644 --- a/lib/SQL/Abstract/Test.pm +++ b/lib/SQL/Abstract/Test.pm @@ -6,6 +6,8 @@ use base qw/Test::Builder::Module Exporter/; use Scalar::Util qw(looks_like_number blessed reftype); use Data::Dumper; use Carp; +use Test::Builder; +use Test::Deep qw(eq_deeply); our @EXPORT_OK = qw/&is_same_sql_bind &eq_sql &eq_bind $case_sensitive $sql_differ/; @@ -45,58 +47,7 @@ sub is_same_sql_bind { sub eq_bind { 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); } sub eq_sql {