#lang r7rs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tests: Positie ADT ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-library (pacman-project tests test-positie) (import (scheme base) (pp1 tests) (pacman-project adt-positie)) (export test) (begin ;; Test aanmaak en getters (define (test-aanmaak) (define pos (maak-positie 5 10)) (check-eq? (pos 'rij) 5 "Rij moet 5 zijn") (check-eq? (pos 'kolom) 10 "Kolom moet 10 zijn")) ;; Test mutators (define (test-mutators) (define pos (maak-positie 0 0)) ((pos 'rij!) 3) ((pos 'kolom!) 7) (check-eq? (pos 'rij) 3 "Rij moet 3 zijn na rij!") (check-eq? (pos 'kolom) 7 "Kolom moet 7 zijn na kolom!")) ;; Test vergelijk? (define (test-vergelijk) (define p1 (maak-positie 5 10)) (define p2 (maak-positie 5 10)) (define p3 (maak-positie 5 11)) (check ((p1 'vergelijk?) p2) "Gelijke posities moeten gelijk zijn") (check (not ((p1 'vergelijk?) p3)) "Verschillende posities mogen niet gelijk zijn")) ;; Test beweeg (define (test-beweeg) (define pos (maak-positie 5 10)) (define nieuwe-pos ((pos 'beweeg) -1 0)) (check-eq? (nieuwe-pos 'rij) 4 "Rij moet 4 zijn na beweeg omhoog") (check-eq? (nieuwe-pos 'kolom) 10 "Kolom ongewijzigd na beweeg omhoog") ;; Originele positie mag niet gewijzigd zijn (check-eq? (pos 'rij) 5 "Originele rij mag niet wijzigen")) ;; Test dat twee objecten niet eq? zijn (define (test-identiteit) (define p1 (maak-positie 1 1)) (define p2 (maak-positie 1 1)) (check (not (eq? p1 p2)) "Twee positie-objecten mogen niet eq? zijn")) (define (test) (run-test test-aanmaak "Positie: aanmaak en getters") (run-test test-mutators "Positie: mutators") (run-test test-vergelijk "Positie: vergelijk?") (run-test test-beweeg "Positie: beweeg") (run-test test-identiteit "Positie: identiteit"))))