r9336: 12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
[clsql.git] / tests / test-fddl.lisp
index 961cc3d578a0478dc4d876f13bc3bef64ae275ee..32e645bb277135ae9201299e2c7ff1f4aa86e0e7 100644 (file)
@@ -28,7 +28,7 @@
            (sort (mapcar #'string-downcase
                          (clsql:list-tables :owner *test-database-user*))
                  #'string<))
-  "company" "employee" "type_table")
+  "addr" "company" "ea_join" "employee" "type_table")
 
 ;; create a table, test for its existence, drop it and test again 
 (deftest :fddl/table/2
@@ -64,9 +64,9 @@
            (sort 
             (mapcar #'string-downcase
                     (clsql:list-attributes [employee]
-                                          :owner *test-database-user*))
+                                          :owner *test-database-user*))
             #'string<))
-  "birthday" "companyid" "email" "emplid" "first_name" "groupid" "height"
+  "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
   "last_name" "managerid" "married")
 
 (deftest :fddl/attributes/2
                     (clsql:list-attribute-types [employee]
                                                :owner *test-database-user*))
             #'string<))
-  "birthday" "companyid" "email" "emplid" "first_name" "groupid" "height"
+  "birthday" "ecompanyid" "email" "emplid" "first_name" "groupid" "height"
   "last_name" "managerid" "married")
 
+;; Attribute types are vendor specific so need to test a range
+(deftest :fddl/attributes/3
+    (and (member (clsql:attribute-type [emplid] [employee]) '(:int :integer :int4)) t)
+  t)
+
+(deftest :fddl/attributes/4
+    (clsql:attribute-type [first-name] [employee]) 
+  :varchar 30 nil 1)
+
+(deftest :fddl/attributes/5
+    (and (member (clsql:attribute-type [birthday] [employee]) '(:datetime :timestamp)) t)
+  t)
+
+(deftest :fddl/attributes/6
+    (and (member (clsql:attribute-type [height] [employee]) '(:float :float8)) t)
+  t)
+
+
+
 ;; create a view, test for existence, drop it and test again
 (deftest :fddl/view/1
     (progn (clsql:create-view [lenins-group]
   t nil)
   
   ;; create a view, list its attributes and drop it 
-(when (clsql-base-sys:db-type-has-views? *test-database-underlying-type*)
+(when (clsql-sys:db-type-has-views? *test-database-underlying-type*)
   (deftest :fddl/view/2
       (progn (clsql:create-view [lenins-group]
                                :as [select [first-name] [last-name] [email]
 ;; test list-table-indexes
 (deftest :fddl/index/3
     (progn
-      (clsql:execute-command "CREATE TABLE I3TEST (a char(10), b integer)")
-      (clsql:create-index [bar] :on [i3test] :attributes
-                         '([a]) :unique t)
+      (clsql:create-table [i3test] '(([a] (string 10))
+                                    ([b] integer)))
       (clsql:create-index [foo] :on [i3test] :attributes
-                         '([b]) :unique nil)
+       '([b]) :unique nil)
+      (clsql:create-index [bar] :on [i3test] :attributes
+       '([a]) :unique t)
       (values
-       
+       (clsql:table-exists-p [i3test])
+       (clsql:index-exists-p [foo])
+       (clsql:index-exists-p [bar])
        (sort 
        (mapcar 
         #'string-downcase
         (clsql:list-table-indexes [i3test] :owner *test-database-user*))
-           #'string-lessp)
-       (sort (clsql:list-table-indexes [company] :owner *test-database-user*)
-            #'string-lessp)
+       #'string-lessp)
        (progn
         (clsql:drop-index [bar] :on [i3test])
         (clsql:drop-index [foo] :on [i3test])
-        (clsql:execute-command "DROP TABLE I3TEST")
+        (clsql:drop-table [i3test])
         t)))
-  ("bar" "foo") nil t)
+  t t t ("bar" "foo") t)
 
 ;; create an sequence, test for existence, drop it and test again 
 (deftest :fddl/sequence/1