aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorrubytree <rt@rubytree.me>2023-03-30 17:41:10 +0200
committerLouis Pilfold <louis@lpil.uk>2023-05-13 16:32:38 +0100
commitae0021a2025c9adc6e336cacab750dd2271365e2 (patch)
treea3657fc66a6cee8de87d44c3a19c99e149ea03d7 /test
parent8e92e3e87602f6cbb38291dee18d9068148c9da6 (diff)
downloadgleam_stdlib-ae0021a2025c9adc6e336cacab750dd2271365e2.tar.gz
gleam_stdlib-ae0021a2025c9adc6e336cacab750dd2271365e2.zip
Fixes #420
Diffstat (limited to 'test')
-rw-r--r--test/gleam/dynamic_test.gleam220
1 files changed, 220 insertions, 0 deletions
diff --git a/test/gleam/dynamic_test.gleam b/test/gleam/dynamic_test.gleam
index e33e7f9..abf4ce6 100644
--- a/test/gleam/dynamic_test.gleam
+++ b/test/gleam/dynamic_test.gleam
@@ -522,6 +522,35 @@ pub fn tuple2_test() {
|> should.equal(Error([
DecodeError(path: [], expected: "Tuple of 2 elements", found: "Int"),
]))
+
+ [1, 2]
+ |> dynamic.from
+ |> dynamic.tuple2(dynamic.int, dynamic.int)
+ |> should.equal(Ok(#(1, 2)))
+
+ [dynamic.from(1), dynamic.from("a")]
+ |> dynamic.from
+ |> dynamic.tuple2(dynamic.int, dynamic.string)
+ |> should.equal(Ok(#(1, "a")))
+
+ ["", ""]
+ |> dynamic.from
+ |> dynamic.tuple2(dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "String", path: ["0"]),
+ DecodeError(expected: "Int", found: "String", path: ["1"]),
+ ]))
+
+ [1, 2, 3]
+ |> dynamic.from
+ |> dynamic.tuple2(dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(
+ path: [],
+ expected: "List of 2 elements",
+ found: "List of 3 elements",
+ ),
+ ]))
}
pub fn tuple3_test() {
@@ -535,6 +564,16 @@ pub fn tuple3_test() {
|> dynamic.tuple3(dynamic.int, dynamic.string, dynamic.float)
|> should.equal(Ok(#(1, "", 3.0)))
+ [1, 2, 3]
+ |> dynamic.from
+ |> dynamic.tuple3(dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Ok(#(1, 2, 3)))
+
+ [dynamic.from(1), dynamic.from("a"), dynamic.from(3.0)]
+ |> dynamic.from
+ |> dynamic.tuple3(dynamic.int, dynamic.string, dynamic.float)
+ |> should.equal(Ok(#(1, "a", 3.0)))
+
#(1, 2, "")
|> dynamic.from
|> dynamic.tuple3(dynamic.int, dynamic.int, dynamic.int)
@@ -562,6 +601,26 @@ pub fn tuple3_test() {
),
]))
+ ["", "", ""]
+ |> dynamic.from
+ |> dynamic.tuple3(dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "String", path: ["0"]),
+ DecodeError(expected: "Int", found: "String", path: ["1"]),
+ DecodeError(expected: "Int", found: "String", path: ["2"]),
+ ]))
+
+ [1, 2]
+ |> dynamic.from
+ |> dynamic.tuple3(dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(
+ path: [],
+ expected: "List of 3 elements",
+ found: "List of 2 elements",
+ ),
+ ]))
+
1
|> dynamic.from
|> dynamic.tuple3(dynamic.int, dynamic.int, dynamic.int)
@@ -581,6 +640,16 @@ pub fn tuple4_test() {
|> dynamic.tuple4(dynamic.int, dynamic.string, dynamic.float, dynamic.int)
|> should.equal(Ok(#(1, "", 3.0, 4)))
+ [1, 2, 3, 4]
+ |> dynamic.from
+ |> dynamic.tuple4(dynamic.int, dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Ok(#(1, 2, 3, 4)))
+
+ [dynamic.from(1), dynamic.from("a"), dynamic.from(3.0), dynamic.from(4.0)]
+ |> dynamic.from
+ |> dynamic.tuple4(dynamic.int, dynamic.string, dynamic.float, dynamic.float)
+ |> should.equal(Ok(#(1, "a", 3.0, 4.0)))
+
#(1, 2, 3, "")
|> dynamic.from
|> dynamic.tuple4(dynamic.int, dynamic.int, dynamic.int, dynamic.int)
@@ -609,6 +678,27 @@ pub fn tuple4_test() {
),
]))
+ ["", "", "", ""]
+ |> dynamic.from
+ |> dynamic.tuple4(dynamic.int, dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "String", path: ["0"]),
+ DecodeError(expected: "Int", found: "String", path: ["1"]),
+ DecodeError(expected: "Int", found: "String", path: ["2"]),
+ DecodeError(expected: "Int", found: "String", path: ["3"]),
+ ]))
+
+ [1, 2]
+ |> dynamic.from
+ |> dynamic.tuple4(dynamic.int, dynamic.int, dynamic.int, dynamic.int)
+ |> should.equal(Error([
+ DecodeError(
+ path: [],
+ expected: "List of 4 elements",
+ found: "List of 2 elements",
+ ),
+ ]))
+
1
|> dynamic.from
|> dynamic.tuple4(dynamic.int, dynamic.int, dynamic.int, dynamic.int)
@@ -640,6 +730,34 @@ pub fn tuple5_test() {
)
|> should.equal(Ok(#(1, "", 3.0, 4, 5)))
+ [1, 2, 3, 4, 5]
+ |> dynamic.from
+ |> dynamic.tuple5(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Ok(#(1, 2, 3, 4, 5)))
+
+ [
+ dynamic.from(1),
+ dynamic.from("a"),
+ dynamic.from(3.0),
+ dynamic.from(4.0),
+ dynamic.from(True),
+ ]
+ |> dynamic.from
+ |> dynamic.tuple5(
+ dynamic.int,
+ dynamic.string,
+ dynamic.float,
+ dynamic.float,
+ dynamic.bool,
+ )
+ |> should.equal(Ok(#(1, "a", 3.0, 4.0, True)))
+
#(1, 2, 3, 4, "")
|> dynamic.from
|> dynamic.tuple5(
@@ -687,6 +805,40 @@ pub fn tuple5_test() {
),
]))
+ ["", "", "", "", ""]
+ |> dynamic.from
+ |> dynamic.tuple5(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "String", path: ["0"]),
+ DecodeError(expected: "Int", found: "String", path: ["1"]),
+ DecodeError(expected: "Int", found: "String", path: ["2"]),
+ DecodeError(expected: "Int", found: "String", path: ["3"]),
+ DecodeError(expected: "Int", found: "String", path: ["4"]),
+ ]))
+
+ [1, 2]
+ |> dynamic.from
+ |> dynamic.tuple5(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Error([
+ DecodeError(
+ path: [],
+ expected: "List of 5 elements",
+ found: "List of 2 elements",
+ ),
+ ]))
+
1
|> dynamic.from
|> dynamic.tuple5(
@@ -726,6 +878,37 @@ pub fn tuple6_test() {
)
|> should.equal(Ok(#(1, "", 3.0, 4, 5, 6)))
+ [1, 2, 3, 4, 5, 6]
+ |> dynamic.from
+ |> dynamic.tuple6(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Ok(#(1, 2, 3, 4, 5, 6)))
+
+ [
+ dynamic.from(1),
+ dynamic.from("a"),
+ dynamic.from(3.0),
+ dynamic.from(4.0),
+ dynamic.from(True),
+ dynamic.from(6.0),
+ ]
+ |> dynamic.from
+ |> dynamic.tuple6(
+ dynamic.int,
+ dynamic.string,
+ dynamic.float,
+ dynamic.float,
+ dynamic.bool,
+ dynamic.float,
+ )
+ |> should.equal(Ok(#(1, "a", 3.0, 4.0, True, 6.0)))
+
#(1, 2, 3, 4, 5, "")
|> dynamic.from
|> dynamic.tuple6(
@@ -777,6 +960,43 @@ pub fn tuple6_test() {
),
]))
+ ["", "", "", "", "", ""]
+ |> dynamic.from
+ |> dynamic.tuple6(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Error([
+ DecodeError(expected: "Int", found: "String", path: ["0"]),
+ DecodeError(expected: "Int", found: "String", path: ["1"]),
+ DecodeError(expected: "Int", found: "String", path: ["2"]),
+ DecodeError(expected: "Int", found: "String", path: ["3"]),
+ DecodeError(expected: "Int", found: "String", path: ["4"]),
+ DecodeError(expected: "Int", found: "String", path: ["5"]),
+ ]))
+
+ [1, 2]
+ |> dynamic.from
+ |> dynamic.tuple6(
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ dynamic.int,
+ )
+ |> should.equal(Error([
+ DecodeError(
+ path: [],
+ expected: "List of 6 elements",
+ found: "List of 2 elements",
+ ),
+ ]))
+
1
|> dynamic.from
|> dynamic.tuple6(