aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2022-01-09 17:27:02 +0000
committerLouis Pilfold <louis@lpil.uk>2022-01-09 17:27:02 +0000
commit63b6a706c30cc5ee4084ccb9bce40f2f8159cdbb (patch)
tree015ad2690ecaa7e8e447394c78c335a5b0ed7fdb /test
parent24e4b166bcf441e2cefaf50f04282a7a3e516283 (diff)
downloadgleam_stdlib-63b6a706c30cc5ee4084ccb9bce40f2f8159cdbb.tar.gz
gleam_stdlib-63b6a706c30cc5ee4084ccb9bce40f2f8159cdbb.zip
decode3
Diffstat (limited to 'test')
-rw-r--r--test/gleam/dynamic_test.gleam27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam
index 1bfc255..c597b4e 100644
--- a/test/gleam/dynamic_test.gleam
+++ b/test/gleam/dynamic_test.gleam
@@ -811,3 +811,30 @@ pub fn decode2_test() {
DecodeError(expected: "Float", found: "Int", path: ["1"]),
]))
}
+
+type Three(a, b, c) {
+ Three(a, b, c)
+}
+
+pub fn decode3_test() {
+ let decoder =
+ dynamic.decode3(
+ Three,
+ dynamic.element(0, dynamic.int),
+ dynamic.element(1, dynamic.float),
+ dynamic.element(2, dynamic.int),
+ )
+
+ #(1, 2.0, 3)
+ |> dynamic.from
+ |> decoder
+ |> should.equal(Ok(Three(1, 2.0, 3)))
+
+ #(1.3, 2, 3)
+ |> dynamic.from
+ |> decoder
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "Float", path: ["0"]),
+ DecodeError(expected: "Float", found: "Int", path: ["1"]),
+ ]))
+}