#lang r7rs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tests: Tijdslimiet ADT ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-library (pacman-project tests test-tijdslimiet) (import (scheme base) (pp1 tests) (pacman-project adt-tijdslimiet)) (export test) (begin ;; Test starttijd (define (test-starttijd) (define t (maak-tijdslimiet)) (check-eq? (t 'resterende-tijd) 60 "Starttijd moet 60 seconden zijn") (check (not ((t 'tijd-op?))) "Tijd mag niet op zijn bij start")) ;; Test verlaag na 1 seconde (define (test-verlaag) (define t (maak-tijdslimiet)) ((t 'verlaag!) 1000) (check-eq? (t 'resterende-tijd) 59 "Tijd moet 59 zijn na 1 seconde")) ;; Test verhoog (muntje bonus) (define (test-verhoog) (define t (maak-tijdslimiet)) ((t 'verlaag!) 1000) ((t 'verhoog!)) (check-eq? (t 'resterende-tijd) 60 "Tijd moet 60 zijn na verlaag + verhoog")) ;; Test formatteer-tijd (define (test-formatteer) (define t (maak-tijdslimiet)) (check-eq? ((t 'formatteer-tijd)) "1:00" "60 seconden = 1:00") ((t 'verlaag!) 1000) (check-eq? ((t 'formatteer-tijd)) "0:59" "59 seconden = 0:59")) ;; Test tijd-op? (define (test-tijd-op) (define t (maak-tijdslimiet)) ;; 60 keer verlagen met 1 seconde (do ((i 0 (+ i 1))) ((= i 60)) ((t 'verlaag!) 1000)) (check ((t 'tijd-op?)) "Tijd moet op zijn na 60 seconden")) (define (test) (run-test test-starttijd "Tijdslimiet: starttijd") (run-test test-verlaag "Tijdslimiet: verlaag") (run-test test-verhoog "Tijdslimiet: verhoog") (run-test test-formatteer "Tijdslimiet: formatteer-tijd") (run-test test-tijd-op "Tijdslimiet: tijd-op?"))))