aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cuprate.define-test-application.scm
blob: f28eb3795e0de06039a84f8348f1ff47b304c6a9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(define-syntax define-test-application
  (syntax-rules ()
    ((_ name (args ...))
     (define-test-application "loop" name (args ...) () ()))
    ((_ "loop" name ((default) args ...) (rest ...) ids)
     (define-test-application "loop" name (args ...)
       ((#f default) rest ...) ids))
    ((_ "loop" name (arg args ...) (rest ...) (ids ...))
     (define-test-application "loop" name (args ...)
       ((arg tmp) rest ...) (tmp ids ...)))
    ((_ "loop" name () stuff ids)
     (define-test-application "reverse1" name stuff ids ()))
    ((_ "reverse1" name (pair rest ...) ids (acc ...))
     (define-test-application "reverse1" name (rest ...) ids (pair acc ...)))
    ((_ "reverse1" name () ids pairs)
     (define-test-application "reverse2" name ids () pairs))
    ((_ "reverse2" name (id1 id2 ...) (acc ...) pairs)
     (define-test-application "reverse2" name (id2 ...) (id1 acc ...) pairs))
    ((_ "reverse2" name () (ids ...) (pairs ...))
     (define-syntax name
       (syntax-rules ()
         ((_ ids ...) (name #f ids ...))
         ((_ test-name ids ...)
          (test-named-application test-name pairs ...)))))))