<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Can I use your unit test framework to test predicates with an arbitrary number of arguments and modes?<br></blockquote><div><br></div><div>Test cases CAN test a predicate of an arbitrary number of arguments, but I suspect the correct answer is no ;)<br><br></div><div>Test cases are defined as a deterministic predicate with a single out parameter for the result.   You then implement the call to your code under test within the test case.   A simple test case below, implemented in terms of a lambda:<br><br></div><div><pre><span class="">test_case</span><span class="">(</span><span class="">"AreEqualPass"</span><span class="">,</span>
<a name="cl-20"></a>         <span class=""> (</span><span class="">pred</span><span class="">(</span><span class="">Disposition</span><span class="">::</span><span class="">out</span><span class="">)</span> <span class="">is</span> <span class="">det</span> <span class="">:</span><span class="">-</span> <span class="">assertions</span><span class="">.</span><span class="">are_equal</span><span class="">(</span><span class="">univ</span><span class="">(</span><span class="">1</span><span class="">),</span> <span class="">univ</span><span class="">(</span><span class="">1</span><span class="">),</span> <span class="">Disposition</span><span class="">)))</span></pre></div><div> <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
In my own little unit test module (attached), I use different test predicates for this purpose because I didn’t find another solution yet.<br>
<br>
E.g.<br>
<br>
1. testPred/7 to  to test a predicate that takes two input parameters and either succeeds or fails.<br>
<br>
2. testPredio/6 to test a predicate that takes one input parameter and returns one output parameter.<br>
<br>
3. testPrediio/7 to test a predicate that takes two input parameters and returns one output parameter.<br>
<br>
4. testDCG/6 to test a DCG parser predicate that returns a parsing result<br>
<br></blockquote><div><br></div><div>I did consider this approach, but decided when it came time to associate arguments with a test case, I'd handle it with a closure or  bind them to the test case as a list(univ).    I have no idea which approach is better though.<br></div><div><br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Best regards,<br>
<br>
Dirk<br>
<br>
</blockquote></div><br></div></div>