From b7d9b1cf5a1e1736b416e2e2dea1da46710154ba Mon Sep 17 00:00:00 2001 From: Dirk Herrmann Date: Sat, 13 Oct 2001 12:29:44 +0000 Subject: [PATCH] * tests/numbers.test: Added a test case that checks if valid number strings are transformed correctly by string->number. --- test-suite/ChangeLog | 5 ++++ test-suite/tests/numbers.test | 53 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog index c70fc90ed..dbdec40cb 100644 --- a/test-suite/ChangeLog +++ b/test-suite/ChangeLog @@ -1,3 +1,8 @@ +2001-10-13 Dirk Herrmann + + * tests/numbers.test: Added a test case that checks if valid + number strings are transformed correctly by string->number. + 2001-09-21 Rob Browning * tests/numbers.test (fixnum-bit): compute dynamically. diff --git a/test-suite/tests/numbers.test b/test-suite/tests/numbers.test index ad02d62cb..ab3b80234 100644 --- a/test-suite/tests/numbers.test +++ b/test-suite/tests/numbers.test @@ -867,6 +867,59 @@ "#i#i1" "12@12+0i")) #t) + (pass-if "valid number strings" + (for-each (lambda (couple) + (apply + (lambda (x y) + (let ((x (string->number x))) + (if (or (eq? x #f) (not (eqv? x y))) (throw 'fail)))) + couple)) + `(;; Radix: + ("#b0" 0) ("#B0" 0) ("#b1" 1) ("#B1" 1) ("#o0" 0) ("#O0" 0) + ("#o1" 1) ("#O1" 1) ("#o2" 2) ("#O2" 2) ("#o3" 3) ("#O3" 3) + ("#o4" 4) ("#O4" 4) ("#o5" 5) ("#O5" 5) ("#o6" 6) ("#O6" 6) + ("#o7" 7) ("#O7" 7) ("#d0" 0) ("#D0" 0) ("#d1" 1) ("#D1" 1) + ("#d2" 2) ("#D2" 2) ("#d3" 3) ("#D3" 3) ("#d4" 4) ("#D4" 4) + ("#d5" 5) ("#D5" 5) ("#d6" 6) ("#D6" 6) ("#d7" 7) ("#D7" 7) + ("#d8" 8) ("#D8" 8) ("#d9" 9) ("#D9" 9) + ("#xa" 10) ("#Xa" 10) ("#xb" 11) ("#Xb" 11) + ("#xc" 12) ("#Xc" 12) ("#xd" 13) ("#Xd" 13) + ("#xe" 14) ("#Xe" 14) ("#xf" 15) ("#Xf" 15) + ("#b1010" 10) + ("#o12345670" 2739128) + ("#d1234567890" 1234567890) + ("#x1234567890abcdef" 1311768467294899695) + ;; Exactness: + ("#e1" 1) ("#e1.2" 1) ("#i1.1" 1.1) ("#i1" 1.0) + ;; Integers: + ("1" ,(1+ 0)) ("23" ,(+ 9 9 5)) ("-1" ,(- 0 1)) + ("-45" ,(- 0 45)) ("2#" 20.0) ("2##" 200.0) ("12##" 1200.0) + ("#b#i100" 4.0) + ;; Rationals: + ("1/1" 1) ("1/2" 0.5) ("-1/2" -0.5) ("1#/1" 10.0) + ("10/1#" 1.0) ("1#/1#" 1.0) ("#e9/10" 1) ("#e10/1#" 1) + ("#i6/8" 0.75) ("#i1/1" 1.0) + ;; Decimal numbers: + ;; * + ("1e2" 100.0) ("1E2" 100.0) ("1s2" 100.0) ("1S2" 100.0) + ("1f2" 100.0) ("1F2" 100.0) ("1d2" 100.0) ("1D2" 100.0) + ("1l2" 100.0) ("1L2" 100.0) ("1e+2" 100.0) ("1e-2" 0.01) + ;; * . + #* + (".1" .1) (".0123456789" 123456789e-10) (".16#" 0.16) + (".0123456789e10" 123456789.0) (".16#e3" 160.0) ("#d.3" 0.3) + ;; * + . * #* + ("3." ,(exact->inexact 3)) ("3.e0" ,(exact->inexact 3)) + ("3.1" ,(exact->inexact 31/10)) ("3.1e0" 3.1) ("3.1#" 3.1) + ("3.1#e0" 3.1) + ;; * + #+ . #* + ("3#." 30.0) ("3#.e0" 30.0) ("3#.#" 30.0) ("3#.#e0" 30.0) + ;; Complex: + ("1@0" 1.0) ("1@+0" 1.0) ("1@-0" 1.0) + ("2+3i" ,(+ 2 (* 3 +i))) ("4-5i" ,(- 4 (* 5 +i))) + ("1+i" 1+1i) ("1-i" 1-1i) ("+1i" 0+1i) ("-1i" 0-1i) + ("+i" +1i) ("-i" -1i))) + #t) + (pass-if-exception "exponent too big" exception:out-of-range (string->number "12.13e141414")))