#lang scheme (require test-engine/scheme-tests 2htdp/universe) (define posn% (class object% (init-field x y) ;; -> Number (define/public (get-x) x) ;; -> Number (define/public (get-y) y) ;; Number Number -> posn% ;; move this by adding deltax, deltay to the coordinates (define/public (translate deltax deltay) (new posn% [x (+ x deltax)] [y (+ y deltay)])) ;; Scene -> Scene ;; add this posn's image to the given scene (define/public (scene+ s) (place-image IMG x y s)) (field [IMG (circle 3 'solid 'red)]) (super-new))) (define ex-c (new posn% [x 3][y 4])) ;; what doesn't work ; (check-expect (send ex-c translate 0 0) ex-c) ;; what works (check-expect (send (send ex-c translate 0 0) get-x) (send ex-c get-x)) (check-expect (send (send ex-c translate 0 0) get-y) (send ex-c get-y)) ;; alternative: (check-expect (local ((define n (send ex-c translate 0 0))) (list (send n get-x) (send n get-y))) (list (send ex-c get-x) (send ex-c get-y))) (test)