adding some tests from the Racket test suite regarding with-continuation-mark
This commit is contained in:
parent
a35190c07e
commit
6cc07abd25
|
@ -1087,52 +1087,85 @@
|
||||||
(make-ContinuationMarkSet (list (cons 'name "danny"))))
|
(make-ContinuationMarkSet (list (cons 'name "danny"))))
|
||||||
|
|
||||||
|
|
||||||
(test '(begin (define (extract-current-continuation-marks key)
|
|
||||||
(continuation-mark-set->list
|
(define-syntax (wcm-test stx)
|
||||||
(current-continuation-marks)
|
(syntax-case stx ()
|
||||||
key))
|
[(_ code expected options ...)
|
||||||
(with-continuation-mark 'key 'mark
|
(syntax/loc stx
|
||||||
(extract-current-continuation-marks 'key)))
|
(let ([code-val code])
|
||||||
'(mark))
|
(test `(begin (define (extract-current-continuation-marks key)
|
||||||
|
(continuation-mark-set->list
|
||||||
|
(current-continuation-marks)
|
||||||
|
key))
|
||||||
|
,code-val)
|
||||||
|
expected
|
||||||
|
options ...)))]))
|
||||||
|
|
||||||
|
|
||||||
|
(wcm-test '(with-continuation-mark 'key 'mark
|
||||||
|
(extract-current-continuation-marks 'key))
|
||||||
|
'(mark))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(test '(begin (define (extract-current-continuation-marks key)
|
(wcm-test '(with-continuation-mark 'key1 'mark1
|
||||||
(continuation-mark-set->list
|
(with-continuation-mark 'key2 'mark2
|
||||||
(current-continuation-marks)
|
(list
|
||||||
key))
|
(extract-current-continuation-marks 'key1)
|
||||||
|
(extract-current-continuation-marks 'key2))))
|
||||||
|
'((mark1) (mark2)))
|
||||||
|
|
||||||
|
|
||||||
(with-continuation-mark 'key1 'mark1
|
(wcm-test '(with-continuation-mark 'key 'mark1
|
||||||
(with-continuation-mark 'key2 'mark2
|
(with-continuation-mark 'key 'mark2 ; replaces previous mark
|
||||||
(list
|
(extract-current-continuation-marks 'key)))
|
||||||
(extract-current-continuation-marks 'key1)
|
'(mark2))
|
||||||
(extract-current-continuation-marks 'key2)))))
|
|
||||||
|
|
||||||
'((mark1) (mark2)))
|
|
||||||
|
|
||||||
|
|
||||||
(test '(begin (define (extract-current-continuation-marks key)
|
(wcm-test '(with-continuation-mark 'key 'mark1
|
||||||
(continuation-mark-set->list
|
(list ; continuation extended to evaluate the argument
|
||||||
(current-continuation-marks)
|
(with-continuation-mark 'key 'mark2
|
||||||
key))
|
(extract-current-continuation-marks 'key))))
|
||||||
(with-continuation-mark 'key 'mark1
|
'((mark2 mark1)))
|
||||||
(with-continuation-mark 'key 'mark2 ; replaces previous mark
|
|
||||||
(extract-current-continuation-marks 'key))))
|
|
||||||
'(mark2))
|
|
||||||
|
|
||||||
|
(wcm-test '(extract-current-continuation-marks 'key)
|
||||||
|
'())
|
||||||
|
|
||||||
;; Hmm... something is failing here.
|
(wcm-test '(with-continuation-mark 'key 10
|
||||||
(test '(begin (define (extract-current-continuation-marks key)
|
(extract-current-continuation-marks 'key))
|
||||||
(continuation-mark-set->list
|
'(10))
|
||||||
(current-continuation-marks)
|
|
||||||
key))
|
|
||||||
|
|
||||||
(with-continuation-mark 'key 'mark1
|
(wcm-test '(with-continuation-mark 'key 10
|
||||||
(list ; continuation extended to evaluate the argument
|
(with-continuation-mark 'key 11
|
||||||
(with-continuation-mark 'key 'mark2
|
(extract-current-continuation-marks 'key)))
|
||||||
(extract-current-continuation-marks 'key)))))
|
'(11))
|
||||||
'((mark2 mark1)))
|
|
||||||
|
(wcm-test '(with-continuation-mark 'key 10
|
||||||
|
(with-continuation-mark 'key2 9
|
||||||
|
(with-continuation-mark 'key 11
|
||||||
|
(extract-current-continuation-marks 'key2))))
|
||||||
|
'(9))
|
||||||
|
|
||||||
|
(wcm-test '(with-continuation-mark 'key 10
|
||||||
|
(with-continuation-mark 'key2 9
|
||||||
|
(with-continuation-mark 'key 11
|
||||||
|
(extract-current-continuation-marks 'key3))))
|
||||||
|
'())
|
||||||
|
|
||||||
|
(wcm-test '(let ([x (with-continuation-mark 'key 10 (list 100))])
|
||||||
|
(extract-current-continuation-marks 'key))
|
||||||
|
'())
|
||||||
|
|
||||||
|
(wcm-test '(with-continuation-mark 'key 11
|
||||||
|
(let ([x (with-continuation-mark 'key 10 (extract-current-continuation-marks 'key))])
|
||||||
|
(extract-current-continuation-marks 'key)))
|
||||||
|
'(11))
|
||||||
|
|
||||||
|
(wcm-test '(with-continuation-mark 'key 11
|
||||||
|
(list (extract-current-continuation-marks 'key)
|
||||||
|
(with-continuation-mark 'key 10 (extract-current-continuation-marks 'key))
|
||||||
|
(extract-current-continuation-marks 'key)))
|
||||||
|
'((11) (10 11) (11)))
|
||||||
|
|
||||||
|
|
||||||
#;(test (read (open-input-file "tests/conform/program0.sch"))
|
#;(test (read (open-input-file "tests/conform/program0.sch"))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user