diff options
| -rw-r--r-- | assets.scm | 16 | ||||
| -rw-r--r-- | tests/assets-test.scm | 36 |
2 files changed, 52 insertions, 0 deletions
diff --git a/assets.scm b/assets.scm new file mode 100644 index 0000000..9bbbf92 --- /dev/null +++ b/assets.scm @@ -0,0 +1,16 @@ +(module downstroke/assets * + +(import scheme + (chicken base) + (srfi 69)) + +(define (make-asset-registry) + (make-hash-table)) + +(define (asset-set! registry key value) + (hash-table-set! registry key value)) + +(define (asset-ref registry key) + (hash-table-ref/default registry key #f)) + +) ;; end module diff --git a/tests/assets-test.scm b/tests/assets-test.scm new file mode 100644 index 0000000..0f6931b --- /dev/null +++ b/tests/assets-test.scm @@ -0,0 +1,36 @@ +(import srfi-64) + +(include "assets.scm") +(import downstroke/assets) + +(test-begin "assets") + +(test-group "make-asset-registry" + (test-assert "returns a value" + (make-asset-registry))) + +(test-group "asset-set! and asset-ref" + (let ((reg (make-asset-registry))) + (test-equal "missing key returns #f" + #f + (asset-ref reg 'missing)) + + (asset-set! reg 'my-tilemap "data") + (test-equal "stored value is retrievable" + "data" + (asset-ref reg 'my-tilemap)) + + (asset-set! reg 'my-tilemap "updated") + (test-equal "overwrite replaces value" + "updated" + (asset-ref reg 'my-tilemap)) + + (asset-set! reg 'other 42) + (test-equal "multiple keys coexist" + "updated" + (asset-ref reg 'my-tilemap)) + (test-equal "second key retrievable" + 42 + (asset-ref reg 'other)))) + +(test-end "assets") |
