X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=tests%2Ftest-init.lisp;h=10caf4c16bbb366b654340c35a3e009d75fad1a0;hp=41437f54dedd2a4584955fc1d92002e520349a8e;hb=8a8ee2d7d791b7a3efaed06420802a925d16fca3;hpb=90011694c27b5b22673a34cb6948a2a721a9b6cd diff --git a/tests/test-init.lisp b/tests/test-init.lisp index 41437f5..10caf4c 100644 --- a/tests/test-init.lisp +++ b/tests/test-init.lisp @@ -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) @@ -64,14 +64,14 @@ :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)) @@ -123,10 +123,8 @@ :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 @@ -147,25 +145,26 @@ :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))) @@ -183,7 +182,7 @@ (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*) @@ -218,7 +217,7 @@ (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 @@ -229,7 +228,7 @@ :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" @@ -239,7 +238,7 @@ :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" @@ -250,7 +249,7 @@ :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" @@ -261,7 +260,7 @@ :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" @@ -272,7 +271,7 @@ :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" @@ -283,7 +282,7 @@ :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" @@ -294,7 +293,7 @@ :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" @@ -305,7 +304,7 @@ :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" @@ -316,7 +315,7 @@ :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" @@ -327,7 +326,7 @@ :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" @@ -343,16 +342,20 @@ :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) @@ -444,7 +447,7 @@ (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 @@ -457,9 +460,9 @@ ****************************************************************************** " 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) @@ -519,33 +522,47 @@ *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))