-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(IEL) :: {eq, IEL, IEL, gleam@option:option(showtime@tests@meta:meta())} | {not_eq, IEL, IEL}. -spec equal(IEN, IEN) -> nil. equal(A, B) -> evaluate({eq, A, B, none}). -spec equal_meta(IEP, IEP, showtime@tests@meta:meta()) -> nil. equal_meta(A, B, Meta) -> evaluate({eq, A, B, {some, Meta}}). -spec not_equal(IER, IER) -> 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.