59 lines
1.7 KiB
Scheme
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
|
|
|
|
|