racket/collects/tests/xrepl/wrapped-output.rkt
Eli Barzilay d28b0c0806 Use `scribble/text/wrap' in xrepl.
(Also organize the tests a little.)
2012-05-06 05:38:04 -04:00

42 lines
1.7 KiB
Racket

#lang at-exp racket/base
(require tests/eli-tester xrepl/xrepl racket/string)
(define-values [do-xrepl-wrapped-output wrap-width]
(parameterize ([current-namespace (module->namespace 'xrepl/xrepl)])
(apply values (map namespace-variable-value
'(do-xrepl-wrapped-output wrap-width)))))
(define (wrap . text)
(parameterize ([wrap-width 12]
[current-output-port (open-output-string)])
;; use "#"s in the input to avoid messing up highlighting in emacs
(do-xrepl-wrapped-output
(λ () (display (regexp-replace* #rx"#" (string-append* text) ";"))))
(regexp-replace* #rx";" (get-output-string (current-output-port)) "#")))
(provide test-wrapped-output)
(module+ main (test-wrapped-output))
(define (test-wrapped-output)
(define n "\n")
(define s string-append)
(define w wrap)
(test @w{blah} => @s{blah}
@w{blah@n} => @s{blah@n}
@w{#blah} => @s{#blah}
@w{#blah@n} => @s{#blah@n}
@w{#blah @n} => @s{#blah@n}
@w{# blah@n} => @s{# blah@n}
@w{# blah @n} => @s{# blah@n}
@w{#blah@|n|#blah@n}
=> @s{#blah@|n|#blah@n}
@w{#ab cd ef gh ij kl mn op qr st}
=> @s{#ab cd ef gh@|n|# ij kl mn@|n|# op qr st}
@w{#ab cd ef gh ij kl mn op qr st@n}
=> @s{#ab cd ef gh@|n|# ij kl mn@|n|# op qr st@n}
@w{#ab@|n|#cd ef gh ij kl mn op qr st@n}
=> @s{#ab@|n|#cd ef gh ij@|n|# kl mn op@|n|# qr st@n}
@w{# ab@|n|# cd ef gh ij kl mn op qr st@n}
=> @s{# ab@|n|# cd ef gh@|n|# ij kl@|n|# mn op@|n|# qr st@n}
@w{# ab@|n|# cd ef gh ij kl mn op qr st@n}
=> @s{# ab@|n|# cd ef gh@|n|# ij kl mn@|n|# op qr@|n|# st@n}))