From 8740fd37ee9873188bc0701e3cc6722a4fcae41f Mon Sep 17 00:00:00 2001 From: AlaskanEmily Date: Sun, 12 May 2019 02:15:27 +0000 Subject: [PATCH] Use correct typeclass in compare_tests --- transunit.compare.m | 9 +++++++++ transunit.compare_test.m | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/transunit.compare.m b/transunit.compare.m index 6c3f67f..93f9eff 100644 --- a/transunit.compare.m +++ b/transunit.compare.m @@ -59,6 +59,10 @@ %------------------------------------------------------------------------------% +:- func simple_compare(T, T) = maybe.maybe_error. + +%------------------------------------------------------------------------------% + :- func negate(float) = float. %------------------------------------------------------------------------------% @@ -150,6 +154,11 @@ generic_compare(A, B) = Result :- %------------------------------------------------------------------------------% +simple_compare(A, B) = Result :- + ( A = B -> Result = maybe.ok ; Result = maybe.error("Not equal") ). + +%------------------------------------------------------------------------------% + :- pred accumulate_mismatch(T, T, list(string), list(string), int, int) <= compare(T). :- mode accumulate_mismatch(in, in, in, out, in, out) is det. diff --git a/transunit.compare_test.m b/transunit.compare_test.m index 0088d75..a126104 100644 --- a/transunit.compare_test.m +++ b/transunit.compare_test.m @@ -31,7 +31,8 @@ %-----------------------------------------------------------------------------% % NOTE: this runner does NOT catch exceptions! -:- pred run_test(pred(A, B), A, B, maybe.maybe_error). +:- pred run_test(pred(A, B), A, B, maybe.maybe_error) + <= compare(B). :- mode run_test(pred(in, out) is det, in, in, out) is det. :- mode run_test(pred(di, out) is det, di, in, out) is det. :- mode run_test(pred(in, out) is cc_multi, in, in, out) is det. @@ -43,7 +44,8 @@ %-----------------------------------------------------------------------------% -:- pred run_test(pred(A, B, State, State), A, B, maybe.maybe_error, State, State). +:- pred run_test(pred(A, B, State, State), A, B, maybe.maybe_error, State, State) + <= compare(B). :- mode run_test(pred(in, out, di, uo) is det, in, in, out, di, uo) is det. :- mode run_test(pred(in, out, in, out) is det, in, in, out, in, out) is det. :- mode run_test(pred(di, out, di, uo) is det, di, in, out, di, uo) is det. @@ -55,7 +57,8 @@ %-----------------------------------------------------------------------------% -:- pred run_test(pred(T, State, State), T, maybe.maybe_error, State, State). +:- pred run_test(pred(T, State, State), T, maybe.maybe_error, State, State) + <= compare(T). :- mode run_test(pred(out, di, uo) is det, in, out, di, uo) is det. :- mode run_test(pred(out, in, out) is det, in, out, in, out) is det. :- mode run_test(pred(out, di, uo) is cc_multi, in, out, di, uo) is det. @@ -66,13 +69,15 @@ % error is transformed into the maybe_error result using io.error_message. % If the result is io.ok, the value is tested against the expected result as % usual. -:- pred run_io_test(pred(A, io.res(B), State, State), A, B, maybe.maybe_error, State, State). +:- pred run_io_test(pred(A, io.res(B), State, State), A, B, maybe.maybe_error, State, State) + <= compare(B). :- mode run_io_test(pred(in, out, di, uo) is det, in, in, out, di, uo) is det. :- mode run_io_test(pred(di, out, di, uo) is det, di, in, out, di, uo) is det. %-----------------------------------------------------------------------------% % Similar to run_test/6, but supports semidet inputs. -:- pred run_backtrack_test(pred(A, B, State, State), A, B, maybe.maybe_error, State, State). +:- pred run_backtrack_test(pred(A, B, State, State), A, B, maybe.maybe_error, State, State) + <= compare(B). :- mode run_backtrack_test(pred(in, out, in, out) is semidet, in, in, out, in, out) is det. :- mode run_backtrack_test(pred(in, out, mdi, muo) is semidet, in, in, out, mdi, muo) is det. :- mode run_backtrack_test(pred(mdi, out, in, out) is semidet, mdi, in, out, in, out) is det. @@ -82,7 +87,8 @@ :- mode run_backtrack_test(pred(mdi, out, in, out) is cc_nondet, mdi, in, out, in, out) is det. :- mode run_backtrack_test(pred(mdi, out, mdi, muo) is cc_nondet, mdi, in, out, mdi, muo) is det. -:- pred run_backtrack_test(pred(T, State, State), T, maybe.maybe_error, State, State). +:- pred run_backtrack_test(pred(T, State, State), T, maybe.maybe_error, State, State) + <= compare(T). :- mode run_backtrack_test(pred(out, in, out) is semidet, in, out, in, out) is det. :- mode run_backtrack_test(pred(out, mdi, muo) is semidet, in, out, mdi, muo) is det. :- mode run_backtrack_test(pred(out, in, out) is cc_nondet, in, out, in, out) is det. @@ -92,12 +98,6 @@ :- implementation. %=============================================================================% -% DUMMY -:- func compare(T, T) = maybe.maybe_error. - -compare(A, B) = Result :- - ( A = B -> Result = maybe.ok ; Result = maybe.error("!=") ). - %-----------------------------------------------------------------------------% run_test(Pred, In, Out, Result) :- -- 2.11.0