;;;; 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.7 2002/04/24 16:10:55 kevin Exp $
;;;;
;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;;;; 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"))
(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)