(use sicp sicp-eval sicp-eval-anal sicp-streams test) (test "Draw-painter-as-svg" "" (with-output-to-string (lambda () (draw-painter-as-svg (segments->painter (list (make-segment (make-vect 0.0 1.0) (make-vect 1.0 0.0)))))))) (test "Draw-painter-as-svg: beside" "" (with-output-to-string (lambda () (let ((painter (segments->painter (list (make-segment (make-vect 0.0 1.0) (make-vect 1.0 0.0)))))) (draw-painter-as-svg (beside painter painter)))))) (test "Draw-painter-as-svg: image" "" (with-output-to-string (lambda () (let ((painter (image->painter "lena.png"))) (draw-painter-as-svg (beside painter painter)))))) (test "Numerical derivation" 1 (deriv '(+ x 3) 'x)) (test "Symbolic derivation" 'y (deriv '(* x y) 'x)) (test "Stream->list with all" '(1 2 3) (stream->list (cons-stream 1 (cons-stream 2 (cons-stream 3 stream-null))))) (test "Stream->list with 2" '(1 2) (stream->list (cons-stream 1 (cons-stream 2 (cons-stream 3 stream-null))) 2)) (test "List->string" '(1 2 3) (stream->list (list->stream '(1 2 3)))) (test "The evaluator evaluates" 5 (parameterize ((primitive-procedures (cons (list '+ +) (primitive-procedures)))) (eval* '(+ 2 3) (setup-environment)))) (call-with-values (lambda () (time+values (+ 2 2))) (lambda (time value) (test-assert "Time returns a number" (number? time)) (test "Values returns the value" 4 value))) (test "The analyzing evaluator analyzes and evaluates" 5 (parameterize ((primitive-procedures (cons (list '+ +) (primitive-procedures)))) (anal-eval* '(+ 2 3) (setup-environment)))) (test-exit)