diff options
author | Giacomo Cavalieri <giacomo.cavalieri@icloud.com> | 2023-04-21 16:59:17 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-04-29 14:33:18 +0100 |
commit | 6bf6cefc381205fd103a12204edfc76f30399680 (patch) | |
tree | 1f91dcf4dfc97058245fbac1d363f18df0d9a9b1 /test | |
parent | f8ec25ccc7d4e3735268ec05906836922b14172f (diff) | |
download | gleam_stdlib-6bf6cefc381205fd103a12204edfc76f30399680.tar.gz gleam_stdlib-6bf6cefc381205fd103a12204edfc76f30399680.zip |
`optional_field` tests
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/dynamic_test.gleam | 56 |
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) |