diff options
author | RJ Dellecese <rjdellecese@gmail.com> | 2019-12-18 22:04:16 -0500 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-12-19 10:35:55 +0000 |
commit | dd7dd9b1df1c77a62c49ca6e2620f6757b5b0734 (patch) | |
tree | e519bb3fd5573c0bd067d1f7c62c407fee8a37bd /gen | |
parent | 2be45a710cb7332cf3c9a16d251c97561f88109c (diff) | |
download | gleam_stdlib-dd7dd9b1df1c77a62c49ca6e2620f6757b5b0734.tar.gz gleam_stdlib-dd7dd9b1df1c77a62c49ca6e2620f6757b5b0734.zip |
Add dynamic.element for decoding tuples
Diffstat (limited to 'gen')
-rw-r--r-- | gen/src/gleam@dynamic.erl | 5 | ||||
-rw-r--r-- | gen/test/gleam@dynamic_test.erl | 28 |
2 files changed, 31 insertions, 2 deletions
diff --git a/gen/src/gleam@dynamic.erl b/gen/src/gleam@dynamic.erl index e20db87..09a442b 100644 --- a/gen/src/gleam@dynamic.erl +++ b/gen/src/gleam@dynamic.erl @@ -1,7 +1,7 @@ -module(gleam@dynamic). -compile(no_auto_import). --export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, field/2]). +-export([from/1, unsafe_coerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, field/2, element/2]). from(A) -> gleam_stdlib:identity(A). @@ -38,3 +38,6 @@ list(Dynamic, DecoderType) -> field(A, B) -> gleam_stdlib:decode_field(A, B). + +element(A, B) -> + gleam_stdlib:decode_element(A, B). diff --git a/gen/test/gleam@dynamic_test.erl b/gen/test/gleam@dynamic_test.erl index d233dbc..ec559b5 100644 --- a/gen/test/gleam@dynamic_test.erl +++ b/gen/test/gleam@dynamic_test.erl @@ -1,7 +1,7 @@ -module(gleam@dynamic_test). -compile(no_auto_import). --export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, field_test/0]). +-export([string_test/0, int_test/0, float_test/0, thunk_test/0, bool_test/0, atom_test/0, list_test/0, field_test/0, element_test/0]). string_test() -> gleam@expect:equal( @@ -168,3 +168,29 @@ field_test() -> ), gleam@expect:is_error(gleam@dynamic:field(gleam@dynamic:from(1), OkAtom)), gleam@expect:is_error(gleam@dynamic:field(gleam@dynamic:from([]), [])). + +element_test() -> + {ok, OkAtom} = gleam@atom:from_string(<<"ok">>), + {ok, ErrorAtom} = gleam@atom:from_string(<<"ok">>), + OkOneStruct = {OkAtom, 1}, + gleam@expect:equal( + gleam@dynamic:element(gleam@dynamic:from(OkOneStruct), 0), + {ok, gleam@dynamic:from(OkAtom)} + ), + gleam@expect:equal( + gleam@dynamic:element(gleam@dynamic:from(OkOneStruct), 1), + {ok, gleam@dynamic:from(1)} + ), + gleam@expect:is_error( + gleam@dynamic:element(gleam@dynamic:from(OkOneStruct), 2) + ), + gleam@expect:is_error( + gleam@dynamic:element(gleam@dynamic:from(OkOneStruct), -1) + ), + gleam@expect:is_error(gleam@dynamic:element(gleam@dynamic:from(1), 0)), + gleam@expect:is_error( + gleam@dynamic:element( + gleam@dynamic:from(gleam@map:insert(gleam@map:new(), 1, OkAtom)), + 0 + ) + ). |