racket/collects/2htdp/tests/clause-once.rkt
2010-04-27 16:50:15 -06:00

41 lines
1.4 KiB
Racket

#lang scheme/load
;; purpose: make sure that each clause exists at most once
;; (why am I running this in scheme/load for the namespace in eval)
(error-print-source-location #f)
(with-handlers ((exn:fail:syntax?
(lambda (e)
(define msg (exn-message e))
(define ext "big-bang: duplicate on-draw clause") ; " in: (on-draw render2 400 200)")
(unless (string=? msg ext)
(raise e)))))
(eval '(module a scheme
(require 2htdp/universe)
(require 2htdp/image)
(define (render1 n) (text (number->string n) 12 "red"))
(define (render2 n) (text (number->string n) 10 "blue"))
(define (main a)
(big-bang 0
(on-draw render1 200 400)
(on-draw render2 400 200)
; (on-tick sub1)
(on-tick add1))))))
(with-handlers ((exn:fail:syntax?
(lambda (e)
(define msg (exn-message e))
(unless (string=? msg "universe: duplicate on-tick clause"); " in: (on-tick sub1)")
(raise e)))))
(eval '(module a scheme
(require 2htdp/universe)
(define (main a)
(universe 0
(on-tick add1)
(on-tick sub1))))))