IN testing support
Peter Rabbitson [Tue, 22 Sep 2009 07:55:36 +0000 (07:55 +0000)]
lib/SQL/Abstract/Test.pm
t/10test.t

index cfedf16..7e38ae8 100644 (file)
@@ -59,6 +59,7 @@ my @expression_terminator_sql_keywords = (
 #   _recurse_parse()
 my @binary_op_keywords = (
   (map { "\Q$_\E" } (qw/< > != = <= >=/)),
+  '(?: NOT \s+)? IN',
   '(?: NOT \s+)? LIKE',
   '(?: NOT \s+)? BETWEEN',
 );
index 41fbc9d..0c51f6a 100644 (file)
@@ -268,6 +268,15 @@ my @sql_tests = (
       },
       {
         equal => 0,
+        parenthesis_significant => 1,
+        statements => [
+          q/SELECT foo FROM bar WHERE a IN (1,2,3)/,
+          q/SELECT foo FROM bar WHERE a IN (1,3,2)/,
+          q/SELECT foo FROM bar WHERE a IN ((1,2,3))/,
+        ]
+      },
+      {
+        equal => 0,
         statements => [
           # BETWEEN with/without parenthesis around itself/RHS is a sticky business
           # if I made a mistake here, simply rewrite the special BETWEEN handling in