aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2026-04-05 16:53:53 +0100
committerGene Pasquet <dev@etenil.net>2026-04-05 16:53:53 +0100
commit0b41611b0a05622c806f9c7c2e27eff47f369b77 (patch)
tree01a76ac775ee99268127f4828ada75732290810c
parent92990d363171c795202a123479ed59443f5d0375 (diff)
feat: add assets.scm — minimal key/value asset registry
-rw-r--r--assets.scm16
-rw-r--r--tests/assets-test.scm36
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")