First working version of tests with datasets. So far: internal,connection,basic,fddl...
[clsql.git] / tests / test-ooddl.lisp
index feb827ba707243859e5e046a6122026d69f8279e..7aec9817a03135f103a197e1a2b2420f472d4a58 100644 (file)
 
 (setq *rt-ooddl*
       '(
-       
+
 ;; Ensure slots inherited from standard-classes are :virtual
 (deftest :ooddl/metaclass/1
-    (values 
+    (values
      (clsql-sys::view-class-slot-db-kind
       (clsql-sys::slotdef-for-slot-with-class 'extraterrestrial
                                              (find-class 'person)))
      (every #'(lambda (slotd)
                 (typep slotd 'clsql-sys::view-class-effective-slot-definition))
             (clsql-sys::class-slots (find-class 'employee)))
+     (every #'(lambda (slotd)
+                (typep slotd 'clsql-sys::view-class-effective-slot-definition))
+            (clsql-sys::class-slots (find-class 'setting)))
+     (every #'(lambda (slotd)
+                (typep slotd 'clsql-sys::view-class-effective-slot-definition))
+            (clsql-sys::class-slots (find-class 'theme)))
+     (every #'(lambda (slotd)
+                (typep slotd 'clsql-sys::view-class-effective-slot-definition))
+            (clsql-sys::class-slots (find-class 'node)))
      (every #'(lambda (slotd)
                 (typep slotd 'clsql-sys::view-class-effective-slot-definition))
             (clsql-sys::class-slots (find-class 'company))))
-  t t t)
+  t t t t t t)
+
+;; Ensure classes are correctly marked normalised or not, default not
+;(deftest :ooddl/metaclass/3
+;    (values
+;     (clsql-sys::normalisedp derivednode1)
+;    (clsql-sys::normalisedp basenode)
+;    (clsql-sys::normalisedp company1)
+;    (clsql-sys::normalisedp employee3)
+;    (clsql-sys::normalisedp derivednode-sc-2))
+;  t nil nil nil t)
+
+;(deftest :ooddl/metaclass/3
+; (values
+;  (normalisedp (find-class 'baseclass))
+;  (normalisedp (find-class 'normderivedclass)))
+; nil t)
 
 (deftest :ooddl/join/1
-    (mapcar #'(lambda (e)
-                (slot-value e 'companyid))
-            (company-employees company1))
+    (mapcar #'(lambda (e) (slot-value e 'ecompanyid))
+     (company-employees company1))
   (1 1 1 1 1 1 1 1 1 1))
 
 (deftest :ooddl/join/2
     (slot-value (employee-manager employee2) 'last-name)
   "Lenin")
 
+(deftest :ooddl/big/1
+    (let ((rows (clsql:select [*] :from [big] :order-by [i] :field-names nil)))
+      (values
+       (length rows)
+       (do ((i 0 (1+ i))
+            (max (expt 2 60))
+            (rest rows (cdr rest)))
+           ((= i (length rows)) t)
+         (let ((index (1+ i))
+               (int (first (car rest)))
+               (bigint (second (car rest))))
+           (when (and (or (eq *test-database-type* :oracle)
+                          (and (eq *test-database-type* :odbc)
+                               (eq *test-database-underlying-type* :postgresql)))
+                      (stringp bigint))
+             (setf bigint (parse-integer bigint)))
+           (unless (and (eql int index)
+                        (eql bigint (truncate max index)))
+             (return nil))))))
+  555 t)
+
 (deftest :ooddl/time/1
-    (let* ((now (clsql-base:get-time)))
+    (let* ((now (clsql:get-time)))
       (when (member *test-database-underlying-type* '(:postgresql :postgresql-socket))
         (clsql:execute-command "set datestyle to 'iso'"))
       (clsql:update-records [employee] :av-pairs `((birthday ,now))
                            :where [= [emplid] 1])
-      (let ((dbobj (car (clsql:select 'employee :where [= [birthday] now]))))
+      (let ((dbobj (car (clsql:select 'employee :where [= [birthday] now]
+                                      :flatp t))))
         (values
          (slot-value dbobj 'last-name)
-         (clsql-base:time= (slot-value dbobj 'birthday) now))))
+         (clsql:time= (slot-value dbobj 'birthday) now))))
   "Lenin" t)
 
 (deftest :ooddl/time/2
-    (let* ((now (clsql-base:get-time))
+    (let* ((now (clsql:get-time))
            (fail-index -1))
       (when (member *test-database-underlying-type* '(:postgresql :postgresql-socket))
         (clsql:execute-command "set datestyle to 'iso'"))
       (dotimes (x 40)
         (clsql:update-records [employee] :av-pairs `((birthday ,now))
                              :where [= [emplid] 1])
-        (let ((dbobj (car (clsql:select 'employee :where [= [birthday] now]))))
-          (unless (clsql-base:time= (slot-value dbobj 'birthday) now)
+        (let ((dbobj (car (clsql:select 'employee :where [= [birthday] now]
+                                        :flatp t))))
+          (unless (clsql:time= (slot-value dbobj 'birthday) now)
             (setf fail-index x))
-          (setf now (clsql-base:roll now :day (* 10 x)))))
+          (setf now (clsql:roll now :day (* 10 x)))))
       fail-index)
   -1)
 
+(deftest :ooddl/time/3
+    (progn
+      (when (member *test-database-underlying-type* '(:postgresql :postgresql-socket))
+        (clsql:execute-command "set datestyle to 'iso'"))
+      (let ((dbobj (car (clsql:select 'employee :where [= [emplid] 10]
+                                      :flatp t))))
+        (list
+         (eql *test-start-utime* (slot-value dbobj 'bd-utime))
+         (clsql:time= (slot-value dbobj 'birthday)
+                      (clsql:utime->time (slot-value dbobj 'bd-utime))))))
+  (t t))
+
 ))
 
 #.(clsql:restore-sql-reader-syntax-state)