lisp-game-jam/test/tests/entity-test.scm
2024-05-26 18:59:10 -04:00

59 lines
1.7 KiB
Scheme

(import (srfi srfi-64)
(test-runner)
(scheme base)
(scheme write)
(ces entity)
(lib ihashtable))
(define-record-type <test-component>
(make-test-component v1 v2)
test-component?
(v1 val-one)
(v2 val-two))
;; We are using this id as our control
(define control-id 333)
(define control-component-name 'test-component)
(define control-component-value (create-ihashtable))
;; te = test-entity
(define te (create-entity control-id))
(define te-with-components (create-entity (+ 1 control-id) control-component-value))
(define entity-generator (create-entity-generator))
(test-runner-factory game-engine-test-runner)
(test-begin "test-entities")
(test-assert (integer? (game-entity-id te)))
(test-assert (integer? (game-entity-id te-with-components)))
(test-assert (ihashtable? (game-entity-components te)))
(test-assert (ihashtable? (game-entity-components te-with-components)))
(test-assert (procedure? entity-generator))
(let ((generated-entity (entity-generator)))
(test-assert (game-entity? generated-entity))
(test-eqv 0 (game-entity-id generated-entity))
(test-assert (ihashtable? (game-entity-components generated-entity))))
(let ((generated-entity (entity-generator)))
(test-assert (game-entity? generated-entity))
(test-eqv 1 (game-entity-id generated-entity))
(test-assert (ihashtable? (game-entity-components generated-entity))))
(let* ((copied-entity (copy-entity te))
(new-id (game-entity-id copied-entity))
(new-components (game-entity-components copied-entity)))
(test-assert (game-entity? copied-entity))
(test-eqv control-id new-id)
(test-assert (ihashtable? new-components)))
(test-end "test-entities")
#t