diff options
Diffstat (limited to 'tests/engine-test.scm')
| -rw-r--r-- | tests/engine-test.scm | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/tests/engine-test.scm b/tests/engine-test.scm index 2c9d6d5..aa44964 100644 --- a/tests/engine-test.scm +++ b/tests/engine-test.scm @@ -85,7 +85,7 @@ (import scheme (chicken base) defstruct) (import downstroke-entity) (defstruct camera x y) - (defstruct scene entities tilemap tileset camera tileset-texture camera-target background) + (defstruct scene entities tilemap tileset camera tileset-texture camera-target background engine-update) ;; Mock camera-follow - returns a new camera (define (camera-follow camera entity viewport-w viewport-h) (update-camera camera @@ -97,7 +97,15 @@ (cond ((null? entities) #f) ((member tag (entity-ref (car entities) #:tags '())) (car entities)) - (else (loop (cdr entities))))))) + (else (loop (cdr entities)))))) + (define (scene-map-entities scene . procs) + (let loop ((ps procs) (es (scene-entities scene))) + (if (null? ps) + (update-scene scene entities: es) + (loop (cdr ps) (map (car ps) es))))) + (define (scene-transform-entities scene proc) + (update-scene scene entities: (proc (scene-entities scene)))) + (define (sync-groups entities) entities)) (import downstroke-world) ;; --- Real deps --- @@ -105,6 +113,25 @@ (include "assets.scm") (import downstroke-assets) +;; --- Physics module (mock) --- +(module downstroke-physics * + (import scheme (chicken base)) + (define (apply-acceleration e s d) e) + (define (apply-gravity e s d) e) + (define (apply-velocity-x e s d) e) + (define (apply-velocity-y e s d) e) + (define (resolve-tile-collisions-x e s d) e) + (define (resolve-tile-collisions-y e s d) e) + (define (detect-on-solid e s d) e) + (define (resolve-entity-collisions es) es)) +(import downstroke-physics) + +;; --- Tween module (mock) --- +(module downstroke-tween * + (import scheme (chicken base)) + (define (step-tweens e s d) e)) +(import downstroke-tween) + ;; --- Renderer module (mock) --- (module downstroke-renderer * (import scheme (chicken base)) @@ -262,4 +289,17 @@ (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-group "scene engine-update" + (test-equal "scene engine-update defaults to #f" + #f + (scene-engine-update (make-scene entities: '() tilemap: #f camera-target: #f))) + (let* ((my-eu (lambda (game dt) #t)) + (s (make-scene entities: '() tilemap: #f camera-target: #f engine-update: my-eu))) + (test-assert "custom engine-update stored on scene" + (procedure? (scene-engine-update s)))) + (let ((s (make-scene entities: '() tilemap: #f camera-target: #f engine-update: 'none))) + (test-equal "engine-update: 'none disables pipeline" + 'none + (scene-engine-update s)))) + (test-end "engine") |
