aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrew <drew@drewolson.org>2020-11-03 12:57:08 -0600
committerLouis Pilfold <louis@lpil.uk>2020-11-07 19:16:29 +0000
commit8254bd1079512ed8c8ae8d6fe3c1daf339e4e39e (patch)
treed0ba1c164719abb2d992c678929378eb0ac00ff8 /test
parentc1d3cc12b920f60d06265b645daa3ff0010a8402 (diff)
downloadgleam_stdlib-8254bd1079512ed8c8ae8d6fe3c1daf339e4e39e.tar.gz
gleam_stdlib-8254bd1079512ed8c8ae8d6fe3c1daf339e4e39e.zip
Add result and typed_result to dynamic
Diffstat (limited to 'test')
-rw-r--r--test/gleam/dynamic_test.gleam51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam
index f4e78a0..d8b3be4 100644
--- a/test/gleam/dynamic_test.gleam
+++ b/test/gleam/dynamic_test.gleam
@@ -389,3 +389,54 @@ pub fn list_test() {
|> dynamic.list
|> should.equal(Error("Expected a list, got an int"))
}
+
+pub fn result_test() {
+ Ok(1)
+ |> dynamic.from
+ |> dynamic.result
+ |> should.equal(Ok(Ok(dynamic.from(1))))
+
+ Error("error")
+ |> dynamic.from
+ |> dynamic.result
+ |> should.equal(Ok(Error(dynamic.from("error"))))
+
+ 1
+ |> dynamic.from
+ |> dynamic.result
+ |> should.equal(Error("Expected a 2 element tuple, got an int"))
+
+ let tag = atom.create_from_string("bad")
+
+ tuple(tag, "value")
+ |> dynamic.from
+ |> dynamic.result
+ |> should.equal(Error("Expected a tag of \"ok\" or \"error\", got \"bad\""))
+}
+
+pub fn typed_result_test() {
+ Ok(1)
+ |> dynamic.from
+ |> dynamic.typed_result(ok: dynamic.int, error: dynamic.string)
+ |> should.equal(Ok(Ok(1)))
+
+ Error("error")
+ |> dynamic.from
+ |> dynamic.typed_result(ok: dynamic.int, error: dynamic.string)
+ |> should.equal(Ok(Error("error")))
+
+ Ok("1")
+ |> dynamic.from
+ |> dynamic.typed_result(ok: dynamic.int, error: dynamic.string)
+ |> should.equal(Error("Expected an int, got a binary"))
+
+ Error(1)
+ |> dynamic.from
+ |> dynamic.typed_result(ok: dynamic.int, error: dynamic.string)
+ |> should.equal(Error("Expected a bit_string, got an int"))
+
+ 1
+ |> dynamic.from
+ |> dynamic.typed_result(ok: dynamic.int, error: dynamic.string)
+ |> should.equal(Error("Expected a 2 element tuple, got an int"))
+}