diff options
Diffstat (limited to 'tests/engine-test.scm')
| -rw-r--r-- | tests/engine-test.scm | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/tests/engine-test.scm b/tests/engine-test.scm index 2c443cc..67b9942 100644 --- a/tests/engine-test.scm +++ b/tests/engine-test.scm @@ -1,4 +1,4 @@ -(import scheme (chicken base) (chicken keyword) srfi-64 defstruct) +(import scheme (chicken base) (chicken keyword) srfi-64 defstruct (srfi 69)) ;; --- Mocks --- @@ -171,4 +171,31 @@ cam (game-camera g)))) +(test-group "make-game-state" + (let ((s (make-game-state create: (lambda (g) 'created) + update: (lambda (g dt) 'updated) + render: (lambda (g) 'rendered)))) + (test-assert "state has create hook" (state-hook s #:create)) + (test-assert "state has update hook" (state-hook s #:update)) + (test-assert "state has render hook" (state-hook s #:render))) + (let ((s (make-game-state))) + (test-equal "default state hooks are #f" #f (state-hook s #:create)) + (test-equal "default state update is #f" #f (state-hook s #:update)))) + +(test-group "game-add-state! and game-start-state!" + (let* ((created? #f) + (game (make-game)) + (state (make-game-state + create: (lambda (g) (set! created? #t))))) + (game-add-state! game 'play state) + (test-equal "active-state defaults to #f" #f (game-active-state game)) + (game-start-state! game 'play) + (test-equal "active-state set after start" 'play (game-active-state game)) + (test-assert "create hook called on start" created?))) + +(test-group "game states defaults" + (let ((game (make-game))) + (test-assert "states is a hash-table" (hash-table? (game-states game))) + (test-equal "active-state defaults to #f" #f (game-active-state game)))) + (test-end "engine") |
