Current section
Files
Jump to
Current section
Files
src/showtime@tests@should.erl
-module(showtime@tests@should).
-compile(no_auto_import).
-export([equal/2, equal_meta/3, not_equal/2, evaluate/1]).
-export_type([assertion/1]).
-type assertion(IBA) :: {eq,
IBA,
IBA,
gleam@option:option(showtime@tests@meta:meta())} |
{not_eq, IBA, IBA}.
-spec equal(IBC, IBC) -> nil.
equal(A, B) ->
evaluate({eq, A, B, none}).
-spec equal_meta(IBE, IBE, showtime@tests@meta:meta()) -> nil.
equal_meta(A, B, Meta) ->
evaluate({eq, A, B, {some, Meta}}).
-spec not_equal(IBG, IBG) -> nil.
not_equal(A, B) ->
evaluate({not_eq, A, B}).
-spec evaluate(assertion(any())) -> nil.
evaluate(Assertion) ->
case Assertion of
{eq, A, B, _} ->
case A =:= B of
true ->
{ok, Assertion};
false ->
_assert_subject = {error, Assertion},
{ok, _} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"showtime/tests/should"/utf8>>,
function => <<"evaluate"/utf8>>,
line => 28})
end
end;
{not_eq, A@1, B@1} ->
case A@1 /= B@1 of
true ->
{ok, Assertion};
false ->
_assert_subject@1 = {error, Assertion},
{ok, _} = case _assert_subject@1 of
{ok, _} -> _assert_subject@1;
_assert_fail@1 ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@1,
module => <<"showtime/tests/should"/utf8>>,
function => <<"evaluate"/utf8>>,
line => 35})
end
end
end,
nil.