aboutsummaryrefslogtreecommitdiff
path: root/gen/test/gleam@function_test.erl
blob: d85bce18508ca14207c94debe161f40445a71eb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-module(gleam@function_test).
-compile(no_auto_import).

-export([compose_test/0, flip_test/0, identity_test/0]).

compose_test() ->
    AddTwo = fun(Int) -> Int + 2 end,
    AddThree = fun(Int1) -> Int1 + 3 end,
    AddFive = gleam@function:compose(AddTwo, AddThree),
    gleam@should:equal(AddFive(1), 6),
    HeadToString = gleam@function:compose(
        gleam@function:compose(
            fun gleam@list:head/1,
            fun(GleamCaptureVariable) ->
                gleam@result:unwrap(GleamCaptureVariable, 0)
            end
        ),
        fun gleam@int:to_string/1
    ),
    gleam@should:equal(HeadToString([1]), <<"1"/utf8>>),
    gleam@should:equal(HeadToString([]), <<"0"/utf8>>).

flip_test() ->
    Fun = fun(S, I) ->
        gleam@string:append(
            gleam@string:append(
                gleam@string:append(
                    gleam@string:append(<<"String: '"/utf8>>, S),
                    <<"', Int: '"/utf8>>
                ),
                gleam@int:to_string(I)
            ),
            <<"'"/utf8>>
        )
    end,
    FlippedFun = gleam@function:flip(Fun),
    gleam@should:equal(
        Fun(<<"Bob"/utf8>>, 1),
        <<"String: 'Bob', Int: '1'"/utf8>>
    ),
    gleam@should:equal(
        FlippedFun(2, <<"Alice"/utf8>>),
        <<"String: 'Alice', Int: '2'"/utf8>>
    ).

identity_test() ->
    gleam@should:equal(gleam@function:identity(1), 1),
    gleam@should:equal(gleam@function:identity(<<""/utf8>>), <<""/utf8>>),
    gleam@should:equal(gleam@function:identity([]), []),
    gleam@should:equal(gleam@function:identity({1, 2.0}), {1, 2.0}).