diff options
Diffstat (limited to 'test-suite/tests/chars.test')
-rw-r--r-- | test-suite/tests/chars.test | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test-suite/tests/chars.test b/test-suite/tests/chars.test index 509f07066..25c82e825 100644 --- a/test-suite/tests/chars.test +++ b/test-suite/tests/chars.test @@ -29,6 +29,16 @@ (cons #t "out-of-range")) +;; Run THUNK in the context of the reader options OPTS +(define (with-read-options opts thunk) + (let ((saved-options (read-options))) + (dynamic-wind + (lambda () + (read-options opts)) + thunk + (lambda () + (read-options saved-options))))) + (with-test-prefix "basic char handling" (with-test-prefix "evaluator" @@ -313,3 +323,37 @@ (with-output-to-string (lambda () (write #\soh))) "#\\soh")))) +(with-test-prefix "R6RS hex escapes" + + (pass-if "one-digit hex escape" + (eqv? (with-read-options '(r6rs-hex-escapes) + (lambda () + (with-input-from-string "#\\xA" read))) + (integer->char #x0A))) + + (pass-if "two-digit hex escape" + (eqv? (with-read-options '(r6rs-hex-escapes) + (lambda () + (with-input-from-string "#\\xFF" read))) + (integer->char #xFF))) + + (pass-if "four-digit hex escape" + (eqv? (with-read-options '(r6rs-hex-escapes) + (lambda () + (with-input-from-string "#\\x00FF" read))) + (integer->char #xFF))) + + (pass-if "eight-digit hex escape" + (eqv? (with-read-options '(r6rs-hex-escapes) + (lambda () + (with-input-from-string "#\\x00006587" read))) + (integer->char #x6587))) + (pass-if "write R6RS escapes" + (string=? + (with-read-options '(r6rs-hex-escapes) + (lambda () + (with-output-to-string + (lambda () + (write (integer->char #x80)))))) + "#\\x80"))) + |