r9336: 12 May 2004 Kevin Rosenberg (kevin@rosenberg.net)
[clsql.git] / tests / test-init.lisp
index 41437f54dedd2a4584955fc1d92002e520349a8e..10caf4c16bbb366b654340c35a3e009d75fad1a0 100644 (file)
@@ -16,7 +16,7 @@
 
 (in-package #:clsql-tests)
 
-(defvar *report-stream* nil "Stream to send text report.")
+(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-fddl*)
@@ -38,7 +38,7 @@
            :initarg :height)
    (married :db-kind :base :accessor married :type boolean
             :initarg :married)
-   (birthday :type clsql-base:wall-time :initarg :birthday)
+   (birthday :type clsql:wall-time :initarg :birthday)
    (hobby :db-kind :virtual :initarg :hobby :initform nil)))
   
 (def-view-class employee (person)
     :accessor employee-email
     :type (string 100)
     :initarg :email)
-   (companyid
+   (ecompanyid
     :type integer
     :initarg :companyid)
    (company
     :accessor employee-company
     :db-kind :join
     :db-info (:join-class company
-                         :home-key companyid
+                         :home-key ecompanyid
                          :foreign-key companyid
                          :set nil))
    (managerid
@@ -89,7 +89,7 @@
     :db-kind :join
     :db-info (:join-class employee-address
                          :home-key emplid
-                         :foreign-key emplid
+                         :foreign-key aemplid
                          :target-slot address
                          :set t)))
   (:base-table employee))
     :db-kind :join
     :db-info (:join-class employee
                          :home-key (companyid groupid)
-                         :foreign-key (companyid groupid)
-                         :set t)))
-  (:base-table company))
-
+                         :foreign-key (ecompanyid groupid)
+                         :set t))))
 
 (def-view-class address ()
   ((addressid
     :type (string 30)
     :initarg :city)
    (postal-code
-    :column "zip"
+    :column zip
     :type integer
     :void-value 0
-    :initarg :postal-code)))
+    :initarg :postal-code))
+  (:base-table addr))
 
 ;; many employees can reside at many addressess
 (def-view-class employee-address ()
-  ((emplid :type integer
-          :initarg :emplid)
-   (addressid :type integer
-             :initarg :addressid)
+  ((aemplid :type integer :initarg :emplid)
+   (aaddressid :type integer :initarg :addressid)
+   (verified :type boolean :initarg :verified)
    (address :db-kind :join
            :db-info (:join-class address
-                                 :home-key addressid
+                                 :home-key aaddressid
                                  :foreign-key addressid
-                                 :retrieval :immediate))))
+                                 :retrieval :immediate)))
+  (:base-table "ea_join"))
 
 (defun test-connect-to-database (db-type spec)
-  (when (db-backend-has-create/destroy-db? db-type)
+  (when (clsql-sys:db-backend-has-create/destroy-db? db-type)
     (ignore-errors (destroy-database spec :database-type db-type))
     (ignore-errors (create-database spec :database-type db-type)))
   
   (truncate-database :database *default-database*)
   
   (setf *test-database-underlying-type*
-       (clsql:database-underlying-type *default-database*))
+       (clsql-sys:database-underlying-type *default-database*))
   
   *default-database*)
 
     (clsql:create-view-from-class 'address)
     (clsql:create-view-from-class 'employee-address))
 
-  (let ((*update-records-on-make-instance* t))
+  (let ((*db-auto-sync* t))
     (setf company1 (make-instance 'company
                                  :presidentid 1
                                  :companyid 1
                                   :groupid 1
                                   :married t 
                                   :height (1+ (random 1.00))
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Vladamir"
                                   :last-name "Lenin"
                                   :email "lenin@soviet.org"
                                   :groupid 1
                                   :height (1+ (random 1.00))
                                   :married t 
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Josef"
                                   :last-name "Stalin"
                                   :email "stalin@soviet.org"
                                   :groupid 1
                                   :height (1+ (random 1.00))
                                   :married t 
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Leon"
                                   :last-name "Trotsky"
                                   :email "trotsky@soviet.org"
                                   :groupid 1
                                   :height (1+ (random 1.00))
                                   :married nil
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Nikita"
                                   :last-name "Kruschev"
                                   :email "kruschev@soviet.org"
                                   :groupid 1
                                   :married nil
                                   :height (1+ (random 1.00))
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Leonid"
                                   :last-name "Brezhnev"
                                   :email "brezhnev@soviet.org"
                                   :groupid 1
                                   :married nil
                                   :height (1+ (random 1.00))
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Yuri"
                                   :last-name "Andropov"
                                   :email "andropov@soviet.org"
                                   :groupid 1
                                   :height (1+ (random 1.00))
                                   :married nil
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Konstantin"
                                   :last-name "Chernenko"
                                   :email "chernenko@soviet.org"
                                   :groupid 1
                                   :height (1+ (random 1.00))
                                   :married nil
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Mikhail"
                                   :last-name "Gorbachev"
                                   :email "gorbachev@soviet.org"
                                   :groupid 1 
                                   :married nil
                                   :height (1+ (random 1.00))
-                                  :birthday (clsql-base:get-time)
+                                  :birthday (clsql:get-time)
                                   :first-name "Boris"
                                   :last-name "Yeltsin"
                                   :email "yeltsin@soviet.org"
                                    :groupid 1
                                    :married nil
                                    :height (1+ (random 1.00))
-                                   :birthday (clsql-base:get-time)
+                                   :birthday (clsql:get-time)
                                    :first-name "Vladamir"
                                    :last-name "Putin"
                                    :email "putin@soviet.org"
                                  :addressid 2)
          employee-address1 (make-instance 'employee-address
                                           :emplid 1
-                                          :addressid 1)
+                                          :addressid 1
+                                          :verified t)
          employee-address2 (make-instance 'employee-address
                                           :emplid 2
-                                          :addressid 2)
+                                          :addressid 2
+                                          :verified t)
          employee-address3 (make-instance 'employee-address
                                           :emplid 3
-                                          :addressid 1)
+                                          :addressid 1
+                                          :verified nil)
          employee-address4 (make-instance 'employee-address
                                           :emplid 1
-                                          :addressid 2)
+                                          :addressid 2
+                                          :verified nil)
          employee-address5 (make-instance 'employee-address
                                           :emplid 3
                                           :addressid 2)
 (defun load-necessary-systems (specs)
   (dolist (db-type +all-db-types+)
     (when (db-type-spec db-type specs)
-      (clsql:initialize-database-type :database-type db-type))))
+      (clsql-sys:initialize-database-type :database-type db-type))))
 
 (defun write-report-banner (report-type db-type stream)
   (format stream
 ******************************************************************************
 "
          report-type
-         (clsql-base:format-time 
+         (clsql:format-time 
           nil 
-          (clsql-base:utime->time (get-universal-time)))
+          (clsql:utime->time (get-universal-time)))
          (lisp-implementation-type)
          (lisp-implementation-version)
          (machine-type)
                               *rt-ooddl* *rt-oodml* *rt-syntax*))
       (let ((test (second test-form)))
        (cond
-         ((and (null (db-type-has-views? db-underlying-type))
-               (clsql-base::in test :fddl/view/1 :fddl/view/2 :fddl/view/3 :fddl/view/4))
+         ((and (null (clsql-sys:db-type-has-views? db-underlying-type))
+               (clsql-sys:in test :fddl/view/1 :fddl/view/2 :fddl/view/3 :fddl/view/4))
           (push (cons test "views not supported") skip-tests))
-         ((and (null (db-type-has-boolean-where? db-underlying-type))
-               (clsql-base::in test :fdml/select/11 :oodml/select/5))
+         ((and (null (clsql-sys:db-type-has-boolean-where? db-underlying-type))
+               (clsql-sys:in test :fdml/select/11 :oodml/select/5))
           (push (cons test "boolean where not supported") skip-tests))
-         ((and (null (db-type-has-subqueries? db-underlying-type))
-               (clsql-base::in test :fdml/select/5 :fdml/select/10))
+         ((and (null (clsql-sys:db-type-has-subqueries? db-underlying-type))
+               (clsql-sys:in test :fdml/select/5 :fdml/select/10))
           (push (cons test "subqueries not supported") skip-tests))
-         ((and (null (db-type-transaction-capable? db-underlying-type
+         ((and (null (clsql-sys:db-type-transaction-capable? db-underlying-type
                                                    *default-database*))
-               (clsql-base::in test :fdml/transaction/1 :fdml/transaction/2 :fdml/transaction/3 :fdml/transaction/4))
+               (clsql-sys:in test :fdml/transaction/1 :fdml/transaction/2 :fdml/transaction/3 :fdml/transaction/4))
           (push (cons test "transactions not supported") skip-tests))
-         ((and (null (db-type-has-fancy-math? db-underlying-type))
-               (clsql-base::in test :fdml/select/1))
+         ((and (null (clsql-sys:db-type-has-fancy-math? db-underlying-type))
+               (clsql-sys:in test :fdml/select/1))
           (push (cons test "fancy math not supported") skip-tests))
          ((and (eql *test-database-type* :sqlite)
-               (clsql-base::in test :fddl/view/4 :fdml/select/10))
+               (clsql-sys:in test :fddl/view/4 :fdml/select/10
+                               :fdml/select/21))
           (push (cons test "not supported by sqlite") skip-tests))
+         ((and (eql *test-database-underlying-type* :mysql)
+               (clsql-sys:in test :fdml/select/22 :fdml/query/5 
+                               :fdml/query/7 :fdml/query/8))
+          (push (cons test "not supported by mysql") skip-tests))
          (t
           (push test-form test-forms)))))
-    (values (nreverse test-forms) (nreverse skip-tests))))
+      (values (nreverse test-forms) (nreverse skip-tests))))
 
 
-(defun rl ()
+(defun rapid-load (type)
   "Rapid load for interactive testing."
   (when *default-database*
       (disconnect :database *default-database*))
-  (test-connect-to-database :postgresql (car (postgresql-spec (read-specs))))
+  (test-connect-to-database type (car (db-type-spec type (read-specs))))
   (test-initialise-database))
+
+(defun rl ()
+  (rapid-load :postgresql))
+
+(defun rlm ()
+  (rapid-load :mysql))
+
+(defun rlo ()
+  (rapid-load :odbc))