66 lines
2.0 KiB
Scheme
66 lines
2.0 KiB
Scheme
|
|
(library (tests string-to-number)
|
|
(export test-string-to-number)
|
|
(import (ikarus) (tests framework))
|
|
(define (t x s)
|
|
(let ([fl (format "~a" (exact->inexact x))])
|
|
(unless (string=? s fl)
|
|
(error 'bignum->flonum
|
|
"incorrect result for ~s\n expected ~a, \n got ~a" x s fl))))
|
|
(define-syntax test*
|
|
(syntax-rules ()
|
|
[(_ name [str num] ...)
|
|
(define-tests name
|
|
[(lambda (x) (and x (= x num)))
|
|
(string->number str)]
|
|
...)]))
|
|
(test* test-string-to-number
|
|
("10" 10)
|
|
("1" 1)
|
|
("-17" -17)
|
|
("+13476238746782364786237846872346782364876238477"
|
|
13476238746782364786237846872346782364876238477)
|
|
("1/2" (/ 1 2))
|
|
("-1/2" (/ 1 -2))
|
|
("#x24" 36)
|
|
("#x-24" -36)
|
|
("#b+00000110110" 54)
|
|
("#b-00000110110/10" -27)
|
|
("#e10" 10)
|
|
("#e1" 1)
|
|
("#e-17" -17)
|
|
("#e#x24" 36)
|
|
("#e#x-24" -36)
|
|
("#e#b+00000110110" 54)
|
|
("#e#b-00000110110/10" -27)
|
|
("#x#e24" 36)
|
|
("#x#e-24" -36)
|
|
("#b#e+00000110110" 54)
|
|
("#b#e-00000110110/10" -27)
|
|
("#e1e1000" (expt 10 1000))
|
|
("#e-1e1000" (- (expt 10 1000)))
|
|
("#e1e-1000" (expt 10 -1000))
|
|
("#e-1e-1000" (- (expt 10 -1000)))
|
|
("#i1e100" (exact->inexact (expt 10 100)))
|
|
("#i1e1000" (exact->inexact (expt 10 1000)))
|
|
("#i-1e1000" (exact->inexact (- (expt 10 1000))))
|
|
("1e100" (exact->inexact (expt 10 100)))
|
|
("1.0e100" (exact->inexact (expt 10 100)))
|
|
("1.e100" (exact->inexact (expt 10 100)))
|
|
("0.1e100" (exact->inexact (expt 10 99)))
|
|
(".1e100" (exact->inexact (expt 10 99)))
|
|
("+1e100" (exact->inexact (expt 10 100)))
|
|
("+1.0e100" (exact->inexact (expt 10 100)))
|
|
("+1.e100" (exact->inexact (expt 10 100)))
|
|
("+0.1e100" (exact->inexact (expt 10 99)))
|
|
("+.1e100" (exact->inexact (expt 10 99)))
|
|
("-1e100" (exact->inexact (- (expt 10 100))))
|
|
("-1.0e100" (exact->inexact (- (expt 10 100))))
|
|
("-1.e100" (exact->inexact (- (expt 10 100))))
|
|
("-0.1e100" (exact->inexact (- (expt 10 99))))
|
|
("-.1e100" (exact->inexact (- (expt 10 99))))))
|
|
|
|
|
|
|
|
|