aboutsummaryrefslogtreecommitdiffstats
path: root/tests/s9fes.scm
blob: 5b02963706da914198584ad8d4c9199063c7f794 (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
;;; Shim for SRFI-64 for unhygenic, single threaded systems.

(define tests-passed 0)
(define tests-failed 0)
(define current-test-name '())

(define-syntax test-equal
  (lambda (name-e expected-e got-e)
    (let ((name* (gensym 'name))
          (expected* (gensym 'expected))
          (got* (gensym 'got))
          (passed?* (gensym 'passed?)))
      `(let* ((,name* ,name-e)
              (,expected* ,expected-e)
              (,got* ,got-e)
              (,passed?* (equal? ,expected* ,got*)))
         (if ,passed?*
             (begin
               (set! tests-passed (+ 1 tests-passed))
               (pretty-print
                (list 'name (cons ,name* current-test-name)
                      'passed)))
             (begin
               (set! tests-failed (+ 1 tests-failed))
               (pretty-print
                (list 'name (cons ,name* current-test-name)
                      'failed
                      (list (list 'expected ,expected*)
                            (list 'got ,got*)))
                'data)))
         (newline)))))

(define-syntax test-group
  (lambda (name-e . body)
    (let ((old-test-name* (gensym 'old-test-name))
          (name* (gensym 'name)))
      `(let ((,old-test-name* current-test-name)
             (,name* ,name-e))
         (pretty-print (list 'entering ,name*) 'data)
         (set! current-test-name (cons ,name* ,old-test-name*))
         ,@body
         (set! current-test-name ,old-test-name*)
         (pretty-print
          (list 'leaving ,name*
                (list 'accumulated
                      (list 'passed tests-passed)
                      (list 'failed tests-failed)))
          'data)
         (newline)))))

(load "../RPS.scm")
(load "../macros.scm")
(load "body.scm")