(module test-syntax-reprinter mzscheme (require "syntax-reprinter.ss" (planet "test.ss" ("schematics" "schemeunit.plt" 2 4)) (planet "text-ui.ss" ("schematics" "schemeunit.plt" 2 4))) (define (reprint stx) (define outp (open-output-string)) (syntax-reprint stx outp) (get-output-string outp)) (define reprinter-tests (test-suite "Reprinter tests" (test-equal? "simple test" (reprint (syntax (hello world))) " (hello world)") (test-equal? "dotted pair" (reprint (syntax (hello . nurse))) " (hello . nurse)") (test-equal? "boxy empty" (reprint (syntax [])) " []") (test-equal? "quote using quote" (reprint (syntax (quote hello))) " (quote hello)") (test-equal? "quote in quote in quote" (reprint (syntax '(quote '(quote hello)))) " '(quote '(quote hello))") (test-equal? "list containing lists" (reprint (syntax (hello (world) testing))) " (hello (world) testing)") (test-equal? "vector" (reprint (syntax #(1 2 3 4))) " #(1 2\n 3\n 4)") (test-equal? "quoted list" (reprint (syntax '(hello))) " '(hello)") (test-equal? "syntax spanning lines" (reprint (syntax (hiya world))) " (hiya\n world)") (test-equal? "syntax spanning multiple lines" (reprint (syntax (hiya world))) " (hiya\n\n\n world)"))) (test/text-ui reprinter-tests))