-module(showtime@tests@should). -compile(no_auto_import). -export([equal/2, equal_meta/3, not_equal/2, not_equal_meta/3, be_ok/1, be_ok_meta/2, be_error/1, be_error_meta/2, fail/0, fail_meta/1, be_true/1, be_true_meta/2, be_false/1, be_false_meta/2, evaluate/1]). -export_type([assertion/2]). -type assertion(HUD, HUE) :: {eq, HUD, HUD, gleam@option:option(showtime@tests@meta:meta())} | {not_eq, HUD, HUD, gleam@option:option(showtime@tests@meta:meta())} | {is_ok, {ok, HUD} | {error, HUE}, gleam@option:option(showtime@tests@meta:meta())} | {is_error, {ok, HUD} | {error, HUE}, gleam@option:option(showtime@tests@meta:meta())} | {fail, gleam@option:option(showtime@tests@meta:meta())}. -spec equal(HUO, HUO) -> nil. equal(A, B) -> evaluate({eq, A, B, none}). -spec equal_meta(HUQ, HUQ, showtime@tests@meta:meta()) -> nil. equal_meta(A, B, Meta) -> evaluate({eq, A, B, {some, Meta}}). -spec not_equal(HUS, HUS) -> nil. not_equal(A, B) -> evaluate({not_eq, A, B, none}). -spec not_equal_meta(HUU, HUU, showtime@tests@meta:meta()) -> nil. not_equal_meta(A, B, Meta) -> evaluate({not_eq, A, B, {some, Meta}}). -spec be_ok({ok, any()} | {error, any()}) -> nil. be_ok(A) -> evaluate({is_ok, A, none}). -spec be_ok_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. be_ok_meta(A, Meta) -> evaluate({is_ok, A, {some, Meta}}). -spec be_error({ok, any()} | {error, any()}) -> nil. be_error(A) -> evaluate({is_error, A, none}). -spec be_error_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. be_error_meta(A, Meta) -> evaluate({is_error, A, {some, Meta}}). -spec fail() -> nil. fail() -> evaluate({fail, none}). -spec fail_meta(showtime@tests@meta:meta()) -> nil. fail_meta(Meta) -> evaluate({fail, {some, Meta}}). -spec be_true(boolean()) -> nil. be_true(A) -> _pipe = A, equal(_pipe, true). -spec be_true_meta(boolean(), showtime@tests@meta:meta()) -> nil. be_true_meta(A, Meta) -> _pipe = A, equal_meta(_pipe, true, Meta). -spec be_false(boolean()) -> nil. be_false(A) -> _pipe = A, equal(_pipe, false). -spec be_false_meta(boolean(), showtime@tests@meta:meta()) -> nil. be_false_meta(A, Meta) -> _pipe = A, equal_meta(_pipe, false, Meta). -spec evaluate(assertion(any(), 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 => 78}) 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 => 85}) end end; {is_ok, A@2, _} -> case A@2 of {ok, _} -> {ok, Assertion}; {error, _} -> _assert_subject@2 = {error, Assertion}, {ok, _} = case _assert_subject@2 of {ok, _} -> _assert_subject@2; _assert_fail@2 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@2, module => <<"showtime/tests/should"/utf8>>, function => <<"evaluate"/utf8>>, line => 92}) end end; {is_error, A@3, _} -> case A@3 of {error, _} -> {ok, Assertion}; {ok, _} -> _assert_subject@3 = {error, Assertion}, {ok, _} = case _assert_subject@3 of {ok, _} -> _assert_subject@3; _assert_fail@3 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@3, module => <<"showtime/tests/should"/utf8>>, function => <<"evaluate"/utf8>>, line => 99}) end end; {fail, _} -> _assert_subject@4 = {error, Assertion}, {ok, _} = case _assert_subject@4 of {ok, _} -> _assert_subject@4; _assert_fail@4 -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail@4, module => <<"showtime/tests/should"/utf8>>, function => <<"evaluate"/utf8>>, line => 103}) end end, nil.