Merge branch 'master' into dq
[dbsrgits/SQL-Abstract.git] / t / 05in_between.t
index 12a5658..7336158 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 use Test::More;
-use Test::Exception;
+use Test::Fatal;
 use SQL::Abstract::Test import => ['is_same_sql_bind'];
 
 use Data::Dumper;
@@ -75,7 +75,7 @@ my @in_between_tests = (
       ] },
     },
     stmt => "WHERE (
-          ( start0 BETWEEN ? AND UPPER ?          )
+          ( start0 BETWEEN ? AND UPPER(?)         )
       AND ( start1 BETWEEN ? AND ?                )
       AND ( start2 BETWEEN lower(x) AND upper(y)  )
       AND ( start3 BETWEEN lower(x) AND upper(?)  )
@@ -95,7 +95,7 @@ my @in_between_tests = (
       ] },
     },
     stmt => "WHERE (
-          ( start0 BETWEEN ? AND UPPER ?          )
+          ( start0 BETWEEN ? AND UPPER(?)         )
       AND ( start1 BETWEEN ? AND ?                )
       AND ( start2 BETWEEN lower(x) AND upper(y)  )
       AND ( start3 BETWEEN lower(x) AND upper(?)  )
@@ -168,20 +168,20 @@ my @in_between_tests = (
   },
   {
     where => { x => { -in => [ \['LOWER(?)', 'A' ], \'LOWER(b)', { -lower => 'c' } ] } },
-    stmt => " WHERE ( x IN ( LOWER(?), LOWER(b), LOWER ? ) )",
+    stmt => " WHERE ( x IN ( LOWER(?), LOWER(b), LOWER(?) ) )",
     bind => [qw/A c/],
     test => '-in with an array of function array refs with args',
   },
   {
     where => { x => { -in => [ 1, undef ] } },
-    stmt => " WHERE ( x IN ( ?, NULL ) )",
-    bind => [ 1 ],
+    stmt => " WHERE ( x IN ( ?, ? ) )",
+    bind => [ 1, undef ],
     test => '-in with undef as an element', 
   },
   {
     where => { x => { -in => [ 1, undef, 2, 3, undef ] } },
-    stmt => " WHERE ( x IN ( ?, NULL, ?, ?, NULL ) )",
-    bind => [ 1, 2, 3 ],
+    stmt => " WHERE ( x IN ( ?, ?, ?, ?, ? ) )",
+    bind => [ 1, undef, 2, 3, undef ],
     test => '-in with undef as an element',
   },
 );
@@ -193,24 +193,23 @@ for my $case (@in_between_tests) {
 
     local $Data::Dumper::Terse = 1;
 
-    lives_ok (sub {
+    ok(!(my $e = exception {
 
       my @w;
       local $SIG{__WARN__} = sub { push @w, @_ };
       my $sql = SQL::Abstract->new ($case->{args} || {});
-      lives_ok (sub { 
-        my ($stmt, @bind) = $sql->where($case->{where});
-        is_same_sql_bind(
-          $stmt,
-          \@bind,
-          $case->{stmt},
-          $case->{bind},
-        )
-          || diag "Search term:\n" . Dumper $case->{where};
-      });
+      my ($stmt, @bind) = $sql->where($case->{where});
+      is_same_sql_bind(
+        $stmt,
+        \@bind,
+        $case->{stmt},
+        $case->{bind},
+      )
+        || diag "Search term:\n" . Dumper $case->{where};
       is (@w, 0, $case->{test} || 'No warnings within in-between tests')
         || diag join "\n", 'Emitted warnings:', @w;
-    }, "$case->{test} doesn't die");
+    }), "$case->{test} doesn't die");
+    diag "Error: $e\n Search term:\n".Dumper($case->{where}) if $e;
   }
 }