r9482: * doc/TODO: Add AUTOCOMMIT. Remove need for large table and bigint
[clsql.git] / tests / test-oodml.lisp
index 2ae3005c55e16e73b5fd7473b233408313103f36..4898067161a9b387a840a8fb21f1a30bb75bad8a 100644 (file)
             (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)))
          ("Lenin" "Stalin" "Trotsky"))
 
 
-      (deftest oodml/cache/1
+      (deftest :oodml/cache/1
          (progn
            (setf (clsql-sys:record-caches *default-database*) nil)
            (let ((employees (select 'employee)))
                     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"))
                        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)))
          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)
                 (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)
+       
        ))
 #.(clsql:restore-sql-reader-syntax-state)