racket/collects/tests/unstable/sequence.rkt
Sam Tobin-Hochstadt 2e8ffe7400 Fix sequence-lift for multiple valued sequences.
Also minor fixups of the rest of `unstable/sequence`.
2013-02-02 18:16:35 -05:00

30 lines
1.2 KiB
Racket

#lang racket/base
(require rackunit rackunit/text-ui unstable/sequence)
(run-tests
(test-suite "sequence.rkt"
(check-equal? (for/list ([x (sequence-lift add1 (in-range 10))])
x)
'(1 2 3 4 5 6 7 8 9 10))
(check-equal? (for/list ([x (sequence-lift
+ (in-parallel (in-range 10) (in-range 10)))])
x)
'(0 2 4 6 8 10 12 14 16 18))
(check-equal? (for/list ([x (in-sequence-forever (in-range 5) 5)]
[y (in-range 10)])
x)
'(0 1 2 3 4 5 5 5 5 5))
(check-equal? (for/list ([(x y) (in-pairs '((1 . 1) (2 . 2) (3 . 3)))])
(+ x y))
'(2 4 6))
(check-true (sequence? (in-slice 1 '())))
(check-equal? '() (for/list ([v (in-slice 1 '())]) v))
(check-equal? '((0 1)) (for/list ([v (in-slice 3 (in-range 2))]) v))
(check-equal? '((0 1 2) (3 4 5))
(for/list ([v (in-slice 3 (in-range 6))]) v))
(check-equal? '((0 1 2) (3 4 5) (6 7))
(for/list ([v (in-slice 3 (in-range 8))]) v))
(check-exn exn:fail:contract?
(lambda () (for/list ([x (in-slice 0 (in-range 8))]) x)))))