24 lines
822 B
Racket
24 lines
822 B
Racket
|
#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 #<eof> 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)))
|