From ffde7e7b42fdf8d9c085ce3592f025b53e6481d3 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Wed, 17 Sep 2008 14:19:55 +0000 Subject: [PATCH] preprocessor tests svn: r11787 --- collects/tests/scribble/main.ss | 17 ++++++++++++++++- collects/tests/scribble/text/i1 | 3 +++ collects/tests/scribble/text/i2 | 25 +++++++++++++++++++++++++ collects/tests/scribble/text/i3 | 18 ++++++++++++++++++ collects/tests/scribble/text/i3a | 1 + collects/tests/scribble/text/i3b | 12 ++++++++++++ collects/tests/scribble/text/o1 | 1 + collects/tests/scribble/text/o2 | 8 ++++++++ collects/tests/scribble/text/o3 | 14 ++++++++++++++ 9 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 collects/tests/scribble/text/i1 create mode 100644 collects/tests/scribble/text/i2 create mode 100644 collects/tests/scribble/text/i3 create mode 100644 collects/tests/scribble/text/i3a create mode 100644 collects/tests/scribble/text/i3b create mode 100644 collects/tests/scribble/text/o1 create mode 100644 collects/tests/scribble/text/o2 create mode 100644 collects/tests/scribble/text/o3 diff --git a/collects/tests/scribble/main.ss b/collects/tests/scribble/main.ss index d5a0307351..74233ee569 100644 --- a/collects/tests/scribble/main.ss +++ b/collects/tests/scribble/main.ss @@ -1,6 +1,8 @@ #lang scheme/base -(require tests/eli-tester scribble/text/syntax-utils) +(require tests/eli-tester scribble/text/syntax-utils scheme/runtime-path) + +(define-runtime-path text-dir "text") (test @@ -76,4 +78,17 @@ (f 3 #:> "]" #:< "[")) => '(1 ("<" 1 ">") ("[" 2 ">") ("[" 3 "]")) + ;; preprocessor functionality + (parameterize ([current-directory text-dir]) + (for ([ifile (map path->string (directory-list))] + #:when (and (file-exists? ifile) + (regexp-match? #rx"^i[0-9]+$" ifile))) + (define ofile (regexp-replace #rx"^i" ifile "o")) + (define expected (call-with-input-file ofile + (lambda (i) (read-bytes (file-size ofile) i)))) + (define o (open-output-bytes)) + (parameterize ([current-output-port o]) + (dynamic-require (path->complete-path ifile) #f)) + (test (get-output-bytes o) => expected))) + ) diff --git a/collects/tests/scribble/text/i1 b/collects/tests/scribble/text/i1 new file mode 100644 index 0000000000..3769a0749e --- /dev/null +++ b/collects/tests/scribble/text/i1 @@ -0,0 +1,3 @@ +#lang scribble/text + +foo diff --git a/collects/tests/scribble/text/i2 b/collects/tests/scribble/text/i2 new file mode 100644 index 0000000000..530e29ebcb --- /dev/null +++ b/collects/tests/scribble/text/i2 @@ -0,0 +1,25 @@ +#lang scribble/text + +@define[name]{PLT Scheme} + +Suggested price list for "@name" + +@; test mutual recursion, throwing away inter-definition spaces +@; <-- this is needed to get one line of space only +@(define (items-num) + (length items)) + +@(define average + (delay (/ (apply + (map car items)) (length items)))) + +@(define items + (list @list[99]{Home} + @list[149]{Professional} + @list[349]{Enterprize})) + +@(for/list ([i items] [n (in-naturals)]) + @list{@|n|. @name @cadr[i] edition: $@car[i].99 + @||})@; <-- also needed + +Total: @items-num items +Average price: $@|average|.99 diff --git a/collects/tests/scribble/text/i3 b/collects/tests/scribble/text/i3 new file mode 100644 index 0000000000..636fd376f1 --- /dev/null +++ b/collects/tests/scribble/text/i3 @@ -0,0 +1,18 @@ +#lang scribble/text + +---***--- +@(define (angled . body) (list "<" body ">")) + @(define (shout . body) @angled[(map string-upcase body)]) + @define[z]{blah} + +blah @angled{blah @shout{@z} blah} blah + +@(define-syntax-rule @twice[x] + (list x ", " x)) + +@twice{@twice{blah}} + +@include{i3a} + +@(let ([name "Eli"]) (let ([foo (include "i3b")]) (list foo "\n" foo))) +Repeating yourself much? diff --git a/collects/tests/scribble/text/i3a b/collects/tests/scribble/text/i3a new file mode 100644 index 0000000000..e1009c1cda --- /dev/null +++ b/collects/tests/scribble/text/i3a @@ -0,0 +1 @@ +Warning: blah overdose might be fatal diff --git a/collects/tests/scribble/text/i3b b/collects/tests/scribble/text/i3b new file mode 100644 index 0000000000..9037c24a65 --- /dev/null +++ b/collects/tests/scribble/text/i3b @@ -0,0 +1,12 @@ +@(define (foo . xs) (bar xs)) +@(begin (define (isname) @list{is @foo{@name}}) + (define-syntax-rule (DEF x y) (define x y))) +@(DEF (bar x) (list z " " x)) +@(define-syntax-rule (BEG x ...) (begin x ...)) +@(BEG (define z "zee")) + +My name @isname +@DEF[x]{Foo!} + + ... and to that I say "@x", I think. + diff --git a/collects/tests/scribble/text/o1 b/collects/tests/scribble/text/o1 new file mode 100644 index 0000000000..257cc5642c --- /dev/null +++ b/collects/tests/scribble/text/o1 @@ -0,0 +1 @@ +foo diff --git a/collects/tests/scribble/text/o2 b/collects/tests/scribble/text/o2 new file mode 100644 index 0000000000..405a0abf33 --- /dev/null +++ b/collects/tests/scribble/text/o2 @@ -0,0 +1,8 @@ +Suggested price list for "PLT Scheme" + +0. PLT Scheme Home edition: $99.99 +1. PLT Scheme Professional edition: $149.99 +2. PLT Scheme Enterprize edition: $349.99 + +Total: 3 items +Average price: $199.99 diff --git a/collects/tests/scribble/text/o3 b/collects/tests/scribble/text/o3 new file mode 100644 index 0000000000..a23359348e --- /dev/null +++ b/collects/tests/scribble/text/o3 @@ -0,0 +1,14 @@ +---***--- +blah blah> blah + +blah, blah, blah, blah + +Warning: blah overdose might be fatal + +My name is zee Eli + ... and to that I say "Foo!", I think. + +My name is zee Eli + ... and to that I say "Foo!", I think. + +Repeating yourself much?