r9804: * doc/ref-ooddl.xml: minor changes to syntax and examples entries
[clsql.git] / tests / test-oodml.lisp
index abbaddd915bf519964624cddd2dae2c310dc65e3..58de7289d77b8600b230e56b1275b1da6acca9f6 100644 (file)
                 (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")
+
        ))
+
 #.(clsql:restore-sql-reader-syntax-state)