aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGiacomo Cavalieri <giacomo.cavalieri@icloud.com>2023-04-21 16:59:17 +0200
committerLouis Pilfold <louis@lpil.uk>2023-04-29 14:33:18 +0100
commit6bf6cefc381205fd103a12204edfc76f30399680 (patch)
tree1f91dcf4dfc97058245fbac1d363f18df0d9a9b1 /test
parentf8ec25ccc7d4e3735268ec05906836922b14172f (diff)
downloadgleam_stdlib-6bf6cefc381205fd103a12204edfc76f30399680.tar.gz
gleam_stdlib-6bf6cefc381205fd103a12204edfc76f30399680.zip
`optional_field` tests
Diffstat (limited to 'test')
-rw-r--r--test/gleam/dynamic_test.gleam56
1 files changed, 56 insertions, 0 deletions
diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam
index 3937ac8..e33e7f9 100644
--- a/test/gleam/dynamic_test.gleam
+++ b/test/gleam/dynamic_test.gleam
@@ -359,6 +359,62 @@ pub fn field_test() {
]))
}
+pub fn optional_field_test() {
+ map.new()
+ |> map.insert("ok", 1)
+ |> dynamic.from
+ |> dynamic.optional_field(named: "ok", of: dynamic.int)
+ |> should.equal(Ok(Some(1)))
+
+ map.new()
+ |> map.insert("ok", 1.0)
+ |> dynamic.from
+ |> dynamic.optional_field(named: "ok", of: dynamic.float)
+ |> should.equal(Ok(Some(1.0)))
+
+ map.new()
+ |> map.insert("ok", 3)
+ |> map.insert("error", 1)
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Ok(Some(3)))
+
+ map.new()
+ |> map.insert("ok", 3)
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.string)
+ |> should.equal(Error([
+ DecodeError(expected: "String", found: "Int", path: ["ok"]),
+ ]))
+
+ map.new()
+ |> map.insert("ok", None)
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Ok(None))
+
+ map.new()
+ |> map.insert("ok", Nil)
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Ok(None))
+
+ map.new()
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Ok(None))
+
+ 1
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Error([DecodeError(expected: "Map", found: "Int", path: [])]))
+
+ []
+ |> dynamic.from
+ |> dynamic.optional_field("ok", dynamic.int)
+ |> should.equal(Error([DecodeError(expected: "Map", found: "List", path: [])]))
+}
+
pub fn element_test() {
let ok_one_tuple = #("ok", 1)