074-num-str-conv.scm (1549B)
1 ; number->string returns a fresh bytevector with the decimal repr. 2 ; string->number parses decimal (optional leading -) into a fixnum, 3 ; or #f on garbage / empty input. 4 5 (if (bytevector=? "0" (number->string 0)) 0 (sys-exit 1)) 6 (if (bytevector=? "1" (number->string 1)) 0 (sys-exit 2)) 7 (if (bytevector=? "42" (number->string 42)) 0 (sys-exit 3)) 8 (if (bytevector=? "-7" (number->string -7)) 0 (sys-exit 4)) 9 (if (bytevector=? "1234567" (number->string 1234567)) 0 (sys-exit 5)) 10 11 (if (= 0 (string->number "0")) 0 (sys-exit 6)) 12 (if (= 1 (string->number "1")) 0 (sys-exit 7)) 13 (if (= 42 (string->number "42")) 0 (sys-exit 8)) 14 (if (= -7 (string->number "-7")) 0 (sys-exit 9)) 15 (if (= 1234567 (string->number "1234567")) 0 (sys-exit 10)) 16 17 (if (not (string->number "")) 0 (sys-exit 11)) 18 (if (not (string->number "-")) 0 (sys-exit 12)) 19 (if (not (string->number "abc")) 0 (sys-exit 13)) 20 (if (not (string->number "12a")) 0 (sys-exit 14)) 21 (if (not (string->number "1.5")) 0 (sys-exit 15)) 22 23 (if (= 99 (string->number (number->string 99))) 0 (sys-exit 16)) 24 (if (= -99 (string->number (number->string -99))) 0 (sys-exit 17)) 25 26 ; Radix arg is part of the surface (LISP.md). Impl is decimal-only for 27 ; now; passing radix=10 must match the no-radix call. Other radices are 28 ; not yet pinned by tests since the impl ignores them. 29 (if (bytevector=? "42" (number->string 42 10)) 0 (sys-exit 18)) 30 (if (= 42 (string->number "42" 10)) 0 (sys-exit 19)) 31 32 (sys-exit 0)