(:base-table company))
+(def-view-class address ()
+ ((emplid
+ :db-kind :key
+ :db-constraints :not-null
+ :type integer
+ :initarg :emplid)
+ (street-number
+ :type integer
+ :initarg :street-number)
+ (street-name
+ :type (string 30)
+ :void-value ""
+ :initarg :street-name)
+ (city
+ :column "city_field"
+ :void-value "no city"
+ :type (string 30)
+ :initarg :city)
+ (postal-code
+ :column "zip"
+ :type integer
+ :void-value 0
+ :initarg :postal-code)))
(defun test-connect-to-database (db-type spec)
(when (db-backend-has-create/destroy-db? db-type)
(truncate-database :database *default-database*)
(setf *test-database-underlying-type*
- (clsql-sys:database-underlying-type *default-database*))
+ (clsql:database-underlying-type *default-database*))
*default-database*)
(defparameter employee8 nil)
(defparameter employee9 nil)
(defparameter employee10 nil)
+(defparameter address1 nil)
+(defparameter address2 nil)
(defun test-initialise-database ()
(test-basic-initialize)
:ignore
:warn)))
(clsql:create-view-from-class 'employee)
- (clsql:create-view-from-class 'company))
+ (clsql:create-view-from-class 'company)
+ (clsql:create-view-from-class 'address))
(setf company1 (make-instance 'company
:companyid 1
:birthday (clsql-base:get-time)
:first-name "Vladamir"
:last-name "Putin"
- :email "putin@soviet.org"))
+ :email "putin@soviet.org")
+
+ address1 (make-instance 'address
+ :emplid 1
+ :street-number 10
+ :street-name "Park Place"
+ :city "Leningrad"
+ :postal-code 123)
+
+ address2 (make-instance 'address
+ :emplid 2))
;; sleep to ensure birthdays are no longer at current time
(sleep 2)
(clsql:update-records-from-instance employee8)
(clsql:update-records-from-instance employee9)
(clsql:update-records-from-instance employee10)
- (clsql:update-records-from-instance company1))
+ (clsql:update-records-from-instance company1)
+ (clsql:update-records-from-instance address1)
+ (clsql:update-records-from-instance address2))
(defvar *error-count* 0)
(defvar *error-list* nil)
-(defun run-tests-append-report-file (report-file)
- (let* ((report-path (etypecase report-file
+(defun run-function-append-report-file (function report-file)
+ (let* ((report-path (etypecase report-file
(pathname report-file)
(string (parse-namestring report-file))))
(sexp-report-path (make-pathname :defaults report-path
:type "sexp")))
- (with-open-file (rs report-path :direction :output
- :if-exists :append
+ (with-open-file (rs report-path :direction :output
+ :if-exists :append
:if-does-not-exist :create)
- (with-open-file (srs sexp-report-path :direction :output
- :if-exists :append
- :if-does-not-exist :create)
- (run-tests :report-stream rs :sexp-report-stream srs)))))
-
+ (with-open-file (srs sexp-report-path :direction :output
+ :if-exists :append
+ :if-does-not-exist :create)
+ (funcall function :report-stream rs :sexp-report-stream srs)))))
+
+(defun run-tests-append-report-file (report-file)
+ (run-function-append-report-file 'run-tests report-file))
+
+
(defun run-tests (&key (report-stream *standard-output*) (sexp-report-stream nil))
(let ((specs (read-specs))
(*report-stream* report-stream)
(when (db-type-spec db-type specs)
(clsql:initialize-database-type :database-type db-type))))
-(defun do-tests-for-backend (db-type spec)
- (test-connect-to-database db-type spec)
-
- (unwind-protect
- (multiple-value-bind (test-forms skip-tests)
- (compute-tests-for-backend db-type *test-database-underlying-type*)
-
- (format *report-stream*
- "~&
+(defun write-report-banner (report-type db-type stream)
+ (format stream
+ "~&
******************************************************************************
-*** CLSQL Test Suite begun at ~A
+*** CLSQL ~A begun at ~A
*** ~A
*** ~A on ~A
*** Database ~A backend~A.
******************************************************************************
-"
- (clsql-base:format-time
- nil
- (clsql-base:utime->time (get-universal-time)))
- (lisp-implementation-type)
- (lisp-implementation-version)
- (machine-type)
- db-type
- (if (not (eq db-type *test-database-underlying-type*))
- (format nil " with underlying type ~A"
- *test-database-underlying-type*)
- "")
- )
-
+"
+ report-type
+ (clsql-base:format-time
+ nil
+ (clsql-base:utime->time (get-universal-time)))
+ (lisp-implementation-type)
+ (lisp-implementation-version)
+ (machine-type)
+ db-type
+ (if (not (eq db-type *test-database-underlying-type*))
+ (format nil " with underlying type ~A"
+ *test-database-underlying-type*)
+ "")
+ ))
+
+(defun do-tests-for-backend (db-type spec)
+ (test-connect-to-database db-type spec)
+
+ (unwind-protect
+ (multiple-value-bind (test-forms skip-tests)
+ (compute-tests-for-backend db-type *test-database-underlying-type*)
+
+ (write-report-banner "Test Suite" db-type *report-stream*)
+
(test-initialise-database)
(regression-test:rem-all-tests)
(defun compute-tests-for-backend (db-type db-underlying-type)
+ (declare (ignorable db-type))
(let ((test-forms '())
(skip-tests '()))
(dolist (test-form (append (test-basic-forms)