cleaning up patches, and fixing missing pkey bugs in sqlite3
[clsql.git] / tests / test-basic.lisp
index 2c13d803f6f6d9a628cc6946805352da8c458240..4d277e358d14ba2c722940c36e02df888371048d 100644 (file)
@@ -7,9 +7,7 @@
 ;;;; Author:  Kevin M. Rosenberg
 ;;;; Created: Mar 2002
 ;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
                     results)
              (destructuring-bind (int bigint) row
                (push (list (integerp int)
-                           (if (and (eq :odbc *test-database-type*)
-                                    (eq :postgresql *test-database-underlying-type*))
-                               ;; ODBC/Postgresql may return returns bigints as strings or integer
-                               ;; depending upon the platform
-                               t
-                               (integerp bigint)))
+                            (integerp bigint))
                      results)))))
       ((t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t) (t t)))
 
            ))
       nil)
     (deftest :basic/bigtext/2
-       (dotimes (n 10)
-         (with-dataset *ds-bigtext*
-           (let* ((len (random 7500))
-                  (str (make-string len :initial-element #\a))
-                  (cmd (format nil "INSERT INTO testbigtext (a) VALUES ('~a')" str)))
-             (execute-command cmd)
-             (let ((a (first (query "SELECT a from testbigtext"
-                                    :flatp t :field-names nil))))
-               (assert (string= str a) (str a)
-                       "mismatch on a. inserted: ~a returned: ~a" len (length a)))
-             )))
-      nil)
-
-    (deftest :basic/i18n/1
-       (first (query "SELECT 'Iñtërnâtiônàlizætiøn'"
-                     :flatp t :field-names nil))
-      "Iñtërnâtiônàlizætiøn")
+     (flet ((random-char ()
+              (let ((alphabet "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
+                    (idx (random 52)))
+                (elt alphabet idx))))
+       (dotimes (n 10)
+         (with-dataset *ds-bigtext*
+           (let* ((len (random 7500))
+                  (str (coerce (make-array len
+                                           :initial-contents (loop repeat len collect (random-char)))
+                               'string))
+                  (cmd (format nil "INSERT INTO testbigtext (a) VALUES ('~a')" str)))
+             (execute-command cmd)
+             (let ((a (first (query "SELECT a from testbigtext"
+                                    :flatp t :field-names nil))))
+               (assert (string= str a) (str a)
+                       "mismatch on randomized bigtext(~a) inserted: ~s returned: ~s" len str a))
+             ))))
+     nil)
 
-    (deftest :basic/i18n/2
-       (first (query "SELECT 'Iñtërnâtiônàližætiøn'"
-                     :flatp t :field-names nil))
-      "Iñtërnâtiônàližætiøn")
+    (deftest :basic/reallybigintegers/1
+        (with-dataset *ds-reallybigintegers*
+          (let* ((a (1- (expt 2 64)))
+                 (b (- (expt 2 64) 2))
+                 (c (expt 2 63))
+                 (d (expt 2 62))
+                 (sql (format nil "INSERT INTO testreallybigintegers
+                              VALUES (~A, ~A, ~A, ~A)"
+                              a b c d)))
+            (query sql)
+            (let ((results
+                    (query
+                     (format nil "SELECT * FROM testreallybigintegers"))))
+              (equal `(,a ,b ,c ,d) (car results)))))
+      t)
     ))
 
 
 (def-dataset *ds-bigtext*
   (:setup "CREATE TABLE testbigtext(a varchar(7500))")
   (:cleanup "DROP TABLE testbigtext"))
+
+(def-dataset *ds-reallybigintegers*
+  (:setup (lambda ()
+            (ignore-errors
+             (clsql:execute-command "DROP TABLE testreallybigintegers"))
+            (clsql:execute-command
+             "CREATE TABLE testreallybigintegers( a BIGINT UNSIGNED,
+                                                  b BIGINT UNSIGNED,
+                                                  c BIGINT UNSIGNED,
+                                                  d BIGINT UNSIGNED )")))
+  (:cleanup "DROP TABLE testreallybigintegers"))