def test_begin0(): run_fix("(begin0 1 2)", 1) run_fix("(begin0 1)", 1) run_fix("(begin0 1 2 3)", 1) v = run_values("(begin0 (values #t #f) 2 3)") assert v == [w_true, w_false] run_fix("(let ([x 1]) (begin0 x (set! x 2)))", 1) run_fix("(let ([x 10]) (begin0 (set! x 0) (set! x (+ x 1))) x)", 1)
def test_values(): run_fix("(values 1)", 1) run_fix("(let-values () (values 1 2) (values 3))", 3) prog = "(let-values () (call-with-current-continuation (lambda (k) (k 1 2))) 3)" run_fix(prog, 3) v = run_values("(values #t #f)") assert [w_true, w_false] == v run_fix("(call-with-values (lambda () (values 1 2)) (lambda (a b) (+ a b)))", 3) run_fix("(call-with-values (lambda () (values 1 2)) +)", 3) run_fix("(call-with-values (lambda () (values)) (lambda () 0))", 0) run_fix("(call-with-values (lambda () (values 1)) (lambda (x) x))", 1) run_fix("(call-with-values (lambda () (values 1)) values)", 1) run_fix("(call-with-values (lambda () 1) values)", 1)
def test_values(): run_fix("(values 1)", 1) run_fix("(let () (values 1 2) (values 3))", 3) prog = "(let () (call/cc (lambda (k) (k 1 2))) 3)" run_fix(prog, 3) v = run_values("(values #t #f)") assert [w_true, w_false] == v run_fix("(call-with-values (lambda () (values 1 2)) (lambda (a b) (+ a b)))", 3) run_fix("(call-with-values (lambda () (values 1 2)) +)", 3) run_fix("(call-with-values (lambda () (values)) (lambda () 0))", 0) run_fix("(call-with-values (lambda () (values 1)) (lambda (x) x))", 1) run_fix("(call-with-values (lambda () (values 1)) values)", 1) run_fix("(call-with-values (lambda () 1) values)", 1) run_fix(""" (call-with-values (lambda () (time-apply (lambda () (+ 1 2)) '())) (lambda (result t r gc) (and (fixnum? t) (fixnum? r) (fixnum? gc) (car result)))) """, 3)
def test_values(): run_fix("(values 1)", 1) run_fix("(let () (values 1 2) (values 3))", 3) prog = "(let () (call-with-current-continuation (lambda (k) (k 1 2))) 3)" run_fix(prog, 3) v = run_values("(values #t #f)") assert [w_true, w_false] == v run_fix( "(call-with-values (lambda () (values 1 2)) (lambda (a b) (+ a b)))", 3) run_fix("(call-with-values (lambda () (values 1 2)) +)", 3) run_fix("(call-with-values (lambda () (values)) (lambda () 0))", 0) run_fix("(call-with-values (lambda () (values 1)) (lambda (x) x))", 1) run_fix("(call-with-values (lambda () (values 1)) values)", 1) run_fix("(call-with-values (lambda () 1) values)", 1) run_fix( """ (call-with-values (lambda () (time-apply (lambda () (+ 1 2)) '())) (lambda (result t r gc) (and (fixnum? t) (fixnum? r) (fixnum? gc) (car result)))) """, 3)