racket/collects/tests/unstable/markparam.rkt
2011-06-28 02:01:41 -04:00

130 lines
4.0 KiB
Racket

#lang racket
(require unstable/markparam
racket/serialize
tests/eli-tester)
(define x (mark-parameter))
(define y (mark-parameter))
(test
(mark-parameter? x)
(mark-parameter? (deserialize (serialize x)))
(deserialize (serialize x)) => x
(apply eq? (deserialize (serialize (list x x))))
#:failure-prefix "empty"
(mark-parameterize
()
(test
(x) => #f
(mark-parameter-first x) => #f
(mark-parameter-first y) => #f
(mark-parameter-all x) => empty
(mark-parameter-all y) => empty
(mark-parameters-all (list x)) => empty
(mark-parameters-all (list y)) => empty
(mark-parameters-all (list x y)) => empty))
#:failure-prefix "x 1"
(mark-parameterize
([x 1])
(test
(x) => 1
(mark-parameter-first x) => 1
(mark-parameter-first y) => #f
(mark-parameter-all x) => (list 1)
(mark-parameter-all y) => empty
(mark-parameters-all (list x)) => (list (vector 1))
(mark-parameters-all (list y)) => empty
(mark-parameters-all (list x y)) => (list (vector 1 #f))
(mark-parameters-all (list x y) 20) => (list (vector 1 20))))
#:failure-prefix "x 2 > x 1"
(mark-parameterize
([x 2])
(mark-parameterize
([x 1])
(test
(mark-parameter-first x) => 1
(mark-parameter-first y) => #f
(mark-parameter-all x) => (list 1)
(mark-parameter-all y) => empty
(mark-parameters-all (list x)) => (list (vector 1))
(mark-parameters-all (list y)) => empty
(mark-parameters-all (list x y)) => (list (vector 1 #f))
(mark-parameters-all (list x y) 20) => (list (vector 1 20)))))
#:failure-prefix "x 2 > list > x 1"
(mark-parameterize
([x 2])
(list
(mark-parameterize
([x 1])
(test
(mark-parameter-first x) => 1
(mark-parameter-first y) => #f
(mark-parameter-all x) => (list 1 2)
(mark-parameter-all y) => empty
(mark-parameters-all (list x)) => (list (vector 1) (vector 2))
(mark-parameters-all (list y)) => empty
(mark-parameters-all (list x y)) => (list (vector 1 #f) (vector 2 #f))
(mark-parameters-all (list x y) 20) => (list (vector 1 20) (vector 2 20))))))
#:failure-prefix "x 2 > list > x 1"
(mark-parameterize
([x 2])
(list
(mark-parameterize
([x 1])
(test
(mark-parameter-first x) => 1
(mark-parameter-first y) => #f
(mark-parameter-all x) => (list 1 2)
(mark-parameter-all y) => empty
(mark-parameters-all (list x)) => (list (vector 1) (vector 2))
(mark-parameters-all (list y)) => empty
(mark-parameters-all (list x y)) => (list (vector 1 #f) (vector 2 #f))
(mark-parameters-all (list x y) 20) => (list (vector 1 20) (vector 2 20))))))
#:failure-prefix "x 2 > list > y 1"
(mark-parameterize
([x 2])
(list
(mark-parameterize
([y 1])
(test
(mark-parameter-first x) => 2
(mark-parameter-first y) => 1
(mark-parameter-all x) => (list 2)
(mark-parameter-all y) => (list 1)
(mark-parameters-all (list x)) => (list (vector 2))
(mark-parameters-all (list y)) => (list (vector 1))
(mark-parameters-all (list x y)) => (list (vector #f 1) (vector 2 #f))
(mark-parameters-all (list x y) 20) => (list (vector 20 1) (vector 2 20))))))
#:failure-prefix "x 1 y 2"
(mark-parameterize
([x 1] [y 2])
(test
(mark-parameter-first x) => 1
(mark-parameter-first y) => 2
(mark-parameter-all x) => (list 1)
(mark-parameter-all y) => (list 2)
(mark-parameters-all (list x)) => (list (vector 1))
(mark-parameters-all (list y)) => (list (vector 2))
(mark-parameters-all (list x y)) => (list (vector 1 2))
(mark-parameters-all (list x y) 20) => (list (vector 1 2))))
#:failure-prefix "x 1 y x"
(mark-parameterize
([x 1] [y (mark-parameter-first x)])
(test
(mark-parameter-first x) => 1
(mark-parameter-first y) => #f
(mark-parameter-all x) => (list 1)
(mark-parameter-all y) => (list #f)
(mark-parameters-all (list x)) => (list (vector 1))
(mark-parameters-all (list y)) => (list (vector #f))
(mark-parameters-all (list x y)) => (list (vector 1 #f))
(mark-parameters-all (list x y) 20) => (list (vector 1 #f)))))