r10331: 17 Feb 2005 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / tests / test-oodml.lisp
index 4898067161a9b387a840a8fb21f1a30bb75bad8a..87d897fb4c743406a441f99687863daff2c68b17 100644 (file)
                                     " "
                                     (slot-value e 'last-name)))
             (clsql:select 'employee :where [= [slot-value 'employee 'first-name]
-                                              "Vladamir"]
+                                              "Vladimir"]
                           :flatp t                  
                           :order-by [last-name]
                           :caching nil))
-         ("Vladamir Lenin" "Vladamir Putin"))
+         ("Vladimir Lenin" "Vladimir Putin"))
 
        (deftest :oodml/select/5
            (length (clsql:select 'employee :where [married] :flatp t :caching nil))
                              ": "
                              (employee-email lenin))))
             (progn 
-              (setf (slot-value employee1 'first-name) "Vladamir" 
+              (setf (slot-value employee1 'first-name) "Vladimir" 
                     (slot-value employee1 'last-name) "Lenin"
                     (slot-value employee1 'email) "lenin@soviet.org")
               (clsql:update-records-from-instance employee1)
                              (last-name lenin)
                              ": "
                              (employee-email lenin)))))
-         "Vladamir Lenin: lenin@soviet.org"
+         "Vladimir Lenin: lenin@soviet.org"
          "Dimitriy Ivanovich: ivanovich@soviet.org"
-         "Vladamir Lenin: lenin@soviet.org")
+         "Vladimir Lenin: lenin@soviet.org")
 
        ;; tests update-record-from-slot 
        (deftest :oodml/update-records/2
                              ": "
                              (employee-email lenin))))
             (progn 
-              (setf (slot-value employee1 'first-name) "Vladamir" 
+              (setf (slot-value employee1 'first-name) "Vladimir" 
                     (slot-value employee1 'last-name) "Lenin"
                     (slot-value employee1 'email) "lenin@soviet.org")
               (clsql:update-record-from-slots employee1 '(first-name last-name email))
                              (last-name lenin)
                              ": "
                              (employee-email lenin)))))
-         "Vladamir Lenin: lenin@soviet.org"
+         "Vladimir Lenin: lenin@soviet.org"
          "Dimitriy Ivanovich: ivanovich@soviet.org"
-         "Vladamir Lenin: lenin@soviet.org")
+         "Vladimir Lenin: lenin@soviet.org")
 
        ;; tests update-instance-from-records 
        (deftest :oodml/update-instance/1
                            (slot-value employee1 'email)))
             (progn 
               (clsql:update-records [employee] 
-                                    :av-pairs '(([first-name] "Vladamir")
+                                    :av-pairs '(([first-name] "Vladimir")
                                                 ([last-name] "Lenin")
                                                 ([email] "lenin@soviet.org"))
                                     :where [= [emplid] 1])
                            (slot-value employee1 'last-name)
                            ": "
                            (slot-value employee1 'email))))
-         "Vladamir Lenin: lenin@soviet.org"
+         "Vladimir Lenin: lenin@soviet.org"
          "Ivan Petrov: petrov@soviet.org"
-         "Vladamir Lenin: lenin@soviet.org")
+         "Vladimir Lenin: lenin@soviet.org")
 
        ;; tests update-slot-from-record 
        (deftest :oodml/update-instance/2
                 (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))
+
+       ;; update-object-joins needs to be fixed for multiple keys
+       #+ignore
+       (deftest :oodml/uoj/2
+           (progn
+             (clsql:update-objects-joins (list company1))
+             (mapcar #'(lambda (e)
+                         (slot-value e 'ecompanyid))
+                (company-employees company1)))
+         (1 1 1 1 1 1 1 1 1 1))
        
        (deftest :oodml/big/1 
            (let ((objs (clsql:select 'big :order-by [i] :flatp t)))
                     (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))
+                       1))
+                (setf (slot-value emp1 'height) height)
+                (clsql:update-record-from-slot emp1 'height)))
+         t)
+
+        (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))
+                       1))
+                (setf (slot-value emp1 'height) height)
+                (clsql:update-record-from-slot emp1 'height)))
+         t)
+
+        (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))
+                       1))
+                (setf (slot-value emp1 'height) height)
+                (clsql:update-record-from-slot emp1 'height)))
+          t)
+
+        (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))
+                       1))
+                (setf (slot-value emp1 'height) height)
+                (clsql:update-record-from-slot emp1 'height)))
+         t)
+
+        (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))
+                       1))
+                (setf (slot-value emp1 'height) height)
+                (clsql:update-record-from-slot emp1 'height)))
+         t)
+
        ))
+
+
+
 #.(clsql:restore-sql-reader-syntax-state)