diff --git a/collects/tests/r6rs/reader.ss b/collects/tests/r6rs/reader.ss new file mode 100644 index 0000000000..028d2515e6 --- /dev/null +++ b/collects/tests/r6rs/reader.ss @@ -0,0 +1,102 @@ +#!r6rs + +(library (tests r6rs reader) + (export run-reader-tests) + (import (rnrs) + (tests r6rs test)) + + (define-syntax number-test + (syntax-rules () + [(_ str ...) + (begin + (test (read (open-string-input-port str)) + (string->number str)) + ...)])) + + (define (run-reader-tests) + (number-test + "12" + "+12" + "3427384783264876238746784234" + "0" + "+0" + "-12" + "-3498738947983748939478347834" + "-0" + "#x-238973897AAAAAFFFFbb00bbdddcc" + "#x238973897AAAAA000FFFFbbbbdddcc" + "#x+07edf387" + "#x+0" + "#x-0" + "#x0" + "#b01010101010000000111111111110000" + "#b-01010101010000000111111111110000" + "#b+01010101010000000111111111110000" + "#b+0" + "#b-0" + "#b0" + "#d2398128321308912830912830912839" + "#d-2398128321308912830912830912839" + "#d+2398128321308912830912830912839" + "#d+0" + "#d-0" + "#d0" + "#o237612036721631263126371263712" + "#o-2376120036721631263126371263712" + "#o+23761236721631263126371263712" + "#o+0" + "#o-0" + "#o0" + + "#X-238973897AAAAAFFFFbb00bbdddcc" + "#X238973897AAAAA000FFFFbbbbdddcc" + "#X+07edf387" + "#X+0" + "#X-0" + "#X0" + "#B01010101010000000111111111110000" + "#B-01010101010000000111111111110000" + "#B+01010101010000000111111111110000" + "#B+0" + "#B-0" + "#B0" + "#D2398128321308912830912830912839" + "#D-2398128321308912830912830912839" + "#D+2398128321308912830912830912839" + "#D+0" + "#D-0" + "#D0" + "#O237612036721631263126371263712" + "#O-2376120036721631263126371263712" + "#O+23761236721631263126371263712" + "#O+0" + "#O-0" + "#O0") + + (test (read (open-string-input-port "#\\nul")) + (integer->char #x0)) + (test (read (open-string-input-port "#\\alarm")) + (integer->char #x7)) + (test (read (open-string-input-port "#\\backspace")) + (integer->char #x8)) + (test (read (open-string-input-port "#\\tab")) + (integer->char #x9)) + (test (read (open-string-input-port "#\\linefeed")) + (integer->char #xA)) + (test (read (open-string-input-port "#\\newline")) + (integer->char #xA)) + (test (read (open-string-input-port "#\\vtab")) + (integer->char #xB)) + (test (read (open-string-input-port "#\\page")) + (integer->char #xC)) + (test (read (open-string-input-port "#\\return")) + (integer->char #xD)) + (test (read (open-string-input-port "#\\esc")) + (integer->char #x1B)) + (test (read (open-string-input-port "#\\space")) + (integer->char #x20)) + (test (read (open-string-input-port "#\\delete")) + (integer->char #x7F)) + + ;; + ))