r10922: 03 May 2006 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / tests / test-init.lisp
index 489b50b280ca53cfe79f2d9be30a8e81f4c5b709..5cdcb78115516fe16e53bea8497bb2bdba9a2879 100644 (file)
@@ -18,8 +18,9 @@
 
 (defvar *report-stream* *standard-output* "Stream to send text report.")
 (defvar *sexp-report-stream* nil "Stream to send sexp report.")
-(defvar *rt-connection*)
+(defvar *rt-internal*)
 (defvar *rt-basic*)
+(defvar *rt-connection*)
 (defvar *rt-fddl*)
 (defvar *rt-fdml*)
 (defvar *rt-ooddl*)
@@ -47,7 +48,7 @@
 (def-view-class employee (person)
   ((emplid
     :db-kind :key
-    :db-constraints :not-null
+    :db-constraints (:not-null :unique)
     :type integer
     :initarg :emplid)
    (groupid
            :db-info (:join-class address
                                  :home-key aaddressid
                                  :foreign-key addressid
+                                 :retrieval :immediate))
+   (employee :db-kind :join
+            :db-info (:join-class employee
+                                 :home-key aemplid
+                                 :foreign-key emplid
                                  :retrieval :immediate)))
   (:base-table "ea_join"))
 
                                   :height (1+ (random 1.00))
                                   :bd-utime *test-start-utime*
                                   :birthday now-time
-                                  :first-name "Vladamir"
+                                  :first-name "Vladimir"
                                   :last-name "Lenin"
                                   :email "lenin@soviet.org"
                                   :companyid 1)
                                    :height (1+ (random 1.00))
                                    :bd-utime *test-start-utime*
                                    :birthday now-time
-                                   :first-name "Vladamir"
+                                   :first-name "Vladimir"
                                    :last-name "Putin"
                                    :email "putin@soviet.org"
                                    :managerid 1
 (defun compute-tests-for-backend (db-type db-underlying-type)
   (let ((test-forms '())
        (skip-tests '()))
-    (dolist (test-form (append *rt-connection* *rt-basic* *rt-fddl* *rt-fdml*
+    (dolist (test-form (append *rt-internal* *rt-connection* *rt-basic* *rt-fddl* *rt-fdml*
                               *rt-ooddl* *rt-oodml* *rt-syntax*))
       (let ((test (second test-form)))
        (cond
                                :fdml/select/21 :fdml/select/32 
                                 :fdml/select/33))
           (push (cons test "not supported by sqlite") skip-tests))
+         ((and (eql *test-database-type* :sqlite3)
+               (clsql-sys:in test :fddl/view/4 :fdml/select/10
+                             :fdml/select/21 :fdml/select/32 
+                             :fdml/select/33))
+          (push (cons test "not supported by sqlite3") skip-tests))
          ((and (not (clsql-sys:db-type-has-bigint? db-type))
                (clsql-sys:in test :basic/bigint/1))
           (push (cons test "bigint not supported") skip-tests))
                (clsql-sys:in test :fdml/query/6 :fdml/select/31))
           (push (cons test "union not supported") skip-tests))
          ((and (eq *test-database-type* :oracle)
-               (clsql-sys:in test :fdml/query/8 :fdml/select/21))
+               (clsql-sys:in test :fdml/query/8 :fdml/select/21 
+                              :fddl/table/6))
           (push (cons test "syntax not supported") skip-tests))
+          ((and (eq *test-database-type* :odbc)
+               (eq *test-database-underlying-type* :postgresql)
+               (clsql-sys:in test :fddl/owner/1))
+           (push (cons test "table ownership not supported by postgresql odbc driver") skip-tests))
+         ((and (not (member *test-database-underlying-type* 
+                             '(:postgresql :oracle)))
+               (clsql-sys:in test :fddl/owner/1))
+           (push (cons test "table ownership not supported") skip-tests))
+          ((and (null (clsql-sys:db-type-has-intersect? db-underlying-type))
+               (clsql-sys:in test :fdml/query/7))
+          (push (cons test "intersect not supported") skip-tests))
+          ((and (null (clsql-sys:db-type-has-except? db-underlying-type))
+               (clsql-sys:in test :fdml/query/8))
+          (push (cons test "except not supported") skip-tests))
+          ((and (eq *test-database-underlying-type* :mssql)
+                (clsql-sys:in test :fdml/select/9))
+           (push (cons test "mssql uses integer math for AVG") skip-tests))
+          ((and (not (member *test-database-underlying-type* 
+                             '(:postgresql :mysql :sqlite3)))
+                (clsql-sys:in test :fdml/select/37 :fdml/select/38))
+           (push (cons test "LIMIT keyword not supported in SELECT") skip-tests))
          (t
           (push test-form test-forms)))))
       (values (nreverse test-forms) (nreverse skip-tests))))
 
-
 (defun rapid-load (type &optional (position 0))
   "Rapid load for interactive testing."
   (when *default-database*