aboutsummaryrefslogtreecommitdiff
path: root/tests/renderer-test.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/renderer-test.scm')
-rw-r--r--tests/renderer-test.scm28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/renderer-test.scm b/tests/renderer-test.scm
index 1a8f7df..8ebeedf 100644
--- a/tests/renderer-test.scm
+++ b/tests/renderer-test.scm
@@ -266,4 +266,32 @@
(test-assert "does not crash with full scene"
(begin (render-debug-scene! renderer scene) #t)))))
+(test-group "scene-entities must be plists"
+ (let* ((cam (make-camera x: 0 y: 0))
+ (tileset (make-tileset tilewidth: 16 tileheight: 16
+ spacing: 0 tilecount: 100 columns: 10
+ image-source: "" image: #f))
+ (layer (make-layer name: "ground" width: 1 height: 1 map: '((0))))
+ (tilemap (make-tilemap width: 1 height: 1 tilewidth: 16 tileheight: 16
+ tileset-source: "" tileset: tileset
+ layers: (list layer) objects: '()))
+ (tex 'mock-texture)
+ (entity (list #:type 'box #:x 10 #:y 20 #:width 16 #:height 16 #:tile-id 1))
+ (cell (vector entity 'extra-data 0 100 'linear #t))
+ (scene-ok (make-scene entities: (list entity)
+ tilemap: tilemap camera: cam
+ tileset-texture: tex camera-target: #f))
+ (scene-bad (make-scene entities: (list cell)
+ tilemap: tilemap camera: cam
+ tileset-texture: tex camera-target: #f)))
+ (test-assert "render-scene! works with plist entities"
+ (begin (render-scene! #f scene-ok) #t))
+ (test-error "render-scene! errors when entity list contains a vector"
+ #t (render-scene! #f scene-bad))
+ (test-assert "extracting entity from cell vector fixes the issue"
+ (let ((scene-fixed (make-scene entities: (list (vector-ref cell 0))
+ tilemap: tilemap camera: cam
+ tileset-texture: tex camera-target: #f)))
+ (begin (render-scene! #f scene-fixed) #t)))))
+
(test-end "renderer")