X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=tests%2Ftest-oodml.lisp;h=e1bb530c079b87d76930f44f4d0a59a7ca59af9a;hp=2ae3005c55e16e73b5fd7473b233408313103f36;hb=d9937e92697e07d701defd1fdcee7100d005fdf6;hpb=75defa0ce7e93c50c87fe272632dcdd942e80d49 diff --git a/tests/test-oodml.lisp b/tests/test-oodml.lisp index 2ae3005..e1bb530 100644 --- a/tests/test-oodml.lisp +++ b/tests/test-oodml.lisp @@ -105,6 +105,16 @@ (employee-addresses employee2)) ((t t 2 2 2))) + (deftest :oodml/select/11 + (values (mapcar #'(lambda (x) (slot-value x 'emplid)) + (clsql:select 'employee :order-by '(([emplid] :asc)) + :flatp t)) + (mapcar #'(lambda (x) (slot-value x 'emplid)) + (clsql:select 'employee :order-by '(([emplid] :desc)) + :flatp t))) + (1 2 3 4 5 6 7 8 9 10) + (10 9 8 7 6 5 4 3 2 1)) + ;; test retrieval is deferred (deftest :oodm/retrieval/1 (every #'(lambda (e) (not (slot-boundp e 'company))) @@ -374,7 +384,7 @@ ("Lenin" "Stalin" "Trotsky")) - (deftest oodml/cache/1 + (deftest :oodml/cache/1 (progn (setf (clsql-sys:record-caches *default-database*) nil) (let ((employees (select 'employee))) @@ -382,18 +392,18 @@ employees (select 'employee)))) t) - (deftest oodml/cache/2 + (deftest :oodml/cache/2 (let ((employees (select 'employee))) (equal employees (select 'employee :flatp t))) nil) - (deftest oodml/refresh/1 + (deftest :oodml/refresh/1 (let ((addresses (select 'address))) (equal addresses (select 'address :refresh t))) t) - (deftest oodml/refresh/2 - (let* ((addresses (select 'address :order-by [addressid] :flatp t)) + (deftest :oodml/refresh/2 + (let* ((addresses (select 'address :order-by [addressid] :flatp t :refresh t)) (city (slot-value (car addresses) 'city))) (clsql:update-records [addr] :av-pairs '((city_field "A new city")) @@ -409,15 +419,15 @@ new-city))) t "Leningrad" "A new city") - (deftest oodml/refresh/3 + (deftest :oodml/refresh/3 (let* ((addresses (select 'address :order-by [addressid] :flatp t))) (values (equal addresses (select 'address :refresh t :flatp t)) (equal addresses (select 'address :flatp t)))) nil nil) - (deftest oodml/refresh/4 - (let* ((addresses (select 'address :order-by [addressid] :flatp t)) + (deftest :oodml/refresh/4 + (let* ((addresses (select 'address :order-by [addressid] :flatp t :refresh t)) (*db-auto-sync* t)) (make-instance 'address :addressid 1000 :city "A new address city") (let ((new-addresses (select 'address :order-by [addressid] :flatp t :refresh t))) @@ -430,13 +440,13 @@ 2 3 t t) - (deftest oodml/uoj/1 + (deftest :oodml/uoj/1 (progn (let* ((dea-list (select 'deferred-employee-address :caching nil :order-by [ea_join aaddressid] :flatp t)) (dea-list-copy (copy-seq dea-list)) (initially-unbound (every #'(lambda (dea) (not (slot-boundp dea 'address))) dea-list))) - (update-object-joins dea-list) + (update-objects-joins dea-list) (values initially-unbound (equal dea-list dea-list-copy) @@ -444,5 +454,164 @@ (every #'(lambda (dea) (typep (slot-value dea 'address) 'address)) dea-list) (mapcar #'(lambda (dea) (slot-value (slot-value dea 'address) 'addressid)) dea-list)))) t t t t (1 1 2 2 2)) + + (deftest :oodml/big/1 + (let ((objs (clsql:select 'big :order-by [i] :flatp t))) + (values + (length objs) + (do ((i 0 (1+ i)) + (max (expt 2 60)) + (rest objs (cdr rest))) + ((= i (length objs)) t) + (let ((obj (car rest)) + (index (1+ i))) + (unless (and (eql (slot-value obj 'i) index) + (eql (slot-value obj 'bi) (truncate max index))) + (print index) + (describe obj) + (return nil)))))) + 555 t) + + (deftest :oodml/db-auto-sync/1 + (values + (progn + (make-instance 'employee :emplid 20 :groupid 1 + :last-name "Ivanovich") + (select [last-name] :from [employee] :where [= [emplid] 20] + :flatp t :field-names nil)) + (let ((*db-auto-sync* t)) + (make-instance 'employee :emplid 20 :groupid 1 + :last-name "Ivanovich") + (prog1 (select [last-name] :from [employee] :flatp t + :field-names nil + :where [= [emplid] 20]) + (delete-records :from [employee] :where [= [emplid] 20])))) + nil ("Ivanovich")) + + (deftest :oodml/db-auto-sync/2 + (values + (let ((instance (make-instance 'employee :emplid 20 :groupid 1 + :last-name "Ivanovich"))) + (setf (slot-value instance 'last-name) "Bulgakov") + (select [last-name] :from [employee] :where [= [emplid] 20] + :flatp t :field-names nil)) + (let* ((*db-auto-sync* t) + (instance (make-instance 'employee :emplid 20 :groupid 1 + :last-name "Ivanovich"))) + (setf (slot-value instance 'last-name) "Bulgakov") + (prog1 (select [last-name] :from [employee] :flatp t + :field-names nil + :where [= [emplid] 20]) + (delete-records :from [employee] :where [= [emplid] 20])))) + nil ("Bulgakov")) + + (deftest :oodml/setf-slot-value/1 + (let* ((*db-auto-sync* t) + (instance (make-instance 'employee :emplid 20 :groupid 1))) + (prog1 + (setf + (slot-value instance 'first-name) "Mikhail" + (slot-value instance 'last-name) "Bulgakov") + (delete-records :from [employee] :where [= [emplid] 20]))) + "Bulgakov") + + (deftest :oodml/float/1 + (let* ((emp1 (car (select 'employee + :where [= [slot-value 'employee 'emplid] + 1] + :flatp t + :caching nil))) + (height (slot-value emp1 'height))) + (prog1 + (progn + (setf (slot-value emp1 'height) 1.0E0) + (clsql:update-record-from-slot emp1 'height) + (car (clsql:select [height] :from [employee] + :where [= [emplid] 1] + :flatp t + :field-names nil))) + (setf (slot-value emp1 'height) height) + (clsql:update-record-from-slot emp1 'height))) + 1.0d0) + + (deftest :oodml/float/2 + (let* ((emp1 (car (select 'employee + :where [= [slot-value 'employee 'emplid] + 1] + :flatp t + :caching nil))) + (height (slot-value emp1 'height))) + (prog1 + (progn + (setf (slot-value emp1 'height) 1.0S0) + (clsql:update-record-from-slot emp1 'height) + (car (clsql:select [height] :from [employee] + :where [= [emplid] 1] + :flatp t + :field-names nil))) + (setf (slot-value emp1 'height) height) + (clsql:update-record-from-slot emp1 'height))) + 1.0d0) + + (deftest :oodml/float/3 + (let* ((emp1 (car (select 'employee + :where [= [slot-value 'employee 'emplid] + 1] + :flatp t + :caching nil))) + (height (slot-value emp1 'height))) + (prog1 + (progn + (setf (slot-value emp1 'height) 1.0F0) + (clsql:update-record-from-slot emp1 'height) + (car (clsql:select [height] :from [employee] + :where [= [emplid] 1] + :flatp t + :field-names nil))) + (setf (slot-value emp1 'height) height) + (clsql:update-record-from-slot emp1 'height))) + 1.0d0) + + (deftest :oodml/float/4 + (let* ((emp1 (car (select 'employee + :where [= [slot-value 'employee 'emplid] + 1] + :flatp t + :caching nil))) + (height (slot-value emp1 'height))) + (prog1 + (progn + (setf (slot-value emp1 'height) 1.0D0) + (clsql:update-record-from-slot emp1 'height) + (car (clsql:select [height] :from [employee] + :where [= [emplid] 1] + :flatp t + :field-names nil))) + (setf (slot-value emp1 'height) height) + (clsql:update-record-from-slot emp1 'height))) + 1.0d0) + + (deftest :oodml/float/5 + (let* ((emp1 (car (select 'employee + :where [= [slot-value 'employee 'emplid] + 1] + :flatp t + :caching nil))) + (height (slot-value emp1 'height))) + (prog1 + (progn + (setf (slot-value emp1 'height) 1.0L0) + (clsql:update-record-from-slot emp1 'height) + (car (clsql:select [height] :from [employee] + :where [= [emplid] 1] + :flatp t + :field-names nil))) + (setf (slot-value emp1 'height) height) + (clsql:update-record-from-slot emp1 'height))) + 1.0d0) + )) + + + #.(clsql:restore-sql-reader-syntax-state)