mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
* tests/numbers.test: Added a test case that checks if valid
number strings are transformed correctly by string->number.
This commit is contained in:
parent
aa5e5d63eb
commit
b7d9b1cf5a
2 changed files with 58 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-10-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||
|
||||
* tests/numbers.test: Added a test case that checks if valid
|
||||
number strings are transformed correctly by string->number.
|
||||
|
||||
2001-09-21 Rob Browning <rlb@defaultvalue.org>
|
||||
|
||||
* tests/numbers.test (fixnum-bit): compute dynamically.
|
||||
|
|
|
@ -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:
|
||||
;; * <uinteger 10> <suffix>
|
||||
("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)
|
||||
;; * . <digit 10>+ #* <suffix>
|
||||
(".1" .1) (".0123456789" 123456789e-10) (".16#" 0.16)
|
||||
(".0123456789e10" 123456789.0) (".16#e3" 160.0) ("#d.3" 0.3)
|
||||
;; * <digit 10>+ . <digit 10>* #* <suffix>
|
||||
("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)
|
||||
;; * <digit 10>+ #+ . #* <suffix>
|
||||
("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")))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue