diff options
author | rubytree <rt@rubytree.me> | 2023-03-30 17:41:10 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2023-05-13 16:32:38 +0100 |
commit | ae0021a2025c9adc6e336cacab750dd2271365e2 (patch) | |
tree | a3657fc66a6cee8de87d44c3a19c99e149ea03d7 /test | |
parent | 8e92e3e87602f6cbb38291dee18d9068148c9da6 (diff) | |
download | gleam_stdlib-ae0021a2025c9adc6e336cacab750dd2271365e2.tar.gz gleam_stdlib-ae0021a2025c9adc6e336cacab750dd2271365e2.zip |
Fixes #420
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/dynamic_test.gleam | 220 |
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( |