074-num-str-conv.scm (1768B)
1 ; number->string returns a fresh string with the requested representation. 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 (if (string? (number->string 42)) 0 (sys-exit 20)) 11 (if (not (bytevector? (number->string 42))) 0 (sys-exit 21)) 12 13 (if (= 0 (string->number "0")) 0 (sys-exit 6)) 14 (if (= 1 (string->number "1")) 0 (sys-exit 7)) 15 (if (= 42 (string->number "42")) 0 (sys-exit 8)) 16 (if (= -7 (string->number "-7")) 0 (sys-exit 9)) 17 (if (= 1234567 (string->number "1234567")) 0 (sys-exit 10)) 18 19 (if (not (string->number "")) 0 (sys-exit 11)) 20 (if (not (string->number "-")) 0 (sys-exit 12)) 21 (if (not (string->number "abc")) 0 (sys-exit 13)) 22 (if (not (string->number "12a")) 0 (sys-exit 14)) 23 (if (not (string->number "1.5")) 0 (sys-exit 15)) 24 25 (if (= 99 (string->number (number->string 99))) 0 (sys-exit 16)) 26 (if (= -99 (string->number (number->string -99))) 0 (sys-exit 17)) 27 28 ; Micro supports radix 10 and radix 16 and rejects all others. 29 (if (bytevector=? "42" (number->string 42 10)) 0 (sys-exit 18)) 30 (if (= 42 (string->number "42" 10)) 0 (sys-exit 19)) 31 (if (string=? "ff" (number->string 255 16)) 0 (sys-exit 22)) 32 (if (string=? "-ff" (number->string -255 16)) 0 (sys-exit 23)) 33 (if (= 255 (string->number "ff" 16)) 0 (sys-exit 24)) 34 (if (= -255 (string->number "-ff" 16)) 0 (sys-exit 25)) 35 36 (sys-exit 0)