aboutsummaryrefslogtreecommitdiff
path: root/gen/any.erl
diff options
context:
space:
mode:
Diffstat (limited to 'gen/any.erl')
-rw-r--r--gen/any.erl62
1 files changed, 61 insertions, 1 deletions
diff --git a/gen/any.erl b/gen/any.erl
index bfca689..a29ed3d 100644
--- a/gen/any.erl
+++ b/gen/any.erl
@@ -1,10 +1,70 @@
-module(any).
-compile(no_auto_import).
+-include_lib("eunit/include/eunit.hrl").
--export([from/1, unsafeCoerce/1]).
+-export([from/1, unsafeCoerce/1, string/1, int/1, float/1, bool/1, thunk/1, tuple/1]).
from(A) ->
gleam__stdlib:identity(A).
unsafeCoerce(A) ->
gleam__stdlib:identity(A).
+
+string(A) ->
+ gleam__stdlib:decode_string(A).
+
+-ifdef(TEST).
+string_test() ->
+ expect:equal(string(from(<<"">>)), {ok, <<"">>}),
+ expect:equal(string(from(<<"Hello">>)), {ok, <<"Hello">>}),
+ expect:equal(string(from(1)), {error, <<"Expected a String, got `1`">>}),
+ expect:equal(string(from([])), {error, <<"Expected a String, got `[]`">>}).
+-endif.
+
+int(A) ->
+ gleam__stdlib:decode_int(A).
+
+-ifdef(TEST).
+int_test() ->
+ expect:equal(int(from(1)), {ok, 1}),
+ expect:equal(int(from(2)), {ok, 2}),
+ expect:equal(int(from(1.0)), {error, <<"Expected an Int, got `1.0`">>}),
+ expect:equal(int(from([])), {error, <<"Expected an Int, got `[]`">>}).
+-endif.
+
+float(A) ->
+ gleam__stdlib:decode_float(A).
+
+-ifdef(TEST).
+float_test() ->
+ expect:equal(float(from(1.0)), {ok, 1.0}),
+ expect:equal(float(from(2.2)), {ok, 2.2}),
+ expect:equal(float(from(1)), {error, <<"Expected a Float, got `1`">>}),
+ expect:equal(float(from([])), {error, <<"Expected a Float, got `[]`">>}).
+-endif.
+
+bool(A) ->
+ gleam__stdlib:decode_bool(A).
+
+-ifdef(TEST).
+bool_test() ->
+ expect:equal(bool(from(true)), {ok, true}),
+ expect:equal(bool(from(false)), {ok, false}),
+ expect:equal(bool(from(1)), {error, <<"Expected a Bool, got `1`">>}),
+ expect:equal(bool(from([])), {error, <<"Expected a Bool, got `[]`">>}).
+-endif.
+
+thunk(A) ->
+ gleam__stdlib:thunk(A).
+
+tuple(A) ->
+ gleam__stdlib:decode_tuple(A).
+
+-ifdef(TEST).
+tuple_test() ->
+ expect:equal(tuple(from({1, []})), {ok, {from(1), from([])}}),
+ expect:equal(tuple(from({<<"ok">>, <<"ok">>})),
+ {ok, {from(<<"ok">>), from(<<"ok">>)}}),
+ expect:is_error(tuple(from({1}))),
+ expect:is_error(tuple(from({1, 2, 3}))).
+-endif.