#lang racket/base (require "safe-io.rkt") (require rackunit) (define (s str) (open-input-string str)) (check-equal? (read-line-limited (s "") 5) eof) (check-equal? (read-line-limited (s "abc") 5) "abc") (check-equal? (read-line-limited (s "abc\r\ndef") 5) "abc") (check-equal? (read-line-limited (s "abcxy\r\ndef") 5) "abcxy") (check-exn #rx"read-line-limited: Invalid character # after #\\\\return" (lambda () (read-line-limited (s "abc\r") 5))) (check-exn #rx"read-line-limited: Invalid character #\\\\d after #\\\\return" (lambda () (read-line-limited (s "abc\rdef") 5))) (check-exn #rx"Bare #\\\\linefeed encountered" (lambda () (read-line-limited (s "abc\ndef") 5))) (check-exn #rx"Line too long \\(more than 5 bytes before CRLF\\)" (lambda () (read-line-limited (s "abcxyz\r\ndef") 5)))