r10077: * multiple: Apply patch from Joerg Hoehle with multiple
[clsql.git] / tests / test-syntax.lisp
index cd8d2ba1e4d08604800fe5c20d745b4f1620e472..04ea99cbe1c3857383fe98d3b6face4079c285ad 100644 (file)
@@ -40,6 +40,9 @@
     (clsql:sql ["SELECT FOO,BAR FROM BAZ"])
   "SELECT FOO,BAR FROM BAZ")
 
+(deftest :syntax/generic/6 
+    (clsql:sql "What's up Doc?") 
+  "'What''s up Doc?'")
 
 (deftest :syntax/ident/1
     (clsql:sql [foo])
   "FOO.BAR")
 
 (deftest :syntax/ident/3
-    (clsql:sql ["foo" bar])
-  "FOO.BAR")
-
-;(deftest :syntax/ident/4
-;    (clsql:sql [foo "bar"])
-;  "FOO \"bar\"")
-
-(deftest :syntax/ident/5
     (clsql:sql [foo :integer])
   "FOO")
 
-(deftest :syntax/ident/6
+(deftest :syntax/ident/4
     (clsql:sql [foo bar :integer])
   "FOO.BAR")
 
+(deftest :syntax/ident/5
+    (clsql:sql [foo "bar"])
+  "FOO \"bar\"")
+
+(deftest :syntax/ident/6
+    (clsql:sql ["foo" bar])
+ "\"foo\".BAR")
+
 (deftest :syntax/ident/7
     (clsql:sql ["foo" bar :integer])
-  "FOO.BAR")
+ "\"foo\".BAR")
+
 
 
 (deftest :syntax/subquery/1
     (clsql:sql [any '(3 4)])
 "(ANY ((3,4)))")
"ANY((3,4))")
 
 (deftest :syntax/subquery/2
     (clsql:sql [in [foo] '(foo bar baz)])
 
 (deftest :syntax/subquery/3
     (clsql:sql [all '(foo bar baz)])
-  "(ALL ((FOO,BAR,BAZ)))")
+  "ALL((FOO,BAR,BAZ))")
 
 (deftest :syntax/subquery/4
     (clsql:sql [exists '(foo bar baz)])
-  "(EXISTS ((FOO,BAR,BAZ)))")
+  "EXISTS((FOO,BAR,BAZ))")
 
 (deftest :syntax/subquery/5
     (clsql:sql [some '(foo bar baz)])
-  "(SOME ((FOO,BAR,BAZ)))")
+  "SOME((FOO,BAR,BAZ))")
 
 
 (deftest :syntax/aggregate/1 
 
 (deftest :syntax/substr/1 
     (clsql:sql [substr [hello] 1 4])
+ "SUBSTR(HELLO,1,4)")
+
+(deftest :syntax/substring/1 
+    (clsql:sql [substring [hello] 1 4])
  "SUBSTRING(HELLO,1,4)")
 
 
     (clsql:sql [|| [foo] [bar] [baz]])
  "(FOO || BAR || BAZ)")
 
+(deftest :syntax/concat/2
+    (clsql:sql [concat [foo] [bar]])
+ "CONCAT(FOO,BAR)")
+
 
 (deftest :syntax/pattern/1 
     (clsql:sql [like [foo] "%v"])
  "GROUP BY FOO")
 
 
+(deftest :syntax/coalesce/1 
+    (clsql:sql [coalesce [foo] [bar] "not specified"])
+ "COALESCE(FOO,BAR,'not specified')")
+
+(deftest :syntax/coalesce/2
+    (clsql:sql [nvl [foo] "not specified"])
+ "COALESCE(FOO,'not specified')")
+
+(deftest :syntax/nvl/1 
+    (clsql:sql [nvl [foo] "not specified"])
+ "COALESCE(FOO,'not specified')")
+
+
+
 (deftest :syntax/sets/1 
     (clsql:sql [union [select [foo] :from [bar]] [select [baz] :from [bar]]])
  "SELECT FOO FROM BAR UNION SELECT BAZ FROM BAR")
     (clsql:sql [except [select [foo] :from [bar]] [select [baz] :from [bar]]])
  "SELECT FOO FROM BAR EXCEPT SELECT BAZ FROM BAR")
 
+(deftest :syntax/sets/4
+    (clsql:sql [minus [select [foo] :from [bar]] [select [baz] :from [bar]]])
+ "SELECT FOO FROM BAR MINUS SELECT BAZ FROM BAR")
+
 
 (deftest :syntax/function/1
     (clsql:sql [function "COS" [age]])