Refactor(Tests): Add proper (pp1 tests) unit tests for all logic ADTs
Tests for Positie, Doolhof, Pac-Man, Score, and Tijdslimiet ADTs using check/check-eq?/run-test from (pp1 tests) library. Centralized test runner in alle-testen.rkt with prefix imports. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
57
pacman-project/tests/test-positie.rkt
Normal file
57
pacman-project/tests/test-positie.rkt
Normal file
@@ -0,0 +1,57 @@
|
||||
#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"))))
|
||||
Reference in New Issue
Block a user