Add (anything) to tests that match... anything
This commit is contained in:
parent
96d406d98b
commit
c6332cd371
20
d-/test.scm
20
d-/test.scm
@ -1,21 +1,33 @@
|
|||||||
(define-module (d- test)
|
(define-module (d- test)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (ice-9 format)
|
#:use-module (ice-9 format)
|
||||||
#:use-module (ice-9 control)
|
#:use-module (ice-9 control)
|
||||||
#:export (define-test-suite))
|
#:export (define-test-suite anything))
|
||||||
|
|
||||||
|
(define *anysym* (gensym))
|
||||||
|
(define (anything) *anysym*)
|
||||||
|
|
||||||
(define (assert expected actual eq? fail)
|
(define (assert expected actual eq? fail)
|
||||||
(when (not (eq? expected actual))
|
(when (and (not (eq? expected actual)))
|
||||||
(format #t "fail - expected ~a but got ~a" expected actual)
|
(format #t "fail - expected ~a but got ~a" expected actual)
|
||||||
(newline)
|
(newline)
|
||||||
(fail)))
|
(fail)))
|
||||||
|
|
||||||
|
(define (equal-or-any? expected actual)
|
||||||
|
(cond
|
||||||
|
[(eq? *anysym* expected) #t]
|
||||||
|
[(or (not (list? expected))
|
||||||
|
(not (list? actual)))
|
||||||
|
(equal? expected actual)]
|
||||||
|
[else (every equal-or-any? expected actual)]))
|
||||||
|
|
||||||
(define-syntax define-test-suite
|
(define-syntax define-test-suite
|
||||||
(lambda (stx)
|
(lambda (stx)
|
||||||
(with-syntax ([fail (datum->syntax stx 'fail)])
|
(with-syntax ([fail (datum->syntax stx 'fail)])
|
||||||
(define (assert-stx expr)
|
(define (assert-stx expr)
|
||||||
(syntax-case expr (assert-equal assert-not-equal assert-unspecified)
|
(syntax-case expr (assert-equal assert-not-equal assert-unspecified)
|
||||||
[(assert-equal e a) #'(assert e a equal? fail)]
|
[(assert-equal e a) #'(assert e a equal-or-any? fail)]
|
||||||
[(assert-not-equal e a) #'(assert e a (compose not equal?) fail)]
|
[(assert-not-equal e a) #'(assert e a (compose not equal-or-any?) fail)]
|
||||||
[(assert-unspecified v) #'(assert (when #f 'a) v eq? fail)]
|
[(assert-unspecified v) #'(assert (when #f 'a) v eq? fail)]
|
||||||
[else #'else]))
|
[else #'else]))
|
||||||
(define (define-test-stx test)
|
(define (define-test-stx test)
|
||||||
|
8
test.scm
8
test.scm
@ -1,7 +1,7 @@
|
|||||||
(use-modules (d-)
|
(use-modules (d-)
|
||||||
(d- test)
|
|
||||||
(d- json)
|
(d- json)
|
||||||
(srfi srfi-1))
|
(srfi srfi-1)
|
||||||
|
(d- test))
|
||||||
|
|
||||||
(define-test-suite "~>"
|
(define-test-suite "~>"
|
||||||
(define-test "unwrapped"
|
(define-test "unwrapped"
|
||||||
@ -116,6 +116,10 @@
|
|||||||
(list betty ethel joan kitty mary)))
|
(list betty ethel joan kitty mary)))
|
||||||
(assert-equal '(3 5 2 1 4) (liars))))
|
(assert-equal '(3 5 2 1 4) (liars))))
|
||||||
|
|
||||||
|
(define-test-suite "test"
|
||||||
|
(define-test "anything"
|
||||||
|
(assert-equal `(dog ,(anything)) '(dog cat))))
|
||||||
|
|
||||||
(define-test-suite "json"
|
(define-test-suite "json"
|
||||||
(define-test "boolean"
|
(define-test "boolean"
|
||||||
(assert-equal #t (json "true"))
|
(assert-equal #t (json "true"))
|
||||||
|
Loading…
Reference in New Issue
Block a user