129 lines
4.0 KiB
Racket
129 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))))) |