aboutsummaryrefslogtreecommitdiff
path: root/tests/engine-test.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/engine-test.scm')
-rw-r--r--tests/engine-test.scm29
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")