#lang r7rs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tests: Pac-Man ADT ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-library (pacman-project tests test-pacman) (import (scheme base) (pp1 tests) (pacman-project adt-positie) (pacman-project adt-pacman)) (export test) (begin ;; Test aanmaak en startpositie (define (test-aanmaak) (define pac (maak-pacman 5 2)) (define pos (pac 'positie)) (check-eq? (pos 'rij) 5 "Start rij moet 5 zijn") (check-eq? (pos 'kolom) 2 "Start kolom moet 2 zijn")) ;; Test richting (define (test-richting) (define pac (maak-pacman 5 2)) (check-eq? (pac 'richting) 'rechts "Startrichting moet rechts zijn") ((pac 'richting!) 'links) (check-eq? (pac 'richting) 'links "Richting moet links zijn na richting!")) ;; Test beweeg! (define (test-beweeg) (define pac (maak-pacman 5 2)) ((pac 'beweeg!) 0 1) (define pos (pac 'positie)) (check-eq? (pos 'kolom) 3 "Kolom moet 3 zijn na 1 stap rechts") (check-eq? (pos 'rij) 5 "Rij ongewijzigd na horizontale beweging")) ;; Test meerdere bewegingen (define (test-meerdere-bewegingen) (define pac (maak-pacman 5 5)) ((pac 'beweeg!) -1 0) ((pac 'beweeg!) 0 1) (define pos (pac 'positie)) (check-eq? (pos 'rij) 4 "Rij moet 4 zijn na omhoog") (check-eq? (pos 'kolom) 6 "Kolom moet 6 zijn na rechts")) (define (test) (run-test test-aanmaak "Pac-Man: aanmaak en startpositie") (run-test test-richting "Pac-Man: richting") (run-test test-beweeg "Pac-Man: beweeg!") (run-test test-meerdere-bewegingen "Pac-Man: meerdere bewegingen"))))