Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 4e6d7c8ed19900cd06e1799a07228807 > files > 13

ocaml-pa-monad-6.0-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="pa_monad.html">
<link rel="previous" href="Io.html">
<link rel="Up" href="pa_monad.html">
<link title="Index of types" rel=Appendix href="pa_monad_types.html">
<link title="Index of exceptions" rel=Appendix href="pa_monad_exceptions.html">
<link title="Index of values" rel=Appendix href="pa_monad_values.html">
<link title="Index of modules" rel=Appendix href="pa_monad_modules.html">
<link title="Pa_monad" rel="Chapter" href="Pa_monad.html">
<link title="Cc" rel="Chapter" href="Cc.html">
<link title="Exception" rel="Chapter" href="Exception.html">
<link title="Io" rel="Chapter" href="Io.html">
<link title="Utest" rel="Chapter" href="Utest.html"><title>Utest</title>
</head>
<body>
<div class="navbar"><a href="Io.html">Previous</a>
&nbsp;<a href="pa_monad.html">Up</a>
&nbsp;</div>
<center><h1>Module <a href="type_Utest.html">Utest</a></h1></center>
<br>
<pre><span class="keyword">module</span> Utest: <code class="code">sig</code> <a href="Utest.html">..</a> <code class="code">end</code></pre><a name="3_SimpleUnitTestFramework"></a>
<h3>Simple Unit-Test Framework</h3>
<p>

    <code class="code">Utest</code> supplies a simple framework for performing unit-tests in an
    Extreme Programming style.  It has been influenced by Greg (Gnu
    REGression testing) and Maas-Maarten Zeeman's oUnit.<br>
<hr width="100%">
<br><code><span class="keyword">type</span> <a name="TYPEexpected_test_outcome"></a><code class="type"></code>expected_test_outcome = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">ExpectPass</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expect to pass the test.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">ExpectFail</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expect to fail the test.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">ExpectException</span> <span class="keyword">of</span> <code class="type">exn</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expect that the given exception will be raised.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
The outcome of a test case as the writer of the test suite expects
    it to be.<br>
</div>

<br><code><span class="keyword">type</span> <a name="TYPEtest_outcome"></a><code class="type"></code>test_outcome = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Pass</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expected passing and we passed.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Fail</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expected passing but we failed.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">UPass</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expected failing but we did succeed.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">XFail</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >We expected failed and we failed.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">Unresolved</span> <span class="keyword">of</span> <code class="type">string</code></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >An unexpected exception occurred.
                                            The argument is the exception's text,</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>

<div class="info">
The actual outcome of a test case after it has been run.<br>
</div>

<br><code><span class="keyword">type</span> <a name="TYPEtest"></a><code class="type"></code>test = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">TestCase</span> <span class="keyword">of</span> <code class="type">string * <a href="Utest.html#TYPEexpected_test_outcome">expected_test_outcome</a> * (unit -> bool)</code></code></td>

</tr></table>

<div class="info">
A test itself.<br>
</div>

<br><code><span class="keyword">type</span> <a name="TYPEtest_results"></a><code class="type"></code>test_results = {</code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>total&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Total number of test cases attempted</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>passed&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Number of passed tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>failed&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Number of failed tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>upassed&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Number of unexpectedly passed tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>xfailed&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Number of expectedly failed tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code>unresolved&nbsp;: <code class="type">int</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Number of unresolved tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>
}

<div class="info">
Results of some tests.<br>
</div>

<pre><span class="keyword">val</span> <a name="VALtestcase"></a>testcase : <code class="type">string -> <a href="Utest.html#TYPEexpected_test_outcome">expected_test_outcome</a> -> (unit -> bool) -> <a href="Utest.html#TYPEtest">test</a></code></pre><div class="info">
<code class="code">testcase a_test_title an_expected_outcome a_test_function</code>
<p>

    Create a single testcase of <code class="code">a_test_function</code> with <code class="code">a_test_title</code>
    and <code class="code">an_expected_outcome</code>.
<p>

    Note that this is a "low-level" function and the two convenience
    functions <a href="Utest.html#VALexpect_pass"><code class="code">Utest.expect_pass</code></a> and <a href="Utest.html#VALexpect_fail"><code class="code">Utest.expect_fail</code></a> allow for
    a terser definition of a test.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALexpect_pass"></a>expect_pass : <code class="type">string -> (unit -> bool) -> <a href="Utest.html#TYPEtest">test</a></code></pre><pre><span class="keyword">val</span> <a name="VALexpect_fail"></a>expect_fail : <code class="type">string -> (unit -> bool) -> <a href="Utest.html#TYPEtest">test</a></code></pre><pre><span class="keyword">val</span> <a name="VALexpect_exception"></a>expect_exception : <code class="type">string -> exn -> (unit -> bool) -> <a href="Utest.html#TYPEtest">test</a></code></pre><pre><span class="keyword">exception</span> <a name="EXCEPTIONInconsistentFixture"></a>InconsistentFixture</pre>
<pre><span class="keyword">val</span> <a name="VALeval_with_imperative_fixture"></a>eval_with_imperative_fixture : <code class="type">(unit -> 'a) -> ('a -> <a href="Utest.html#TYPEtest">test</a>) -> ('a -> unit) -> unit -> <a href="Utest.html#TYPEtest">test</a></code></pre><div class="info">
<code class="code">eval_with_imperative_fixture a_setup_function a_test_function a_teardown_function</code>
<p>

    Evaluate <code class="code">a_test_function</code> by passing the result of
    <code class="code">a_setup_function</code>.  After <code class="code">a_test_function</code> completes, pass the
    result of <code class="code">a_setup_function</code> to <code class="code">a_teardown_function</code>.
<p>

    This is for example useful of <code class="code">a_test_function</code> need the handles
    of some open files.  In this case <code class="code">a_setup_function</code> would open
    the files and pass the handle (the fixture).
    <code class="code">a_teardown_function</code> closes the files after <code class="code">a_test_function</code>
    completes.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALeval_with_functional_fixture"></a>eval_with_functional_fixture : <code class="type">(unit -> 'a) -> ('a -> <a href="Utest.html#TYPEtest">test</a>) -> unit -> <a href="Utest.html#TYPEtest">test</a></code></pre><br><code><span class="keyword">type</span> <a name="TYPEverbosity"></a><code class="type"></code>verbosity = </code><table class="typetable">
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">PrintNothing</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Do not print anything</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">PrintFailedTests</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Only print failed tests</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">PrintTestTotals</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Show test totals</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr>
<tr>
<td align="left" valign="top" >
<code><span class="keyword">|</span></code></td>
<td align="left" valign="top" >
<code><span class="constructor">PrintAllTests</span></code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Display each single test</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>


<pre><span class="keyword">val</span> <a name="VALrun_tests"></a>run_tests : <code class="type"><a href="Utest.html#TYPEverbosity">verbosity</a> -> (unit -> <a href="Utest.html#TYPEtest">test</a>) list -> <a href="Utest.html#TYPEtest_results">test_results</a></code></pre><div class="info">
<code class="code">run_tests ~verbose a_list_of_tests</code>
<p>

    Run all tests in <code class="code">a_list_of_tests</code>.  The <code class="code">verbose</code> flag controls
    whether the function prints each test result or just the totals.<br>
</div>
</body></html>