Current section

Files

Jump to
gleam_stdlib gen test gleam@option_test.erl
Raw

gen/test/gleam@option_test.erl

-module(gleam@option_test).
-compile(no_auto_import).
-export([is_some_test/0, is_none_test/0, to_result_test/0, from_result_test/0, unwrap_option_test/0, map_option_test/0, flatten_option_test/0, then_option_test/0, or_option_test/0]).
is_some_test() ->
gleam@should:be_true(gleam@option:is_some({some, 1})),
gleam@should:be_false(gleam@option:is_some(none)).
is_none_test() ->
gleam@should:be_false(gleam@option:is_none({some, 1})),
gleam@should:be_true(gleam@option:is_none(none)).
to_result_test() ->
gleam@should:equal(
gleam@option:to_result({some, 1}, <<"possible_error"/utf8>>),
{ok, 1}
),
gleam@should:equal(
gleam@option:to_result(none, <<"possible_error"/utf8>>),
{error, <<"possible_error"/utf8>>}
).
from_result_test() ->
gleam@should:equal(gleam@option:from_result({ok, 1}), {some, 1}),
gleam@should:equal(
gleam@option:from_result({error, <<"some_error"/utf8>>}),
none
).
unwrap_option_test() ->
gleam@should:equal(gleam@option:unwrap({some, 1}, 0), 1),
gleam@should:equal(gleam@option:unwrap(none, 0), 0).
map_option_test() ->
gleam@should:equal(
gleam@option:map({some, 1}, fun(X) -> X + 1 end),
{some, 2}
),
gleam@should:equal(
gleam@option:map({some, 1}, fun(_) -> <<"2"/utf8>> end),
{some, <<"2"/utf8>>}
),
gleam@should:equal(gleam@option:map(none, fun(X1) -> X1 + 1 end), none).
flatten_option_test() ->
gleam@should:equal(gleam@option:flatten({some, {some, 1}}), {some, 1}),
gleam@should:equal(gleam@option:flatten({some, none}), none),
gleam@should:equal(gleam@option:flatten(none), none).
then_option_test() ->
gleam@should:equal(
gleam@option:then({some, 1}, fun(X) -> {some, X + 1} end),
{some, 2}
),
gleam@should:equal(
gleam@option:then({some, 1}, fun(_) -> {some, <<"2"/utf8>>} end),
{some, <<"2"/utf8>>}
),
gleam@should:equal(
gleam@option:then(none, fun(X1) -> {some, X1 + 1} end),
none
).
or_option_test() ->
gleam@should:equal(gleam@option:'or'({some, 1}, {some, 2}), {some, 1}),
gleam@should:equal(gleam@option:'or'({some, 1}, none), {some, 1}),
gleam@should:equal(gleam@option:'or'(none, {some, 2}), {some, 2}),
gleam@should:equal(gleam@option:'or'(none, none), none).