aboutsummaryrefslogtreecommitdiff
path: root/gen/test
diff options
context:
space:
mode:
authorRJ Dellecese <rjdellecese@gmail.com>2019-12-28 21:29:11 -0500
committerLouis Pilfold <louis@lpil.uk>2019-12-30 22:36:04 +0000
commit9292225d996c2092647fae15726a9f9bb2a691c8 (patch)
tree3e2b4edfcbe34c54eb279cd59924e9fc0ce13590 /gen/test
parenta37c8fcf7b8ed522bc7c23dc25c3a804f7728adb (diff)
downloadgleam_stdlib-9292225d996c2092647fae15726a9f9bb2a691c8.tar.gz
gleam_stdlib-9292225d996c2092647fae15726a9f9bb2a691c8.zip
Add generic module
Containing identity, always, flip, and compose functions.
Diffstat (limited to 'gen/test')
-rw-r--r--gen/test/gleam@generic_test.erl44
1 files changed, 44 insertions, 0 deletions
diff --git a/gen/test/gleam@generic_test.erl b/gen/test/gleam@generic_test.erl
new file mode 100644
index 0000000..eecf650
--- /dev/null
+++ b/gen/test/gleam@generic_test.erl
@@ -0,0 +1,44 @@
+-module(gleam@generic_test).
+-compile(no_auto_import).
+
+-export([identity_test/0, always_test/0, flip_test/0, compose_test/0]).
+
+identity_test() ->
+ gleam@expect:equal(gleam@generic:identity(1), 1).
+
+always_test() ->
+ gleam@expect:equal(gleam@generic:always(1, 2), 2).
+
+flip_test() ->
+ Fun = fun(String, Int) ->
+ gleam@string:append(
+ gleam@string:append(
+ gleam@string:append(
+ gleam@string:append(<<"String: '">>, String),
+ <<"', Int: '">>
+ ),
+ gleam@int:to_string(Int)
+ ),
+ <<"'">>
+ )
+ end,
+ FlippedFun = gleam@generic:flip(Fun),
+ gleam@expect:equal(Fun(<<"Bob">>, 1), <<"String: 'Bob', Int: '1'">>),
+ gleam@expect:equal(
+ FlippedFun(2, <<"Alice">>),
+ <<"String: 'Alice', Int: '2'">>
+ ).
+
+compose_test() ->
+ AddTwo = fun(Int) -> Int + 2 end,
+ AddThree = fun(Int1) -> Int1 + 3 end,
+ AddFive = gleam@generic:compose(AddTwo, AddThree),
+ gleam@expect:equal(AddFive(1), 6),
+ HeadToString = gleam@generic:compose(
+ fun gleam@list:head/1,
+ fun(IntResult) ->
+ gleam@int:to_string(gleam@result:unwrap(IntResult, 0))
+ end
+ ),
+ gleam@expect:equal(HeadToString([1]), <<"1">>),
+ gleam@expect:equal(HeadToString([]), <<"0">>).