r2913: *** empty log message ***
[clsql.git] / test-suite / tester-clsql.cl
index 03045fadd19ba94de0524de0188516713780475b..ad121e4cba2596068f3388352c944decf3c34c2a 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id: tester-clsql.cl,v 1.5 2002/04/19 20:25:20 marc.battyani Exp $
+;;;; $Id: tester-clsql.cl,v 1.9 2002/09/30 01:57:32 kevin Exp $
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
        (dotimes (i 10)
          (clsql-mysql::database-execute-command
           (format nil "INSERT INTO test_clsql VALUES (~d,~d,'~a')"
-                  i (number-to-sql-string (sqrt i))
-                  (number-to-sql-string (sqrt i)))
+                  i (clsql:number-to-sql-string (sqrt i))
+                  (clsql:number-to-sql-string (sqrt i)))
           db))
        (let ((res (clsql-mysql::database-query-result-set "select * from test_clsql" db :full-set t :types nil)))
          (test (mysql:mysql-num-rows
 ;;;; Testing functions
 
 (defun transform-float-1 (i)
-  (* i (abs (/ i 2)) (expt 10 (* 2 i))))
+  (coerce (* i (abs (/ i 2)) (expt 10 (* 2 i))) 'double-float))
 
 (defun transform-bigint-1 (i)
   (* i (expt 10 (* 3 (abs i)))))
              (format nil "Invalid types field (~S) passed to test-table-row" types))))
     (test (transform-float-1 int)
          float
-         :test #'=
+         :test #'eql
          :fail-info 
          (format nil "Wrong float value ~A for int ~A (row ~S)" float int row))
-    (test  (parse-double str)
-          float
-          :test #'eql
-          :fail-info (format nil "Wrong string value ~A" str))))
-
-
+    (test float
+         (parse-double str)
+         :test #'double-float-equal
+         :fail-info (format nil "Wrong string value ~A for double ~A~%Row: ~S"
+                            str float row))))
+
+
+(defun double-float-equal (a b)
+  (if (zerop a)
+      (if (zerop b)
+         t
+         nil)
+      (let ((diff (abs (/ (- a b) a))))
+       (if (> diff (* 10 double-float-epsilon))
+           nil
+           t))))
+        
 (defun drop-test-table (db)
-  (clsql:execute-command "DROP TABLE test_clsql"))
-
-
+  (clsql:execute-command "DROP TABLE test_clsql" :database db))
 
 (defun do-test ()
     (let ((specs (read-specs)))
-      (mysql-low-level specs)
-      (mysql-table-test specs)
-      (pgsql-table-test specs)
-      (pgsql-socket-table-test specs)
-      (aodbc-table-test specs)
-      ))
+      (with-tests (:name "CLSQL")
+       (mysql-low-level specs)
+       (mysql-table-test specs)
+       (pgsql-table-test specs)
+       (pgsql-socket-table-test specs)
+       (aodbc-table-test specs)
+      )))
 
 
 (do-test)