Changed behaviour to not stringify blessed objects, but pass them through to the...
[scpubgit/Q-Branch.git] / t / 02where.t
index b279651..60cbf84 100644 (file)
@@ -4,18 +4,17 @@ use strict;
 use warnings;
 use Test::More;
 use Test::Exception;
+use SQL::Abstract::Test import => ['is_same_sql_bind'];
 
-use FindBin;
-use lib "$FindBin::Bin";
-use TestSqlAbstract;
-
-plan tests => 15;
+plan tests => 18;
 
 use SQL::Abstract;
 
 # Make sure to test the examples, since having them break is somewhat
 # embarrassing. :-(
 
+my $not_stringifiable = SQLA::NotStringifiable->new();
+
 my @handle_tests = (
     {
         where => {
@@ -179,6 +178,25 @@ my @handle_tests = (
         bind => [44, 55, 22, 33],
     },
 
+   {
+       where => { -and => [{}, { 'me.id' => '1'}] },
+       stmt => " WHERE ( ( me.id = ? ) )",
+       bind => [ 1 ],
+   },
+
+   {
+       where => { foo => SQLA::FourtyTwo->new(), },
+       stmt => " WHERE ( foo = ? )",
+       bind => [ 'The Life, the Universe and Everything.' ],
+   },
+
+   {
+       where => { foo => $not_stringifiable, },
+       stmt => " WHERE ( foo = ? )",
+       bind => [ $not_stringifiable ],
+   },
+
+
 );
 
 for my $case (@handle_tests) {
@@ -190,4 +208,43 @@ for my $case (@handle_tests) {
 dies_ok {
     my $sql = SQL::Abstract->new;
     $sql->where({ foo => { '>=' => [] }},);
+};
+
+
+
+#======================================================================
+package SQLA::FourtyTwo; # testing stringification of arguments
+#======================================================================
+
+use strict;
+use warnings;
+
+use overload
+  '""' => \&to_str;
+
+sub new
+{
+  bless {}, shift;
+}
+
+sub to_str
+{
+  return "The Life, the Universe and Everything.";
+}
+
+1;
+
+
+#======================================================================
+package SQLA::NotStringifiable; # testing stringification of arguments
+#======================================================================
+
+use strict;
+use warnings;
+
+sub new
+{
+  bless {}, shift;
 }
+
+1;