aboutsummaryrefslogtreecommitdiffstats
path: root/spec/lang/struct_spec.moon
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lang/struct_spec.moon')
-rw-r--r--spec/lang/struct_spec.moon51
1 files changed, 0 insertions, 51 deletions
diff --git a/spec/lang/struct_spec.moon b/spec/lang/struct_spec.moon
deleted file mode 100644
index 9937f99..0000000
--- a/spec/lang/struct_spec.moon
+++ /dev/null
@@ -1,51 +0,0 @@
-import TestPilot from require 'spec.test_setup'
-import T, Struct from require 'alv'
-
-describe "struct", ->
- test = TestPilot '', '(import* struct-)\n'
-
- ab = Struct { a: T.num, b: T.bool }
-
- describe "(set)", ->
- it "can update values", ->
- rt = COPILOT\eval_once '(set (struct "a" 1 "b" false) "a" 2)'
- assert.is.true rt\is_const!
- assert.is.equal ab\mk_const({ a: 2, b: false }), rt.result
-
- it "cannot add members", ->
- err = assert.has.error -> COPILOT\eval_once '(set (struct "a" 1) "b" 2)'
- assert.matches "{a: num} has no 'b' key", err
-
- it "checks value type", ->
- err = assert.has.error -> COPILOT\eval_once '(set (struct "a" 1) "a" "str")'
- assert.matches "expected value for key 'a' to be num, not str", err
-
- describe "(get)", ->
- it "can get values", ->
- rt = COPILOT\eval_once '(get (struct "a" 1 "b" false) "a")'
- assert.is.true rt\is_const!
- assert.is.equal '<num= 1>', tostring rt.result
-
- it "checks keys", ->
- err = assert.has.error -> COPILOT\eval_once '(get (struct "a" 1) "b")'
- assert.matches "has no 'b' key", err
-
- describe "(insert)", ->
- it "can add members", ->
- rt = COPILOT\eval_once '(insert (struct "b" true) "a" 1)'
- assert.is.true rt\is_const!
- assert.is.equal ab\mk_const({ a: 1, b: true }), rt.result
-
- it "doesn't clobber existing members", ->
- err = assert.has.error -> COPILOT\eval_once '(insert (struct "a" 1) "a" 2)'
- assert.matches "key 'a' already exists in value of type {a: num}", err
-
- describe "(remove)", ->
- it "can remove members", ->
- rt = COPILOT\eval_once '(remove (struct "a" 1 "b" false "c" "abc") "c")'
- assert.is.true rt\is_const!
- assert.is.equal ab\mk_const({ a: 1, b: false }), rt.result
-
- it "checks keys", ->
- err = assert.has.error -> COPILOT\eval_once '(remove (struct "a" 1) "b")'
- assert.matches "has no 'b' key", err