diff --git a/collects/tests/stepper/through-tests.ss b/collects/tests/stepper/through-tests.ss
index 60e1eb5bc0..3ac3922041 100644
--- a/collects/tests/stepper/through-tests.ss
+++ b/collects/tests/stepper/through-tests.ss
@@ -34,8 +34,8 @@
(fprintf (current-error-port) "test-sequence: steps do not match.\ngiven: ~v\nexpected: ~v\n" result (car all-steps)))
; uncomment for testing:
- (when (compare-steps result (car all-steps))
- (printf "test-sequence: steps match for expected result: ~v\n"(car all-steps)))
+ ; (when (compare-steps result (car all-steps))
+ ; (printf "test-sequence: steps match for expected result: ~v\n" result))
(set! all-steps (cdr all-steps)))))]
[program-expander
@@ -79,9 +79,6 @@
(define test-intermediate/lambda-sequence (lang-level-test-sequence `(lib "htdp-intermediate-lambda.ss" "lang")
fake-intermediate/lambda-render-settings
#f))
- (define test-advanced-sequence (lang-level-test-sequence `(lib "htdp-advanced.ss" "lang")
- fake-advanced-render-settings
- #f))
(define test-upto-int/lam (make-multi-level-test-sequence (list test-beginner-sequence
test-beginner-wla-sequence
@@ -117,17 +114,32 @@
(unless (list? (fn actual))
(fprintf (current-error-port) "not a list: ~v\n" (syntax-object->hilite-datum (fn actual))))
(noisy-equal? (map syntax-object->hilite-datum (fn actual)) expected))
- (list before-after-result-pre-exps before-after-result-post-exps)
+ (list before-after-result-exp before-after-result-post-exp)
(list before after)))]
+ [`(before-after-waiting ,before ,after ,waiting)
+ (and (before-after-result? actual)
+ (and (noisy-equal? (map syntax-object->hilite-datum (before-after-result-after-exprs actual)) waiting)
+ (compare-steps actual `(before-after ,before ,after))))]
+ [`(before-after-finished ,finished-exprs . ,rest)
+ (and (before-after-result? actual)
+ (compare-finished (map so->d/finished (before-after-result-finished-exprs actual)) finished-exprs)
+ (compare-steps actual `(before-after ,@rest)))]
+ [`(before-after-finished-waiting ,finished-exprs . ,rest)
+ (and (before-after-result? actual)
+ (compare-finished (map so->d/finished (before-after-result-finished-exprs actual)) finished-exprs)
+ (compare-steps actual `(before-after-waiting ,@rest)))]
+ [`(finished ,finished-exprs)
+ (and (finished-result? actual)
+ (compare-finished (map so->d/finished (finished-result-finished-exprs actual)) finished-exprs))]
[`(error ,err-msg)
(and (error-result? actual)
(equal? err-msg (error-result-err-msg actual)))]
[`(before-error ,before ,err-msg)
(and (before-error-result? actual)
- (and (noisy-equal? (map syntax-object->hilite-datum (before-error-result-pre-exps actual)) before)
- (equal? err-msg (before-error-result-err-msg actual))))]
+ (and (noisy-equal? (map syntax-object->hilite-datum (before-error-result-exp actual)) before)
+ (equal? (before-error-result-err-msg actual) err-msg)))]
[`(finished-stepping) (finished-stepping? actual)]
- [else
+ [else
(begin (fprintf (current-error-port) "compare-steps: unexpected expected step type: ~v\n" expected)
#f)]))
@@ -178,103 +190,46 @@
(t mz1
(test-mz-sequence "(for-each (lambda (x) x) '(1 2 3))"
`((before-after ((hilite (for-each (lambda (x) x) `(1 2 3)))) ((... (hilite 1) ...)))
- (before-after (...) ((... (hilite 2) ...)))
- (before-after (...) ((... (hilite 3) ...)))
- (before-after (...) ((hilite (void))))
- (finished-stepping))))
+ (before-after ((hilite ...)) ((... (hilite 2) ...)))
+ (before-after ((hilite ...)) ((... (hilite 3) ...)))
+ (before-after ((hilite ...)) ((hilite (void))))
+ (finished ((void))))))
- ;; new test case language:
- ;; an expected is (listof step)
- ;; a step is one of
- ;; (before-after exps exps)
- ;; (before-error exps str)
- ;; (error str)
- ;; (finished)
- ;; an exps is a list of s-expressions with certain non-hygienic extensions:
- ;; - (hilite X) denotes the s-expression X, only highlighted
- ;; - any denotes any s-expression (matches everything)
- ;; ... in principle, these could collide with programs that use the identifiers
- ;; 'hilite' and 'any', but since I'm writing the test cases, I can alpha-rename
- ;; manually to avoid collisions.
-
-
- ;; NEW TEST CASES
(t mz-app
(test-mz-sequence "(+ 3 4)"
`((before-after ((hilite (+ 3 4))) ((hilite 7)))
- (finished-stepping))))
+ (finished (7)))))
- (t top-ref-to-lifted
- (test-advanced-sequence "(define a (local ((define i1 0) (define (i2 x) i1)) i2)) (+ 3 4)"
- (let ([defs `((define i1_0 0) (define (i2_0 x) i1_0))])
- `((before-after ((define a (hilite (local ((define i1 0) (define (i2 x) i1)) i2))))
- ((hilite (define i1_0 0)) (hilite (define (i2_0 x) i1_0)) (define a (hilite i2_0))))
- (before-after (,@defs (define a (hilite i2_0)))
- (,@defs (define a (hilite (lambda (x) i1_0)))))
- (before-after (,@defs (define a (lambda (x) i1_0)) (hilite (+ 3 4)))
- (,@defs (define a (lambda (x) i1_0)) (hilite 7)))))))
-
- (t set!
- (test-advanced-sequence "(define a 3) (set! a (+ 4 5)) a"
- `((before-after ((define a 3) (set! a (hilite (+ 4 5))))
- ((define a 3) (set! a (hilite 9))))
- (before-after ((hilite (define a 3)) (hilite (set! a 9)))
- ((hilite (define a 9)) (hilite (void))))
- (before-after ((define a 9) (void) (hilite a))
- ((define a 9) (void) (hilite 9)))
- (finished-stepping))))
-
- (t local-set!
- (test-advanced-sequence
- "(define a (local ((define in 14) (define (getter dc) in) (define (modder n) (set! in n))) modder)) (a 15)"
- (let ([d1 `(define in_0 14)]
- [d2 `(define (getter_0 dc) in_0)]
- [d3 `(define (modder_0 n) (set! in_0 n))]
- [d4 `(define a (lambda (n) (set! in_0 n)))])
- `((before-after ((define a (hilite (local ((define in 14) (define (getter dc) in) (define (modder n) (set! in n))) modder))))
- ((hilite ,d1) (hilite ,d2) (hilite ,d3) (define a (hilite modder_0))))
- (before-after (,d1 ,d2 ,d3 (define a (hilite modder_0)))
- (,d1 ,d2 ,d3 (define a (hilite (lambda (n) (set! in_0 n))))))
- (before-after (,d1 ,d2 ,d3 ,d4 ((hilite a) 15))
- (,d1 ,d2 ,d3 ,d4 ((hilite (lambda (n) (set! in_0 n))) 15)))
- (before-after (,d1 ,d2 ,d3 ,d4 (hilite ((lambda (n) (set! in_0 n)) 15)))
- (,d1 ,d2 ,d3 ,d4 (hilite (set! in_0 15))))
- (before-after ((hilite ,d1) ,d2 ,d3 , d4 (hilite (set! in_0 15)))
- ((hilite (define in_0 15)) ,d2 ,d3 ,d4 (void)))
- (finished-stepping)))))
-
-
- ;; OLD TEST CASES
(t mz-app2
(test-mz-sequence "((lambda (x) (+ x 3)) 4)"
`((before-after ((hilite ((lambda (x) (+ x 3)) 4)))
((hilite (+ 4 3))))
(before-after ((hilite (+ 4 3)))
((hilite 7)))
- (finished-stepping))))
+ (finished (7)))))
(t mz-if
(test-mz-sequence "(if 3 4 5)"
`((before-after ((hilite (if 3 4 5))) ((hilite 4)))
- (finished-stepping))))
+ (finished (4)))))
(t simple-if
(test-upto-int/lam "(if true false true)"
`((before-after ((hilite (if true false true)))
- ((hilite false)))
- (finished-stepping))))
+ ((hilite false)))
+ (finished (false)))))
(t if-bool
(test-upto-int/lam "(if (if true false true) false true)"
`((before-after ((if (hilite (if true false true)) false true))
((if (hilite false) false true)))
(before-after ((hilite (if false false true))) ((hilite true)))
- (finished-stepping))))
+ (finished (true)))))
(t direct-app
(test-mz-sequence "((lambda (x) x) 3)"
`((before-after ((hilite ((lambda (x) x) 3))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
; (test-mz-sequence "((lambda (x) x) (begin (+ 3 4) (+ 4 5)))"
@@ -282,24 +237,24 @@
; ((begin (hilite 7) (+ 4 5))))
; (before-after ((hilite (begin 7 (+ 4 5)))) ((hilite (+ 4 5))))
; (before-after ((hilite (+ 4 5))) ((hilite 9)))
-; (finished-stepping)))
+; (finished (9))))
(t curried
(test-mz-sequence "((lambda (a) (lambda (b) (+ a b))) 14)"
`((before-after ((hilite ((lambda (a) (lambda (b) (+ a b))) 14)))
((hilite (lambda (b) (+ 14 b)))))
- (finished-stepping))))
+ (finished ((lambda (b) (+ 14 b)))))))
(t case-lambda
(test-mz-sequence "((case-lambda ((a) 3) ((b c) (+ b c))) 5 6)"
`((before-after ((hilite ((case-lambda ((a) 3) ((b c) (+ b c))) 5 6))) ((hilite (+ 5 6))))
(before-after ((hilite (+ 5 6))) ((hilite 11)))
- (finished-stepping))))
+ (finished (11)))))
(t 2armed-if
(test-mz-sequence "(if 3 4)"
`((before-after ((hilite (if 3 4))) ((hilite 4)))
- (finished-stepping))))
+ (finished (4)))))
;(test-mz-sequence "((call-with-current-continuation call-with-current-continuation) (call-with-current-continuation call-with-current-continuation))"
@@ -317,54 +272,48 @@
(t top-def
(test-upto-int/lam "(define a (+ 3 4))"
`((before-after ((define a (hilite (+ 3 4)))) ((define a (hilite 7))))
- (finished-stepping))))
+ (finished ((define a 7))))))
(t top-def-ref
(test-upto-int/lam "(define a 6) a"
- `((before-after ((define a 6) (hilite a))
- ((define a 6) (hilite 6)))
- (finished-stepping))))
+ `((before-after-finished ((define a 6))
+ ((hilite a))
+ ((hilite 6)))
+ (finished (6)))))
(t app
(test-upto-int/lam "(+ 4 129)"
`((before-after ((hilite (+ 4 129))) ((hilite 133)))
- (finished-stepping))))
+ (finished (133)))))
(t if
(test-upto-int/lam "(if true 3 4)"
`((before-after ((hilite (if true 3 4))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
(t top-app
(test-upto-int "(define (a3 x) (if true x x)) (a3 false)"
- (let ([d1 `(define (a3 x) (if true x x))])
- `((before-after (,d1 (hilite (a3 false)))
- (,d1 (hilite (if true false false))))
- (before-after (,d1 (hilite (if true false false)))
- (,d1 (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define (a3 x) (if true x x))) ((hilite (a3 false)))
+ ((hilite (if true false false))))
+ (before-after ((hilite (if true false false))) ((hilite false)))
+ (finished (false)))))
(t top-app/lam
(test-intermediate/lambda-sequence "(define (a3 x) (if true x x)) (a3 false)"
- (let ([d1 `(define (a3 x) (if true x x))])
- `((before-after (,d1 ((hilite a3) false))
- (,d1 ((hilite (lambda (x) (if true x x))) false)))
- (before-after (,d1 (hilite ((lambda (x) (if true x x)) false)))
- (,d1 (hilite (if true false false))))
- (before-after (,d1 (hilite (if true false false)))
- (,d1 (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define (a3 x) (if true x x)))
+ (((hilite a3) false)) (((hilite (lambda (x) (if true x x))) false)))
+ (before-after ((hilite ((lambda (x) (if true x x)) false)))
+ ((hilite (if true false false))))
+ (before-after ((hilite (if true false false))) ((hilite false)))
+ (finished (false)))))
(t top-interref
(test-intermediate-sequence "(define (a12 x) (+ x 9)) (define b12 a12) (b12 12)"
- (let ([defs `((define (a12 x) (+ x 9)) (define b12 a12))])
- `((before-after (,@defs ((hilite b12) 12))
- (,@defs ((hilite a12) 12)))
- (before-after (,@defs (hilite (a12 12)))
- (,@defs (hilite (+ 12 9))))
- (before-after (,@defs (hilite (+ 12 9)))
- (,@defs (hilite 21)))
- (finished-stepping)))))
+ `((before-after-finished ((define (a12 x) (+ x 9)) (define b12 a12))
+ (((hilite b12) 12)) (((hilite a12) 12)))
+ (before-after ((hilite (a12 12))) ((hilite (+ 12 9))))
+ (before-after ((hilite (+ 12 9))) ((hilite 21)))
+ (finished (21)))))
@@ -378,65 +327,56 @@
(t or1
(test-upto-int/lam "(or false true false)"
`((before-after ((hilite (or false true false))) ((hilite true)))
- (finished-stepping))))
+ (finished (true)))))
(t and1
(test-upto-int/lam "(and true false true)"
`((before-after ((hilite (and true false true))) ((hilite false)))
- (finished-stepping))))
+ (finished (false)))))
(t and2
(test-upto-int/lam "(and true (if true true false))"
`((before-after ((and true (hilite (if true true false)))) ((and true (hilite true))))
(before-after ((hilite (and true true))) ((hilite true)))
- (finished-stepping))))
+ (finished (true)))))
(t and3
(test-upto-int "(define (b2 x) (and true x)) (b2 false)"
- (let ([d1 `(define (b2 x) (and true x))])
- `((before-after (,d1 (hilite (b2 false)))
- (,d1 (hilite (and true false))))
- (before-after (,d1 (hilite (and true false)))
- (,d1 (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define (b2 x) (and true x))) ((hilite (b2 false))) ((hilite (and true false))))
+ (before-after ((hilite (and true false))) ((hilite false)))
+ (finished (false)))))
(t and3/lam
(test-intermediate/lambda-sequence "(define (b2 x) (and true x)) (b2 false)"
- (let ([d1 `(define (b2 x) (and true x))])
- `((before-after (,d1 ((hilite b2) false))
- (,d1 ((hilite (lambda (x) (and true x))) false)))
- (before-after (,d1 (hilite ((lambda (x) (and true x)) false)))
- (,d1 (hilite (and true false))))
- (before-after (,d1 (hilite (and true false)))
- (,d1 (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define (b2 x) (and true x)))
+ (((hilite b2) false))
+ (((hilite (lambda (x) (and true x))) false)))
+ (before-after ((hilite ((lambda (x) (and true x)) false)))
+ ((hilite (and true false))))
+ (before-after ((hilite (and true false))) ((hilite false)))
+ (finished (false)))))
(t and4
(test-upto-int "(define a1 true)(define (b1 x) (and a1 true x)) (b1 false)"
- (let ([defs `((define a1 true)
- (define (b1 x) (and a1 true x)))])
- `((before-after (,@defs (hilite (b1 false)))
- (,@defs (hilite (and a1 true false))))
- (before-after (,@defs (and (hilite a1) true false))
- (,@defs (and (hilite true) true false)))
- (before-after (,@defs (hilite (and true true false)))
- (,@defs (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define a1 true)
+ (define (b1 x) (and a1 true x)))
+ ((hilite (b1 false)))
+ ((hilite (and a1 true false))))
+ (before-after ((and (hilite a1) true false)) ((and (hilite true) true false)))
+ (before-after ((hilite (and true true false))) ((hilite false)))
+ (finished (false)))))
(t and4/lam
(test-intermediate/lambda-sequence "(define a1 true)(define (b1 x) (and a1 true x)) (b1 false)"
- (let ([defs `((define a1 true)
- (define (b1 x) (and a1 true x)))])
- `((before-after (,@defs ((hilite b1) false))
- (,@defs ((hilite (lambda (x) (and a1 true x))) false)))
- (before-after (,@defs (hilite ((lambda (x) (and a1 true x)) false)))
- (,@defs (hilite (and a1 true false))))
- (before-after (,@defs (and (hilite a1) true false))
- (,@defs (and (hilite true) true false)))
- (before-after (,@defs (hilite (and true true false)))
- (,@defs (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define a1 true)
+ (define (b1 x) (and a1 true x)))
+ (((hilite b1) false))
+ (((hilite (lambda (x) (and a1 true x))) false)))
+ (before-after ((hilite ((lambda (x) (and a1 true x)) false))) ((hilite (and a1 true false))))
+ (before-after ((and (hilite a1) true false)) ((and (hilite true) true false)))
+ (before-after ((hilite (and true true false))) ((hilite false)))
+ (finished (false)))))
(t bad-and
(test-upto-int/lam "(and true 1)"
@@ -455,18 +395,18 @@
((hilite (cond (false 5) (true 3)))))
(before-after ((hilite (cond (false 5) (true 3)))) ((hilite (cond (true 3)))))
(before-after ((hilite (cond (true 3)))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
(t cond-else
(test-upto-int/lam "(cond [false 4] [else 9])"
`((before-after ((hilite (cond [false 4] [else 9]))) ((hilite (cond [else 9]))))
(before-after ((hilite (cond [else 9]))) ((hilite 9)))
- (finished-stepping))))
+ (finished (9)))))
(t cond-andelse
(test-upto-int/lam "(cond [true 3] [else (and true true)])"
`((before-after ((hilite (cond (true 3) (else (and true true))))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
(t bad-cond
(test-upto-int/lam "(cond)"
@@ -475,13 +415,13 @@
(t just-else
(test-upto-int/lam "(cond [else 3])"
`((before-after ((hilite (cond (else 3)))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
(t nested-cond
(test-upto-int/lam "(cond [else (cond [else 3])])"
`((before-after ((hilite (cond (else (cond (else 3)))))) ((hilite (cond (else 3)))))
(before-after ((hilite (cond (else 3)))) ((hilite 3)))
- (finished-stepping))))
+ (finished (3)))))
; reconstruct can't handle 'begin'
; (test-mz-sequence "(cond [#f 3 4] [#t (+ 3 4) (+ 4 9)])"
@@ -492,7 +432,7 @@
; ((begin (hilite 7) (+ 4 9))))
; (before-after ((hilite (begin 7 (+ 4 9)))) ((hilite (+ 4 9))))
; (before-after ((hilite (+ 4 9))) ((hilite 13)))
-; (finished-stepping)))
+; (finished (13))))
(t nested-cond2
(test-upto-int/lam "(cond [false 3] [else (cond [true 4])])"
@@ -500,124 +440,95 @@
((hilite (cond (else (cond (true 4)))))))
(before-after ((hilite (cond (else (cond (true 4)))))) ((hilite (cond (true 4)))))
(before-after ((hilite (cond (true 4)))) ((hilite 4)))
- (finished-stepping))))
+ (finished (4)))))
(t top-ref
(test-intermediate-sequence "(define a4 +) a4"
- `((before-after ((define a4 +) (hilite a4))
- ((define a4 +) (hilite +)))
- (finished-stepping))))
+ `((before-after ((hilite a4)) ((hilite +)))
+ (finished (+)))))
(t top-ref2
(test-intermediate-sequence "(define (f123 x) (+ x 13)) f123"
- `((finished-stepping))))
-
- (t top-ref3
- (test-intermediate/lambda-sequence "(define (f123 x) (+ x 13)) f123"
- `((before-after ((define (f123 x) (+ x 13)) (hilite f123))
- ((define (f123 x) (+ x 13)) (hilite (lambda (x) (+ x 13)))))
- (finished-stepping))))
-
- (t top-ref4
- (test-intermediate-sequence "(define (a x) (+ x 5)) (define b a) (define c b) (c 3)"
- (let* ([defs1 `((define (a x) (+ x 5)) (define b a))]
- [defs2 (append defs1 `((define c a)))])
- `((before-after (,@defs1 (define c (hilite b)))
- (,@defs1 (define c (hilite a))))
- (before-after (,@defs2 ((hilite c) 3))
- (,@defs2 ((hilite a) 3)))
- (before-after (,@defs2 (hilite (a 3)))
- (,@defs2 (hilite (+ 3 5))))
- (before-after (,@defs2 (hilite (+ 3 5)))
- (,@defs2 (hilite 8)))
- (finished-stepping)))))
+ `((finished ((define (f123 x) (+ x 13))
+ f123)))))
(t define-struct
(test-upto-int/lam "(define-struct mamba (rhythm tempo)) (mamba-rhythm (make-mamba 24 2))"
- `((before-after ((define-struct mamba (rhythm tempo)) (hilite (mamba-rhythm (make-mamba 24 2))))
- ((define-struct mamba (rhythm tempo)) (hilite 24)))
- (finished-stepping))))
+ `((before-after-finished ((define-struct mamba (rhythm tempo)))
+ ((hilite (mamba-rhythm (make-mamba 24 2)))) ((hilite 24)))
+ (finished (24)))))
(t lam-def
(test-upto-int "(define a5 (lambda (a5) (+ a5 13))) (a5 23)"
- (let ([d1 `(define a5 (lambda (a5) (+ a5 13)))])
- `((before-after (,d1 (hilite (a5 23)))
- (,d1 (hilite (+ 23 13))))
- (before-after (,d1 (hilite (+ 23 13)))
- (,d1 (hilite 36)))
- (finished-stepping)))))
+ `((before-after-finished ((define a5 (lambda (a5) (+ a5 13)))) ((hilite (a5 23))) ((hilite (+ 23 13))))
+ (before-after ((hilite (+ 23 13))) ((hilite 36)))
+ (finished (36)))))
(t lam-def/lam
(test-intermediate/lambda-sequence "(define a5 (lambda (a5) (+ a5 13))) (a5 23)"
- (let ([defs `((define a5 (lambda (a5) (+ a5 13))))])
- `((before-after (,@defs ((hilite a5) 23))
- (,@defs ((hilite (lambda (a5) (+ a5 13))) 23)))
- (before-after (,@defs (hilite ((lambda (a5) (+ a5 13)) 23)))
- (,@defs (hilite (+ 23 13))))
- (before-after (,@defs (hilite (+ 23 13)))
- (,@defs (hilite 36)))
- (finished-stepping)))))
+ `((before-after-finished ((define a5 (lambda (a5) (+ a5 13))))
+ (((hilite a5) 23))
+ (((hilite (lambda (a5) (+ a5 13))) 23)))
+ (before-after ((hilite ((lambda (a5) (+ a5 13)) 23)))
+ ((hilite (+ 23 13))))
+ (before-after ((hilite (+ 23 13))) ((hilite 36)))
+ (finished (36)))))
(t lam-let
(test-intermediate-sequence "(let ([a (lambda (x) (+ x 5))]) (a 6))"
- (let ([defs `((define a_0 (lambda (x) (+ x 5))))])
- `((before-after ((hilite (let ([a (lambda (x) (+ x 5))]) (a 6))))
- ((hilite (define a_0 (lambda (x) (+ x 5)))) (hilite (a_0 6))))
- (before-after (,@defs (hilite (a_0 6)))
- (,@defs (hilite (+ 6 5))))
- (before-after (,@defs (hilite (+ 6 5)))
- (,@defs (hilite 11)))
- (finished-stepping)))))
+ `((before-after ((hilite (let ([a (lambda (x) (+ x 5))]) (a 6))))
+ ((hilite (define a_0 (lambda (x) (+ x 5)))) (hilite (a_0 6))))
+ (before-after-finished ((define a_0 (lambda (x) (+ x 5))))
+ ((hilite (a_0 6)))
+ ((hilite (+ 6 5))))
+ (before-after ((hilite (+ 6 5)))
+ ((hilite 11)))
+ (finished (11)))))
(t whocares
(test-upto-int "(define c1 false) (define (d2 x) (or c1 false x)) (d2 false)"
- (let ([defs `((define c1 false)
- (define (d2 x) (or c1 false x)))])
- `((before-after (,@defs (hilite (d2 false)))
- (,@defs (hilite (or c1 false false))))
- (before-after (,@defs (or (hilite c1) false false))
- (,@defs (or (hilite false) false false)))
- (before-after (,@defs (hilite (or false false false)))
- (,@defs (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define c1 false)
+ (define (d2 x) (or c1 false x)))
+ ((hilite (d2 false)))
+ ((hilite (or c1 false false))))
+ (before-after ((or (hilite c1) false false)) ((or (hilite false) false false)))
+ (before-after ((hilite (or false false false))) ((hilite false)))
+ (finished (false)))))
(t whocares/lam
(test-intermediate/lambda-sequence "(define c1 false) (define (d2 x) (or c1 false x)) (d2 false)"
- (let ([defs `((define c1 false)
- (define (d2 x) (or c1 false x)))])
- `((before-after (,@defs ((hilite d2) false))
- (,@defs ((hilite (lambda (x) (or c1 false x))) false)))
- (before-after (,@defs (hilite ((lambda (x) (or c1 false x)) false)))
- (,@defs (hilite (or c1 false false))))
- (before-after (,@defs (or (hilite c1) false false))
- (,@defs (or (hilite false) false false)))
- (before-after (,@defs (hilite (or false false false)))
- (,@defs (hilite false)))
- (finished-stepping)))))
+ `((before-after-finished ((define c1 false)
+ (define (d2 x) (or c1 false x)))
+ (((hilite d2) false)) (((hilite (lambda (x) (or c1 false x))) false)))
+ (before-after ((hilite ((lambda (x) (or c1 false x)) false)))
+ ((hilite (or c1 false false))))
+ (before-after ((or (hilite c1) false false)) ((or (hilite false) false false)))
+ (before-after ((hilite (or false false false))) ((hilite false)))
+ (finished (false)))))
(t forward-ref
(test-upto-int "(define (f x) (+ (g x) 10)) (define (g x) (- x 22)) (f 13)"
- (let ([defs `((define (f x) (+ (g x) 10)) (define (g x) (- x 22)))])
- `((before-after (,@defs (hilite (f 13)))
- (,@defs (hilite (+ (g 13) 10))))
- (before-after (,@defs (+ (hilite (g 13)) 10)) (,@defs (+ (hilite (- 13 22)) 10)))
- (before-after (,@defs (+ (hilite (- 13 22)) 10)) (,@defs (+ (hilite -9) 10)))
- (before-after (,@defs (hilite (+ -9 10))) (,@defs (hilite 1)))
- (finished-stepping)))))
+ `((before-after-finished ((define (f x) (+ (g x) 10)) (define (g x) (- x 22)))
+ ((hilite (f 13)))
+ ((hilite (+ (g 13) 10))))
+ (before-after ((+ (hilite (g 13)) 10)) ((+ (hilite (- 13 22)) 10)))
+ (before-after ((+ (hilite (- 13 22)) 10)) ((+ (hilite -9) 10)))
+ (before-after ((hilite (+ -9 10))) ((hilite 1)))
+ (finished (1)))))
(t forward-ref/lam
(test-intermediate/lambda-sequence "(define (f x) (+ (g x) 10)) (define (g x) (- x 22)) (f 13)"
- (let ([defs `((define (f x) (+ (g x) 10)) (define (g x) (- x 22)))])
- `((before-after (,@defs ((hilite f) 13))
- (,@defs ((hilite (lambda (x) (+ (g x) 10))) 13)))
- (before-after (,@defs (hilite ((lambda (x) (+ (g x) 10)) 13)))
- (,@defs (hilite (+ (g 13) 10))))
- (before-after (,@defs (+ ((hilite g) 13) 10)) (,@defs (+ ((hilite (lambda (x) (- x 22))) 13) 10)))
- (before-after (,@defs (+ (hilite ((lambda (x) (- x 22)) 13)) 10)) (,@defs (+ (hilite (- 13 22)) 10)))
- (before-after (,@defs (+ (hilite (- 13 22)) 10)) (,@defs (+ (hilite -9) 10)))
- (before-after (,@defs (hilite (+ -9 10))) (,@defs (hilite 1)))
- (finished-stepping)))))
+ `((before-after-finished ((define (f x) (+ (g x) 10)) (define (g x) (- x 22)))
+ (((hilite f) 13))
+ (((hilite (lambda (x) (+ (g x) 10))) 13)))
+ (before-after ((hilite ((lambda (x) (+ (g x) 10)) 13)))
+ ((hilite (+ (g 13) 10))))
+ (before-after ((+ ((hilite g) 13) 10)) ((+ ((hilite (lambda (x) (- x 22))) 13) 10)))
+ (before-after ((+ (hilite ((lambda (x) (- x 22)) 13)) 10)) ((+ (hilite (- 13 22)) 10)))
+ (before-after ((+ (hilite (- 13 22)) 10)) ((+ (hilite -9) 10)))
+ (before-after ((hilite (+ -9 10))) ((hilite 1)))
+ (finished (1)))))
(t bad-cons
@@ -626,16 +537,16 @@
(t prims
(test-beginner-sequence "(cons 3 (cons 1 empty)) (list 1 2 3) (define-struct aa (b)) (make-aa 3)"
- (let ([defs `((cons 3 (cons 1 empty)))])
- `((before-after (,@defs (hilite (list 1 2 3)))
- (,@defs (hilite (cons 1 (cons 2 (cons 3 empty))))))
- (finished-stepping)))))
+ `((before-after-finished ((cons 3 (cons 1 empty)))
+ ((hilite (list 1 2 3)))
+ ((hilite (cons 1 (cons 2 (cons 3 empty))))))
+ (finished ((cons 1 (cons 2 (cons 3 empty))) (define-struct aa (b)) (make-aa 3))))))
(t prims/non-beginner
(test-bwla-to-int/lam "(cons 3 (cons 1 empty)) (list 1 2 3) (define-struct aa (b)) (make-aa 3)"
`((before-after ((cons 3 (hilite (cons 1 empty)))) ((cons 3 (hilite (list 1)))))
(before-after ((hilite (cons 3 (list 1)))) ((hilite (list 3 1))))
- (finished-stepping))))
+ (finished ((list 3 1) (list 1 2 3) (define-struct aa (b)) (make-aa 3))))))
(t map
@@ -644,16 +555,16 @@
((map (lambda (x) x) (hilite `( 3 4 5)))))
(before-after ((hilite (map (lambda (x) x) `(3 4 5))))
((... (hilite 3) ...)))
- (before-after (...)
+ (before-after ((hilite ...))
((... (hilite 4) ...)))
- (before-after (...)
+ (before-after ((hilite ...))
((... (hilite 5) ...)))
- (before-after (...) ((hilite `(3 4 5))))
- (finished-stepping))))
+ (before-after ((hilite ...)) ((hilite `(3 4 5))))
+ (finished (`(3 4 5))))))
(t quoted-list
(test-beginner-wla-sequence "'(3 4 5)"
- `((finished-stepping))))
+ `((finished ((list 3 4 5))))))
;;;;;;;;;;;;;
@@ -673,7 +584,7 @@
(before-after ((cons 3 (hilite (cons 4 (list 9)))))
((cons 3 (hilite (list 4 9)))))
(before-after ((hilite (cons 3 (list 4 9)))) ((hilite (list 3 4 9))))
- (finished-stepping))))
+ (finished ((list 3 4 9))))))
(t qq-splice
(test-beginner-wla-sequence "`(3 ,@(list (+ 3 4) 5) 6)"
@@ -681,7 +592,7 @@
(before-after ((cons 3 (append (list 7 5) (hilite (cons 6 empty))))) ((cons 3 (append (list 7 5) (list 6)))))
(before-after ((cons 3 (hilite (append (list 7 5) (list 6))))) ((cons 3 (hilite (list 7 5 6)))))
(before-after ((hilite (cons 3 (list 7 5 6)))) ((hilite (list 3 7 5 6))))
- (finished-stepping))))
+ (finished ((list 3 7 5 6))))))
;;;;;;;;;;;;;
;;
@@ -691,105 +602,81 @@
(t let1 (test-both-ints "(let ([a 3]) 4)"
`((before-after ((hilite (let ([a 3]) 4))) ((hilite (define a_0 3)) (hilite 4)))
- (finished-stepping))))
+ (finished ((define a_0 3) 4)))))
(t let2
(test-both-ints "(let ([a (+ 4 5)] [b (+ 9 20)]) (+ a b))"
- `((before-after ((hilite (let ([a (+ 4 5)] [b (+ 9 20)]) (+ a b))))
- ((hilite (define a_0 (+ 4 5))) (hilite (define b_0 (+ 9 20))) (hilite (+ a_0 b_0))))
- (before-after ((define a_0 (hilite (+ 4 5))) (define b_0 (+ 9 20)) (+ a_0 b_0))
- ((define a_0 (hilite 9)) (define b_0 (+ 9 20)) (+ a_0 b_0)))
- (before-after ((define a_0 9) (define b_0 (hilite (+ 9 20))) (+ a_0 b_0))
- ((define a_0 9) (define b_0 (hilite 29)) (+ a_0 b_0)))
- (before-after ((define a_0 9) (define b_0 29) (+ (hilite a_0) b_0))
- ((define a_0 9) (define b_0 29) (+ (hilite 9) b_0)))
- (before-after ((define a_0 9) (define b_0 29) (+ 9 (hilite b_0)))
- ((define a_0 9) (define b_0 29) (+ 9 (hilite 29))))
- (before-after ((define a_0 9) (define b_0 29) (hilite (+ 9 29)))
- ((define a_0 9) (define b_0 29) (hilite 38)))
- (finished-stepping))))
+ `((before-after ((hilite (let ([a (+ 4 5)] [b (+ 9 20)]) (+ a b))))
+ ((hilite (define a_0 (+ 4 5))) (hilite (define b_0 (+ 9 20))) (hilite (+ a_0 b_0))))
+ (before-after-waiting ((define a_0 (hilite (+ 4 5)))) ((define a_0 (hilite 9)))
+ ((define b_0 (+ 9 20))
+ (+ a_0 b_0)))
+ (before-after-finished-waiting ((define a_0 9))
+ ((define b_0 (hilite (+ 9 20)))) ((define b_0 (hilite 29)))
+ ((+ a_0 b_0)))
+ (before-after-finished ((define b_0 29))
+ ((+ (hilite a_0) b_0)) ((+ (hilite 9) b_0)))
+ (before-after ((+ 9 (hilite b_0))) ((+ 9 (hilite 29))))
+ (before-after ((hilite (+ 9 29))) ((hilite 38)))
+ (finished (38)))))
(t let-scoping1
(test-intermediate-sequence "(let ([a 3]) (let ([a (lambda (x) (+ a x))]) (a 4)))"
- (let ([d1 `(define a_0 3)]
- [d2 `(define a_1 (lambda (x) (+ a_0 x)))])
- `((before-after ((hilite (let ([a 3]) (let ([a (lambda (x) (+ a x))]) (a 4)))))
- ((hilite (define a_0 3)) (hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4)))))
- (before-after (,d1 (hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4))))
- (,d1 (hilite (define a_1 (lambda (x) (+ a_0 x)))) (hilite (a_1 4))))
- (before-after (,d1 ,d2 (hilite (a_1 4)))
- (,d1 ,d2 (hilite (+ a_0 4))))
- (before-after (,d1 ,d2 (+ (hilite a_0) 4))
- (,d1 ,d2 (+ (hilite 3) 4)))
- (before-after (,d1 ,d2 (hilite (+ 3 4)))
- (,d1 ,d2 (hilite 7)))
- (finished-stepping)))))
+ `((before-after ((hilite (let ([a 3]) (let ([a (lambda (x) (+ a x))]) (a 4))))) ((hilite (define a_0 3)) (hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4)))))
+ (before-after-finished ((define a_0 3)) ((hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4)))) ((hilite (define a_1 (lambda (x) (+ a_0 x)))) (hilite (a_1 4))))
+ (before-after-finished ((define a_1 (lambda (x) (+ a_0 x))))
+ ((hilite (a_1 4)))
+ ((hilite (+ a_0 4))))
+ (before-after ((+ (hilite a_0) 4)) ((+ (hilite 3) 4)))
+ (before-after ((hilite (+ 3 4))) ((hilite 7)))
+ (finished (7)))))
(t let-scoping2
(test-intermediate/lambda-sequence "(let ([a 3]) (let ([a (lambda (x) (+ a x))]) (a 4)))"
- (let* ([d1 `(define a_0 3)]
- [defs `(,d1 (define a_1 (lambda (x) (+ a_0 x))))])
`((before-after ((hilite (let ([a 3]) (let ([a (lambda (x) (+ a x))]) (a 4)))))
((hilite (define a_0 3)) (hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4)))))
- (before-after (,d1 (hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4))))
- (,d1 (hilite (define a_1 (lambda (x) (+ a_0 x)))) (hilite (a_1 4))))
- (before-after (,@defs ((hilite a_1) 4))
- (,@defs ((hilite (lambda (x) (+ a_0 x))) 4)))
- (before-after (,@defs (hilite ((lambda (x) (+ a_0 x)) 4))) (,@defs (hilite (+ a_0 4))))
- (before-after (,@defs (+ (hilite a_0) 4)) (,@defs (+ (hilite 3) 4)))
- (before-after (,@defs (hilite (+ 3 4))) (,@defs (hilite 7)))
- (finished-stepping)))))
+ (before-after-finished ((define a_0 3)) ((hilite (let ([a (lambda (x) (+ a_0 x))]) (a 4))))
+ ((hilite (define a_1 (lambda (x) (+ a_0 x)))) (hilite (a_1 4))))
+ (before-after-finished ((define a_1 (lambda (x) (+ a_0 x))))
+ (((hilite a_1) 4)) (((hilite (lambda (x) (+ a_0 x))) 4)))
+ (before-after ((hilite ((lambda (x) (+ a_0 x)) 4))) ((hilite (+ a_0 4))))
+ (before-after ((+ (hilite a_0) 4)) ((+ (hilite 3) 4)))
+ (before-after ((hilite (+ 3 4))) ((hilite 7)))
+ (finished (7)))))
(t let-scoping3
(test-intermediate-sequence "(define a12 3) (define c12 19) (let ([a12 13] [b12 a12]) (+ b12 a12 c12))"
- (let* ([defs1 `((define a12 3) (define c12 19))]
- [defs2 `(,@defs1 (define a12_0 13))]
- [defs3 `(,@defs2 (define b12_0 3))])
- `((before-after (,@defs1 (hilite (let ([a12 13] [b12 a12]) (+ b12 a12 c12))))
- (,@defs1 (hilite (define a12_0 13)) (hilite (define b12_0 a12)) (hilite (+ b12_0 a12_0 c12))))
- (before-after (,@defs2 (define b12_0 (hilite a12)) (+ b12_0 a12_0 c12))
- (,@defs2 (define b12_0 (hilite 3)) (+ b12_0 a12_0 c12)))
- (before-after (,@defs3 (+ (hilite b12_0) a12_0 c12))
- (,@defs3 (+ (hilite 3) a12_0 c12)))
- (before-after (,@defs3 (+ 3 (hilite a12_0) c12))
- (,@defs3 (+ 3 (hilite 13) c12)))
- (before-after (,@defs3 (+ 3 13 (hilite c12)))
- (,@defs3 (+ 3 13 (hilite 19))))
- (before-after (,@defs3 (hilite (+ 3 13 19)))
- (,@defs3 (hilite 35)))
- (finished-stepping)))))
+ `((before-after-finished ((define a12 3) (define c12 19))
+ ((hilite (let ([a12 13] [b12 a12]) (+ b12 a12 c12))))
+ ((hilite (define a12_0 13)) (hilite (define b12_0 a12)) (hilite (+ b12_0 a12_0 c12))))
+ (before-after-finished-waiting ((define a12_0 13))
+ ((define b12_0 (hilite a12))) ((define b12_0 (hilite 3)))
+ ( (+ b12_0 a12_0 c12)))
+ (before-after-finished ((define b12_0 3))
+ ((+ (hilite b12_0) a12_0 c12)) ((+ (hilite 3) a12_0 c12)))
+ (before-after ((+ 3 (hilite a12_0) c12)) ((+ 3 (hilite 13) c12)))
+ (before-after ((+ 3 13 (hilite c12))) ((+ 3 13 (hilite 19))))
+ (before-after ((hilite (+ 3 13 19))) ((hilite 35)))
+ (finished (35)))))
(t let-lifting1
(test-intermediate-sequence "(let ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)"
`((before-after ((hilite (let ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)))
((hilite (define a_0 (lambda (x) (+ x 14)))) (hilite (define b_0 (+ 3 4))) (hilite 9)))
- (before-after ((define a_0 (lambda (x) (+ x 14))) (define b_0 (hilite (+ 3 4))) 9)
- ((define a_0 (lambda (x) (+ x 14))) (define b_0 (hilite 7)) 9))
- (finished-stepping))))
+ (before-after-finished-waiting ((define a_0 (lambda (x) (+ x 14))))
+ ((define b_0 (hilite (+ 3 4)))) ((define b_0 (hilite 7)))
+ (9))
+ (finished ((define b_0 7) 9)))))
(t let-deriv
(test-intermediate-sequence "(define (f g) (let ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)) (define gprime (f cos))"
- (let ([defs `((define (f g) (let ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))])
- `((before-after (,@defs (define gprime (hilite (f cos))))
- (,@defs (define gprime (hilite (let ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
- (before-after (,@defs (define gprime (hilite (let ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
- (,@defs (hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
- (finished-stepping)))))
+ `((before-after-finished ((define (f g) (let ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))
+ ((define gprime (hilite (f cos)))) ((define gprime (hilite (let ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
+ (before-after ((define gprime (hilite (let ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
+ ((hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
+ (finished ((define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))) (define gprime gp_0))))))
- (t let-assigned
- (test-intermediate-sequence "(define a (let ([f (lambda (x) (+ x 13))]) f))"
- `((before-after ((define a (hilite (let ([f (lambda (x) (+ x 13))]) f))))
- ((hilite (define f_0 (lambda (x) (+ x 13)))) (define a (hilite f_0))))
- (finished-stepping))))
-
- (t let-assigned/lam
- (test-intermediate/lambda-sequence "(define a (let ([f (lambda (x) (+ x 13))]) f))"
- `((before-after ((define a (hilite (let ([f (lambda (x) (+ x 13))]) f))))
- ((hilite (define f_0 (lambda (x) (+ x 13)))) (define a (hilite f_0))))
- (before-after ((define f_0 (lambda (x) (+ x 13))) (define a (hilite f_0)))
- ((define f_0 (lambda (x) (+ x 13))) (define a (hilite (lambda (x) (+ x 13))))))
- (finished-stepping))))
- ;;;;;;;;;;;;;
+ ;;;;;;;;;;;;;
;;
;; LET*
;;
@@ -797,53 +684,48 @@
(t let*-scoping1
(test-both-ints "(define a 3) (define c 19) (let* ([a 13] [b a]) (+ b a c))"
- (let* ([defs1 `((define a 3) (define c 19))]
- [defs2 (append defs1 `((define a_0 13)))]
- [defs3 (append defs2 `((define b_1 13)))])
- `((before-after (,@defs1 (hilite (let* ([a 13] [b a]) (+ b a c))))
- (,@defs1 (hilite (define a_0 13)) (hilite (let* ([b a_0]) (+ b a_0 c)))))
- (before-after (,@defs2 (hilite (let* ([b a_0]) (+ b a_0 c))))
- (,@defs2 (hilite (define b_1 a_0)) (hilite (+ b_1 a_0 c))))
- (before-after (,@defs2 (define b_1 (hilite a_0)) (+ b_1 a_0 c))
- (,@defs2 (define b_1 (hilite 13)) (+ b_1 a_0 c)))
- (before-after (,@defs3 (+ (hilite b_1) a_0 c))
- (,@defs3 (+ (hilite 13) a_0 c)))
- (before-after (,@defs3 (+ 13 (hilite a_0) c))
- (,@defs3 (+ 13 (hilite 13) c)))
- (before-after (,@defs3 (+ 13 13 (hilite c)))
- (,@defs3 (+ 13 13 (hilite 19))))
- (before-after (,@defs3 (hilite (+ 13 13 19)))
- (,@defs3 (hilite 45)))
- (finished-stepping)))))
+ `((before-after-finished ((define a 3) (define c 19))
+ ((hilite (let* ([a 13] [b a]) (+ b a c))))
+ ((hilite (define a_0 13)) (hilite (let* ([b a_0]) (+ b a_0 c)))))
+ (before-after-finished ((define a_0 13))
+ ((hilite (let* ([b a_0]) (+ b a_0 c))))
+ ((hilite (define b_1 a_0)) (hilite (+ b_1 a_0 c))))
+ (before-after-finished-waiting ()
+ ((define b_1 (hilite a_0))) ((define b_1 (hilite 13)))
+ ((+ b_1 a_0 c)))
+ (before-after-finished ((define b_1 13))
+ ((+ (hilite b_1) a_0 c)) ((+ (hilite 13) a_0 c)))
+ (before-after ((+ 13 (hilite a_0) c)) ((+ 13 (hilite 13) c)))
+ (before-after ((+ 13 13 (hilite c))) ((+ 13 13 (hilite 19))))
+ (before-after ((hilite (+ 13 13 19))) ((hilite 45)))
+ (finished (45)))))
(t let*-lifting1
(test-intermediate-sequence "(let* ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)"
- (let ([defs `((define a_0 (lambda (x) (+ x 14))))])
- `((before-after ((hilite (let* ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)))
- ((hilite (define a_0 (lambda (x) (+ x 14)))) (hilite (let* ([b (+ 3 4)]) 9))))
- (before-after (,@defs (hilite (let* ([b (+ 3 4)]) 9)))
- (,@defs (hilite (define b_1 (+ 3 4))) (hilite 9)))
- (before-after (,@defs (define b_1 (hilite (+ 3 4))) 9)
- (,@defs (define b_1 (hilite 7)) 9))
- (finished-stepping)))))
+ `((before-after ((hilite (let* ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)))
+ ((hilite (define a_0 (lambda (x) (+ x 14)))) (hilite (let* ([b (+ 3 4)]) 9))))
+ (before-after-finished ((define a_0 (lambda (x) (+ x 14))))
+ ((hilite (let* ([b (+ 3 4)]) 9)))
+ ((hilite (define b_1 (+ 3 4))) (hilite 9)))
+ (before-after-finished-waiting ()
+ ((define b_1 (hilite (+ 3 4)))) ((define b_1 (hilite 7)))
+ (9))
+ (finished ((define b_1 7) 9)))))
(t let*-deriv
(test-intermediate-sequence "(define (f g) (let* ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)) (define gprime (f cos))"
- (let ([defs `((define (f g) (let* ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))])
- `((before-after (,@defs (define gprime (hilite (f cos))))
- (,@defs (define gprime (hilite (let* ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
- (before-after (,@defs (define gprime (hilite (let* ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
- (,@defs (hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
- (finished-stepping)))))
+ `((before-after-finished ((define (f g) (let* ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))
+ ((define gprime (hilite (f cos)))) ((define gprime (hilite (let* ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
+ (before-after ((define gprime (hilite (let* ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
+ ((hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
+ (finished ((define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))) (define gprime gp_0))))))
(t let/let*
(test-both-ints "(let* ([a 9]) (let ([b 6]) a))"
`((before-after ((hilite (let* ([a 9]) (let ([b 6]) a)))) ((hilite (define a_0 9)) (hilite (let ([b 6]) a_0))))
- (before-after ((define a_0 9) (hilite (let ([b 6]) a_0)))
- ((define a_0 9) (hilite (define b_1 6)) (hilite a_0)))
- (before-after ((define a_0 9) (define b_1 6) (hilite a_0))
- ((define a_0 9) (define b_1 6) (hilite 9)))
- (finished-stepping))))
+ (before-after-finished ((define a_0 9)) ((hilite (let ([b 6]) a_0))) ((hilite (define b_1 6)) (hilite a_0)))
+ (before-after-finished ((define b_1 6)) ((hilite a_0)) ((hilite 9)))
+ (finished (9)))))
;;;;;;;;;;;;;
;;
@@ -853,39 +735,36 @@
(t letrec1
(test-intermediate-sequence "(define a 3) (define c 19) (letrec ([a 13] [b a]) (+ b a c))"
- (let* ([defs1 `((define a 3) (define c 19))]
- [defs2 (append defs1 `((define a_0 13)))]
- [defs3 (append defs2 `((define b_0 13)))])
- `((before-after (,@defs1 (hilite (letrec ([a 13] [b a]) (+ b a c))))
- (,@defs1 (hilite (define a_0 13)) (hilite (define b_0 a_0)) (hilite (+ b_0 a_0 c))))
- (before-after (,@defs2 (define b_0 (hilite a_0)) (+ b_0 a_0 c))
- (,@defs2 (define b_0 (hilite 13)) (+ b_0 a_0 c)))
- (before-after (,@defs3 (+ (hilite b_0) a_0 c))
- (,@defs3 (+ (hilite 13) a_0 c)))
- (before-after (,@defs3 (+ 13 (hilite a_0) c))
- (,@defs3 (+ 13 (hilite 13) c)))
- (before-after (,@defs3 (+ 13 13 (hilite c)))
- (,@defs3 (+ 13 13 (hilite 19))))
- (before-after (,@defs3 (hilite (+ 13 13 19)))
- (,@defs3 (hilite 45)))
- (finished-stepping)))))
+ `((before-after-finished ((define a 3) (define c 19))
+ ((hilite (letrec ([a 13] [b a]) (+ b a c))))
+ ((hilite (define a_0 13)) (hilite (define b_0 a_0)) (hilite (+ b_0 a_0 c))))
+ (before-after-finished-waiting ((define a_0 13))
+ ((define b_0 (hilite a_0))) ((define b_0 (hilite 13)))
+ ( (+ b_0 a_0 c)))
+ (before-after-finished ((define b_0 13))
+ ((+ (hilite b_0) a_0 c)) ((+ (hilite 13) a_0 c)))
+ (before-after ((+ 13 (hilite a_0) c)) ((+ 13 (hilite 13) c)))
+ (before-after ((+ 13 13 (hilite c))) ((+ 13 13 (hilite 19))))
+ (before-after ((hilite (+ 13 13 19))) ((hilite 45)))
+ (finished (45)))))
(t letrec2
(test-intermediate-sequence "(letrec ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)"
`((before-after ((hilite (letrec ([a (lambda (x) (+ x 14))] [b (+ 3 4)]) 9)))
((hilite (define a_0 (lambda (x) (+ x 14)))) (hilite (define b_0 (+ 3 4))) (hilite 9)))
- (before-after ((define a_0 (lambda (x) (+ x 14))) (define b_0 (hilite (+ 3 4))) 9)
- ((define a_0 (lambda (x) (+ x 14))) (define b_0 (hilite 7)) 9))
- (finished-stepping))))
+ (before-after-finished-waiting ((define a_0 (lambda (x) (+ x 14))))
+ ((define b_0 (hilite (+ 3 4)))) ((define b_0 (hilite 7)))
+ (9))
+ (finished ((define b_0 7) 9)))))
(t letrec3
(test-intermediate-sequence "(define (f g) (letrec ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)) (define gprime (f cos))"
- (let ([defs `((define (f g) (letrec ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))])
- `((before-after (,@defs (define gprime (hilite (f cos))))
- (,@defs (define gprime (hilite (letrec ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
- (before-after (,@defs (define gprime (hilite (letrec ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
- (,@defs (hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
- (finished-stepping)))))
+ `((before-after-finished ((define (f g) (letrec ([gp (lambda (x) (/ (- (g (+ x 0.1)) (g x)) 0.001))]) gp)))
+ ((define gprime (hilite (f cos))))
+ ((define gprime (hilite (letrec ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp)))))
+ (before-after ((define gprime (hilite (letrec ([gp (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))]) gp))))
+ ((hilite (define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001)))) (define gprime (hilite gp_0))))
+ (finished ((define gp_0 (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.001))) (define gprime gp_0))))))
;;;;;;;;;;;;;
;;
;; RECUR
@@ -897,44 +776,26 @@
;; not hidden. Fixing this involves parameterizing the unwind by what kind of break it was. Yuck! So we just fudge the test case.
(t recur
- (test-advanced-sequence "(define (countdown n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1))))) (countdown 2)"
- (let* ([defs1 `((define (countdown n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1))))))]
- [defs2 (append defs1 `((define (loop_0 n) (if (= n 0) 13 (loop_0 (- n 1))))))])
- `((before-after (,@defs1 ((hilite countdown) 2))
- (,@defs1 ((hilite (lambda (n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1)))))) 2)))
- (before-after (,@defs1 (hilite ((lambda (n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1))))) 2)))
- (,@defs1 (hilite (recur loop ([n 2]) (if (= n 0) 13 (loop (- n 1)))))))
- (before-after (,@defs1 (hilite (recur loop ([n 2]) (if (= n 0) 13 (loop (- n 1))))))
- (,@defs1 (hilite (define (loop_0 n) (if (= n 0) 13 (loop_0 (- n 1))))) ((hilite loop_0) 2)))
- (before-after (,@defs2 ((hilite loop_0) 2))
- (,@defs2 ((hilite (lambda (n) (if (= n 0) 13 (loop_0 (- n 1))))) 2)))
- (before-after (,@defs2 (hilite ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) 2)))
- (,@defs2 (hilite (if (= 2 0) 13 (loop_0 (- 2 1))))))
- (before-after (,@defs2 (if (hilite (= 2 0)) 13 (loop_0 (- 2 1))))
- (,@defs2 (if (hilite false) 13 (loop_0 (- 2 1)))))
- (before-after (,@defs2 (hilite (if false 13 (loop_0 (- 2 1)))))
- (,@defs2 (hilite (loop_0 (- 2 1)))))
- (before-after (,@defs2 ((hilite loop_0) (- 2 1)))
- (,@defs2 ((hilite (lambda (n) (if (= n 0) 13 (loop_0 (- n 1))))) (- 2 1))))
- (before-after (,@defs2 ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) (hilite (- 2 1))))
- (,@defs2 ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) (hilite 1))))
- (before-after (,@defs2 (hilite ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) 1)))
- (,@defs2 (hilite (if (= 1 0) 13 (loop_0 (- 1 1))))))
- (before-after (,@defs2 (if (hilite (= 1 0)) 13 (loop_0 (- 1 1))))
- (,@defs2 (if (hilite false) 13 (loop_0 (- 1 1)))))
- (before-after (,@defs2 (hilite (if false 13 (loop_0 (- 1 1)))))
- (,@defs2 (hilite (loop_0 (- 1 1)))))
- (before-after (,@defs2 ((hilite loop_0) (- 1 1)))
- (,@defs2 ((hilite (lambda (n) (if (= n 0) 13 (loop_0 (- n 1))))) (- 1 1))))
- (before-after (,@defs2 ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) (hilite (- 1 1))))
- (,@defs2 ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) (hilite 0))))
- (before-after (,@defs2 (hilite ((lambda (n) (if (= n 0) 13 (loop_0 (- n 1)))) 0)))
- (,@defs2 (hilite (if (= 0 0) 13 (loop_0 (- 0 1))))))
- (before-after (,@defs2 (if (hilite (= 0 0)) 13 (loop_0 (- 0 1))))
- (,@defs2 (if (hilite true) 13 (loop_0 (- 0 1)))))
- (before-after (,@defs2 (hilite (if true 13 (loop_0 (- 0 1)))))
- (,@defs2 (hilite 13)))
- (finished-stepping)))))
+ (test-intermediate-sequence "(define (countdown n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1))))) (countdown 2)"
+ `((before-after-finished ((define (countdown n) (recur loop ([n n]) (if (= n 0) 13 (loop (- n 1))))))
+ ((hilite (countdown 2)))
+ ((hilite (recur loop ([n 2]) (if (= n 0) 13 (loop (- n 1)))))))
+ (before-after ((hilite (recur loop ([n 2]) (if (= n 0) 13 (loop (- n 1))))))
+ ((hilite (define (loop_0 n) (if (= n 0) 13 (loop_0 (- n 1))))) ((hilite loop_0) 2)))
+ (before-after-finished ((define (loop_0 n) (if (= n 0) 13 (loop_0 (- n 1)))))
+ ((hilite (loop_0 2)))
+ ((hilite (if (= 2 0) 13 (loop_0 (- 2 1))))))
+ (before-after ((if (hilite (= 2 0)) 13 (loop_0 (- 2 1)))) ((if (hilite false) 13 (loop_0 (- 2 1)))))
+ (before-after ((hilite (if false 13 (loop_0 (- 2 1))))) ((hilite (loop_0 (- 2 1)))))
+ (before-after ((loop_0 (hilite (- 2 1)))) ((loop_0 (hilite 1))))
+ (before-after ((hilite (loop_0 1))) ((hilite (if (= 1 0) 13 (loop_0 (- 1 1))))))
+ (before-after ((if (hilite (= 1 0)) 13 (loop_0 (- 1 1)))) ((if (hilite false) 13 (loop_0 (- 1 1)))))
+ (before-after ((hilite (if false 13 (loop_0 (- 1 1))))) ((hilite (loop_0 (- 1 1)))))
+ (before-after ((loop_0 (hilite (- 1 1)))) ((loop_0 (hilite 0))))
+ (before-after ((hilite (loop_0 0))) ((hilite (if (= 0 0) 13 (loop_0 (- 0 1))))))
+ (before-after ((if (hilite (= 0 0)) 13 (loop_0 (- 0 1)))) ((if (hilite true) 13 (loop_0 (- 0 1)))))
+ (before-after ((hilite (if true 13 (loop_0 (- 0 1))))) ((hilite 13)))
+ (finished (13)))))
;;;;;;;;;;;;;
;;
@@ -947,162 +808,135 @@
(test-both-ints "(local () (+ 3 4))"
`((before-after ((hilite (local () (+ 3 4)))) ((hilite (+ 3 4))))
(before-after ((hilite (+ 3 4))) ((hilite 7)))
- (finished-stepping))))
+ (finished (7)))))
(t local1
(test-both-ints "(local ((define a 3) (define b 8)) 4)"
`((before-after ((hilite (local ((define a 3) (define b 8)) 4)))
((hilite (define a_0 3)) (hilite (define b_0 8)) (hilite 4)))
- (finished-stepping))))
+ (finished ((define a_0 3) (define b_0 8) 4)))))
(t local2
(test-intermediate-sequence "(local ((define (a x) (+ x 9))) (a 6))"
- (let ([defs `((define (a_0 x) (+ x 9)))])
`((before-after ((hilite (local ((define (a x) (+ x 9))) (a 6))))
((hilite (define (a_0 x) (+ x 9))) (hilite (a_0 6))))
- (before-after (,@defs (hilite (a_0 6)))
- (,@defs (hilite (+ 6 9))))
- (before-after (,@defs (hilite (+ 6 9)))
- (,@defs (hilite 15)))
- (finished-stepping)))))
+ (before-after-finished ((define (a_0 x) (+ x 9)))
+ ((hilite (a_0 6))) ((hilite (+ 6 9))))
+ (before-after ((hilite (+ 6 9))) ((hilite 15)))
+ (finished (15)))))
(t local3
(test-intermediate/lambda-sequence "(local ((define (a x) (+ x 9))) (a 6))"
- (let ([defs `((define (a_0 x) (+ x 9)))])
- `((before-after ((hilite (local ((define (a x) (+ x 9))) (a 6))))
- ((hilite (define (a_0 x) (+ x 9))) (hilite (a_0 6))))
- (before-after (,@defs ((hilite a_0) 6))
- (,@defs ((hilite (lambda (x) (+ x 9))) 6)))
- (before-after (,@defs (hilite ((lambda (x) (+ x 9)) 6)))
- (,@defs (hilite (+ 6 9))))
- (before-after (,@defs (hilite (+ 6 9)))
- (,@defs (hilite 15)))
- (finished-stepping)))))
+ `((before-after ((hilite (local ((define (a x) (+ x 9))) (a 6))))
+ ((hilite (define (a_0 x) (+ x 9))) (hilite (a_0 6))))
+ (before-after-finished ((define (a_0 x) (+ x 9)))
+ (((hilite a_0) 6)) (((hilite (lambda (x) (+ x 9))) 6)))
+ (before-after ((hilite ((lambda (x) (+ x 9)) 6))) ((hilite (+ 6 9))))
+ (before-after ((hilite (+ 6 9))) ((hilite 15)))
+ (finished (15)))))
(t local4
(test-intermediate-sequence "(local ((define (a x) (+ x 13))) a)"
`((before-after ((hilite (local ((define (a x) (+ x 13))) a))) ((hilite (define (a_0 x) (+ x 13))) (hilite a_0)))
- (finished-stepping))))
+ (finished ((define (a_0 x) (+ x 13)) a_0)))))
(t local5
(test-intermediate/lambda-sequence "(local ((define (a x) (+ x 13))) a)"
- `((before-after ((hilite (local ((define (a x) (+ x 13))) a)))
- ((hilite (define (a_0 x) (+ x 13))) (hilite a_0)))
- (before-after ((define (a_0 x) (+ x 13)) (hilite a_0))
- ((define (a_0 x) (+ x 13)) (hilite (lambda (x) (+ x 13)))))
- (finished-stepping))))
+ `((before-after ((hilite (local ((define (a x) (+ x 13))) a))) ((hilite (define (a_0 x) (+ x 13))) (hilite a_0)))
+ (before-after ((hilite a_0)) ((hilite (lambda (x) (+ x 13)))))
+ (finished ((define (a_0 x) (+ x 13)) (lambda (x) (+ x 13)))))))
(t local-interref1
(test-intermediate-sequence "(local ((define (a x) (+ x 9)) (define b a) (define p (+ 3 4))) (b 1))"
- (let* ([defs1 `((define (a_0 x) (+ x 9)) (define b_0 a_0))]
- [defs2 (append defs1 `((define p_0 7)))])
`((before-after ((hilite (local ((define (a x) (+ x 9)) (define b a) (define p (+ 3 4))) (b 1))))
((hilite (define (a_0 x) (+ x 9))) (hilite (define b_0 a_0)) (hilite (define p_0 (+ 3 4))) (hilite (b_0 1))))
- (before-after (,@defs1 (define p_0 (hilite (+ 3 4))) (b_0 1))
- (,@defs1 (define p_0 (hilite 7)) (b_0 1)))
- (before-after (,@defs2 ((hilite b_0) 1))
- (,@defs2 ((hilite a_0) 1)))
- (before-after (,@defs2 (hilite (a_0 1)))
- (,@defs2 (hilite (+ 1 9))))
- (before-after (,@defs2 (hilite (+ 1 9)))
- (,@defs2 (hilite 10)))
- (finished-stepping)))))
+ (before-after-finished-waiting ((define (a_0 x) (+ x 9)) (define b_0 a_0))
+ ((define p_0 (hilite (+ 3 4)))) ((define p_0 (hilite 7))) ((b_0 1)))
+ (before-after-finished ((define p_0 7))
+ (((hilite b_0) 1)) (((hilite a_0) 1)))
+ (before-after ((hilite (a_0 1))) ((hilite (+ 1 9))))
+ (before-after ((hilite (+ 1 9))) ((hilite 10)))
+ (finished (10)))))
(t local-interref2
(test-intermediate/lambda-sequence "(local ((define (a x) (+ x 9)) (define b a) (define p (+ 3 4))) (b 1))"
- (let* ([defs1 `((define (a_0 x) (+ x 9)))]
- [defs2 (append defs1 `((define b_0 (lambda (x) (+ x 9)))))]
- [defs3 (append defs2 `((define p_0 7)))])
`((before-after ((hilite (local ((define (a x) (+ x 9)) (define b a) (define p (+ 3 4))) (b 1))))
((hilite (define (a_0 x) (+ x 9))) (hilite (define b_0 a_0)) (hilite (define p_0 (+ 3 4))) (hilite (b_0 1))))
- (before-after (,@defs1 (define b_0 (hilite a_0)) (define p_0 (+ 3 4)) (b_0 1))
- (,@defs1 (define b_0 (hilite (lambda (x) (+ x 9)))) (define p_0 (+ 3 4)) (b_0 1)))
- (before-after (,@defs2 (define p_0 (hilite (+ 3 4))) (b_0 1))
- (,@defs2 (define p_0 (hilite 7)) (b_0 1)))
- (before-after (,@defs3 ((hilite b_0) 1))
- (,@defs3 ((hilite (lambda (x) (+ x 9))) 1)))
- (before-after (,@defs3 (hilite ((lambda (x) (+ x 9)) 1)))
- (,@defs3 (hilite (+ 1 9))))
- (before-after (,@defs3 (hilite (+ 1 9)))
- (,@defs3 (hilite 10)))
- (finished-stepping)))))
+ (before-after-finished-waiting ((define (a_0 x) (+ x 9)))
+ ((define b_0 (hilite a_0))) ((define b_0 (hilite (lambda (x) (+ x 9))))) ((define p_0 (+ 3 4)) (b_0 1)))
+ (before-after-finished-waiting ((define b_0 (lambda (x) (+ x 9))))
+ ((define p_0 (hilite (+ 3 4)))) ((define p_0 (hilite 7))) ((b_0 1)))
+ (before-after-finished ((define p_0 7))
+ (((hilite b_0) 1)) (((hilite (lambda (x) (+ x 9))) 1)))
+ (before-after ((hilite ((lambda (x) (+ x 9)) 1))) ((hilite (+ 1 9))))
+ (before-after ((hilite (+ 1 9))) ((hilite 10)))
+ (finished (10)))))
(t local-gprime
(test-intermediate-sequence "(define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)) (define gprime (f12 cos))"
- (let ([defs `((define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)))])
- `((before-after (,@defs (define gprime (hilite (f12 cos))))
- (,@defs (define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp)))))
- (before-after (,@defs (define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp))))
- (,@defs (hilite (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))) (define gprime (hilite gp_0))))
- (finished-stepping)))))
+ `((before-after-finished ((define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)))
+ ((define gprime (hilite (f12 cos))))
+ ((define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp)))))
+ (before-after ((define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp))))
+ ((hilite (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))) (define gprime (hilite gp_0))))
+ (finished ((define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)) (define gprime gp_0))))))
(t local-gprime/lambda
(test-intermediate/lambda-sequence "(define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)) (define gprime (f12 cos))"
- (let ([defs `((define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)))])
- `((before-after (,@defs (define gprime ((hilite f12) cos)))
- (,@defs (define gprime ((hilite (lambda (g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp))) cos))))
- (before-after (,@defs (define gprime (hilite ((lambda (g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)) cos))))
- (,@defs (define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp)))))
- (before-after (,@defs (define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp))))
- (,@defs (hilite (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))) (define gprime (hilite gp_0))))
- (before-after (,@defs (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)) (define gprime (hilite gp_0)))
- (,@defs
- (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))
- (define gprime (hilite (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))))))
- (finished-stepping)))))
+ `((before-after-finished ((define (f12 g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)))
+ ((define gprime ((hilite f12) cos)))
+ ((define gprime ((hilite (lambda (g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp))) cos))))
+ (before-after ((define gprime (hilite ((lambda (g) (local ([define (gp x) (/ (- (g (+ x 0.1)) (g x)) 0.1)]) gp)) cos))))
+ ((define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp)))))
+ (before-after ((define gprime (hilite (local ([define (gp x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)]) gp))))
+ ((hilite (define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))) (define gprime (hilite gp_0))))
+ (before-after-finished ((define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)))
+ ((define gprime (hilite gp_0))) ((define gprime (hilite (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))))))
+ (finished ((define (gp_0 x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1)) (define gprime (lambda (x) (/ (- (cos (+ x 0.1)) (cos x)) 0.1))))))))
- ; test generativity... that is, multiple evaluations of a local should get different lifted names:
+ ; test generativity... that is, multiple evaluations of a local get different lifted names:
(t local-generative
(test-intermediate-sequence "(define (a13 b13 c13) (b13 c13)) (define (f9 x) (local ((define (maker dc) x)) maker)) (define m1 (f9 3)) (a13 (f9 4) 1)"
- (let* ([defs1 `((define (a13 b13 c13) (b13 c13))
- (define (f9 x) (local ((define (maker dc) x)) maker)))]
- [defs2 (append defs1 `((define (maker_0 dc) 3) (define m1 maker_0)))]
- [defs3 (append defs2 `((define (maker_1 dc) 4)))])
- `((before-after (,@defs1 (define m1 (hilite (f9 3))))
- (,@defs1 (define m1 (hilite (local ((define (maker dc) 3)) maker)))))
- (before-after (,@defs1 (define m1 (hilite (local ((define (maker dc) 3)) maker))))
- (,@defs1 (hilite (define (maker_0 dc) 3)) (define m1 (hilite maker_0))))
- (before-after (,@defs2 (a13 (hilite (f9 4)) 1))
- (,@defs2 (a13 (hilite (local ((define (maker dc) 4)) maker)) 1)))
- (before-after (,@defs2 (a13 (hilite (local ((define (maker dc) 4)) maker)) 1))
- (,@defs2 (hilite (define (maker_1 dc) 4)) (a13 (hilite maker_1) 1)))
- (before-after (,@defs3 (hilite (a13 maker_1 1)))
- (,@defs3 (hilite (maker_1 1))))
- (before-after (,@defs3 (hilite (maker_1 1)))
- (,@defs3 (hilite 4)))
- (finished-stepping)))))
+ `((before-after-finished ((define (a13 b13 c13) (b13 c13))
+ (define (f9 x) (local ((define (maker dc) x)) maker)))
+ ((define m1 (hilite (f9 3)))) ((define m1 (hilite (local ((define (maker dc) 3)) maker)))))
+ (before-after ((define m1 (hilite (local ((define (maker dc) 3)) maker))))
+ ((hilite (define (maker_0 dc) 3)) (define m1 (hilite maker_0))))
+ (before-after-finished ((define (maker_0 dc) 3) (define m1 maker_0))
+ ((a13 (hilite (f9 4)) 1)) ((a13 (hilite (local ((define (maker dc) 4)) maker)) 1)))
+ (before-after ((a13 (hilite (local ((define (maker dc) 4)) maker)) 1))
+ ((hilite (define (maker_1 dc) 4)) (a13 (hilite maker_1) 1)))
+ (before-after-finished ((define (maker_1 dc) 4))
+ ((hilite (a13 maker_1 1))) ((hilite (maker_1 1))))
+ (before-after ((hilite (maker_1 1))) ((hilite 4)))
+ (finished (4)))))
(t local-generative/lambda
(test-intermediate/lambda-sequence "(define (a13 b13 c13) (b13 c13)) (define (f9 x) (local ((define (maker dc) x)) maker)) (define m1 (f9 3)) (a13 (f9 4) 1)"
- (let* ([defs1 `((define (a13 b13 c13) (b13 c13))
- (define (f9 x) (local ((define (maker dc) x)) maker)))]
- [defs2 (append defs1 `((define (maker_0 dc) 3)))]
- [defs3 (append defs2 `((define m1 (lambda (dc) 3))))]
- [defs4 (append defs3 `((define (maker_1 dc) 4)))])
- `((before-after (,@defs1 (define m1 ((hilite f9) 3)))
- (,@defs1 (define m1 ((hilite (lambda (x) (local ((define (maker dc) x)) maker))) 3))))
- (before-after (,@defs1 (define m1 (hilite ((lambda (x) (local ((define (maker dc) x)) maker)) 3))))
- (,@defs1 (define m1 (hilite (local ((define (maker dc) 3)) maker)))))
- (before-after (,@defs1 (define m1 (hilite (local ((define (maker dc) 3)) maker))))
- (,@defs1 (hilite (define (maker_0 dc) 3)) (define m1 (hilite maker_0))))
- (before-after (,@defs2 (define m1 (hilite maker_0)))
- (,@defs2 (define m1 (hilite (lambda (dc) 3)))))
- (before-after (,@defs3 ((hilite a13) (f9 4) 1))
- (,@defs3 ((hilite (lambda (b13 c13) (b13 c13))) (f9 4) 1)))
- (before-after (,@defs3 ((lambda (b13 c13) (b13 c13)) ((hilite f9) 4) 1))
- (,@defs3 ((lambda (b13 c13) (b13 c13)) ((hilite (lambda (x) (local ((define (maker dc) x)) maker))) 4) 1)))
- (before-after (,@defs3 ((lambda (b13 c13) (b13 c13)) (hilite ((lambda (x) (local ((define (maker dc) x)) maker)) 4)) 1))
- (,@defs3 ((lambda (b13 c13) (b13 c13)) (hilite (local ((define (maker dc) 4)) maker)) 1)))
- (before-after (,@defs3 ((lambda (b13 c13) (b13 c13)) (hilite (local ((define (maker dc) 4)) maker)) 1))
- (,@defs3 (hilite (define (maker_1 dc) 4)) ((lambda (b13 c13) (b13 c13)) (hilite maker_1) 1)))
- (before-after (,@defs4 ((lambda (b13 c13) (b13 c13)) (hilite maker_1) 1))
- (,@defs4 ((lambda (b13 c13) (b13 c13)) (hilite (lambda (dc) 4)) 1)))
- (before-after (,@defs4 (hilite ((lambda (b13 c13) (b13 c13)) (lambda (dc) 4) 1)))
- (,@defs4 (hilite ((lambda (dc) 4) 1))))
- (before-after (,@defs4 (hilite ((lambda (dc) 4) 1)))
- (,@defs4 (hilite 4)))
- (finished-stepping)))))
+ `((before-after-finished ((define (a13 b13 c13) (b13 c13))
+ (define (f9 x) (local ((define (maker dc) x)) maker)))
+ ((define m1 ((hilite f9) 3))) ((define m1 ((hilite (lambda (x) (local ((define (maker dc) x)) maker))) 3))))
+ (before-after ((define m1 (hilite ((lambda (x) (local ((define (maker dc) x)) maker)) 3))))
+ ((define m1 (hilite (local ((define (maker dc) 3)) maker)))))
+ (before-after ((define m1 (hilite (local ((define (maker dc) 3)) maker))))
+ ((hilite (define (maker_0 dc) 3)) (define m1 (hilite maker_0))))
+ (before-after-finished ((define (maker_0 dc) 3))
+ ((define m1 (hilite maker_0))) ((define m1 (hilite (lambda (dc) 3)))))
+ (before-after-finished ((define m1 (lambda (dc) 3)))
+ (((hilite a13) (f9 4) 1)) (((hilite (lambda (b13 c13) (b13 c13))) (f9 4) 1)))
+ (before-after (((lambda (b13 c13) (b13 c13)) ((hilite f9) 4) 1))
+ (((lambda (b13 c13) (b13 c13)) ((hilite (lambda (x) (local ((define (maker dc) x)) maker))) 4) 1)))
+ (before-after (((lambda (b13 c13) (b13 c13)) (hilite ((lambda (x) (local ((define (maker dc) x)) maker)) 4)) 1))
+ (((lambda (b13 c13) (b13 c13)) (hilite (local ((define (maker dc) 4)) maker)) 1)))
+ (before-after (((lambda (b13 c13) (b13 c13)) (hilite (local ((define (maker dc) 4)) maker)) 1))
+ ((hilite (define (maker_1 dc) 4)) ((lambda (b13 c13) (b13 c13)) (hilite maker_1) 1)))
+ (before-after-finished ((define (maker_1 dc) 4))
+ (((lambda (b13 c13) (b13 c13)) (hilite maker_1) 1))
+ (((lambda (b13 c13) (b13 c13)) (hilite (lambda (dc) 4)) 1)))
+ (before-after ((hilite ((lambda (b13 c13) (b13 c13)) (lambda (dc) 4) 1))) ((hilite ((lambda (dc) 4) 1))))
+ (before-after ((hilite ((lambda (dc) 4) 1))) ((hilite 4)))
+ (finished (4)))))
;;;;;;;;;;;;;
;;
@@ -1112,44 +946,30 @@
(t int/lam1
(test-intermediate/lambda-sequence "(define f ((lambda (x) x) (lambda (x) x))) (f f)"
- (let ([defs `((define f (lambda (x) x)))])
- `((before-after ((define f (hilite ((lambda (x) x) (lambda (x) x)))))
- ((define f (hilite (lambda (x) x)))))
- (before-after (,@defs ((hilite f) f))
- (,@defs ((hilite (lambda (x) x)) f)))
- (before-after (,@defs ((lambda (x) x) (hilite f)))
- (,@defs ((lambda (x) x) (hilite (lambda (x) x)))))
- (before-after (,@defs (hilite ((lambda (x) x) (lambda (x) x))))
- (,@defs (hilite (lambda (x) x))))
- (finished-stepping)))))
+ `((before-after ((define f (hilite ((lambda (x) x) (lambda (x) x))))) ((define f (hilite (lambda (x) x)))))
+ (before-after-finished ((define f (lambda (x) x)))
+ (((hilite f) f)) (((hilite (lambda (x) x)) f)))
+ (before-after (((lambda (x) x) (hilite f))) (((lambda (x) x) (hilite (lambda (x) x)))))
+ (before-after ((hilite ((lambda (x) x) (lambda (x) x)))) ((hilite (lambda (x) x))))
+ (finished ((define f (lambda (x) x)) (lambda (x) x))))))
(t int/lam2
(test-intermediate/lambda-sequence "(define f (if false (lambda (x) x) (lambda (x) x))) (f f)"
- (let ([defs `((define f (lambda (x) x)))])
`((before-after ((define f (hilite (if false (lambda (x) x) (lambda (x) x)))))
((define f (hilite (lambda (x) x)))))
- (before-after (,@defs ((hilite f) f))
- (,@defs ((hilite (lambda (x) x)) f)))
- (before-after (,@defs ((lambda (x) x) (hilite f)))
- (,@defs ((lambda (x) x) (hilite (lambda (x) x)))))
- (before-after (,@defs (hilite ((lambda (x) x) (lambda (x) x))))
- (,@defs (hilite (lambda (x) x))))
- (finished-stepping)))))
+ (before-after-finished ((define f (lambda (x) x)))
+ (((hilite f) f)) (((hilite (lambda (x) x)) f)))
+ (before-after (((lambda (x) x) (hilite f))) (((lambda (x) x) (hilite (lambda (x) x)))))
+ (before-after ((hilite ((lambda (x) x) (lambda (x) x)))) ((hilite (lambda (x) x))))
+ (finished ((define f (lambda (x) x)) (lambda (x) x))))))
- ;
- ; ;;;;;;;;;;;;;
- ; ;;
- ; ;; TIME
- ; ;;
- ; ;;;;;;;;;;;;;
- ;
(t time
(test-intermediate-sequence "(time (+ 3 4))"
`((before-after ((hilite (+ 3 4)))
((hilite 7)))
- (finished-stepping))))
+ (finished (7)))))
;;;;;;;;;;;;;;;;
@@ -1158,8 +978,6 @@
;;
;;;;;;;;;;;;;;;;
- ;; NOT UPDATED FOR NEW TEST CASE FORMAT
-
#;(t ddj-screenshot
(test-mz-sequence (define-syntax (xml stx)
(letrec ([process-xexpr
@@ -1225,17 +1043,38 @@
#;(t xml-box1
(test-xml-beginner-sequence `((xml-box "3"))
- `((finished-stepping))))
+ `((finished ((xml-box-value (cons 'abba (cons empty (cons "3" empty)))))))))
#;(t xml-box2
(text-xml-beginnner-sequence `("(cdr (cdr " (xml-box "a b") "))")
`((before-after ((cdr (cdr (xml-box "a b"))))))))
+ ;
+ ; ;;;;;;;;;;;;;
+ ; ;;
+ ; ;; TIME
+ ; ;;
+ ; ;;;;;;;;;;;;;
+ ;
+ ; (test-intermediate-sequence "(time (+ 3 4))"
+ ; `((before-after ((time (hilite ,h-p))) ((+ 3 4)) same (7))
+ ; (before-after ((hilite ,h-p)) ((time 7)) same (7))
+ ; (result (7))))
+
+
;(t filled-rect-image
; (test-upto-int-lam "(image-width (filled-rect 10 10 'blue))"
; `((before-after ((image-width (hilite (filled-rect 10 10 'blue)))) ((image-width (hilite )))))))
; add image test: (image-width (filled-rect 10 10 'blue))
+ ;;;;;;;;;;;;;;
+ ;;
+ ;; PRIM TESTS
+ ;;
+ ;;;;;;;;;;;;;;
+
+
+
; ;;;;;;;;;;;;;
; ;;
@@ -1298,7 +1137,7 @@
((and true (hilite true))))
(before-after ((hilite (and true true)))
((hilite true)))
- (finished-stepping))))
+ (finished (true)))))
#;(t teachpack-name-rendering
(test-teachpack-sequence
@@ -1311,7 +1150,7 @@
((hilite (get-key-event))))
(before-after ((hilite (get-key-event)))
((hilite false)))
- (finished-stepping))))
+ (finished (false)))))
#;(t teachpack-hop-names
(test-teachpack-sequence
@@ -1324,7 +1163,7 @@
((hilite (on-key-event a))))
(before-after ((hilite (on-key-event a)))
((hilite true)))
- (finished-stepping))))
+ (finished (true)))))
#;(t teachpack-web-interaction
(test-teachpack-sequence
@@ -1348,27 +1187,12 @@
((inform (hilite "30"))))
(before-after ((hilite (inform "30")))
((hilite true)))
- (finished-stepping))))
-
-
- ;;;;;;;;;;;;;
- ;;
- ;; Set!
- ;;
- ;;;;;;;;;;;;;
-
- #;(t simple-set!
- "(define a 3) a (set! a 4) a"
- `((before-after-finished ((define a 3))
- ((hilite a))
- ((hilite 3)))
- (before-after-finished ((3))
- ((hilite (set!))))))
+ (finished (true)))))
#;(t teachpack-callbacks
(test-teachpack-sequence " (define (f2c x) x) (convert-gui f2c)" `() ; placeholder
))
- (run-tests '(local-set!))
- #;(run-all-tests)
+ #;(run-tests '(let-scoping1))
+ (run-all-tests)
)