<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="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="OUnit" rel="Chapter" href="OUnit.html"> <link title="OUnit2" rel="Chapter" href="OUnit2.html"> <link title="OUnitThreads" rel="Chapter" href="OUnitThreads.html"> <link title="OUnitUtils" rel="Chapter" href="OUnitUtils.html"> <link title="OUnitPropList" rel="Chapter" href="OUnitPropList.html"> <link title="OUnitPlugin" rel="Chapter" href="OUnitPlugin.html"> <link title="OUnitChooser" rel="Chapter" href="OUnitChooser.html"> <link title="OUnitResultSummary" rel="Chapter" href="OUnitResultSummary.html"> <link title="OUnitLoggerStd" rel="Chapter" href="OUnitLoggerStd.html"> <link title="OUnitLoggerHTML" rel="Chapter" href="OUnitLoggerHTML.html"> <link title="OUnitLoggerHTMLData" rel="Chapter" href="OUnitLoggerHTMLData.html"> <link title="OUnitLoggerJUnit" rel="Chapter" href="OUnitLoggerJUnit.html"> <link title="OUnitAssert" rel="Chapter" href="OUnitAssert.html"> <link title="OUnitBracket" rel="Chapter" href="OUnitBracket.html"> <link title="OUnitTest" rel="Chapter" href="OUnitTest.html"> <link title="OUnitState" rel="Chapter" href="OUnitState.html"> <link title="OUnitRunner" rel="Chapter" href="OUnitRunner.html"> <link title="OUnitRunnerProcesses" rel="Chapter" href="OUnitRunnerProcesses.html"> <link title="OUnitCore" rel="Chapter" href="OUnitCore.html"> <link title="OUnitLogger" rel="Chapter" href="OUnitLogger.html"> <link title="OUnitConf" rel="Chapter" href="OUnitConf.html"> <link title="OUnitShared" rel="Chapter" href="OUnitShared.html"> <link title="OUnitCache" rel="Chapter" href="OUnitCache.html"> <link title="OUnitTestData" rel="Chapter" href="OUnitTestData.html"> <link title="OUnitCheckEnv" rel="Chapter" href="OUnitCheckEnv.html"> <link title="OUnitDiff" rel="Chapter" href="OUnitDiff.html"><title>OUnit user guide : OUnitTest.test_filter</title> </head> <body> <code class="code"><span class="keyword">let</span> test_filter ?(skip=<span class="keyword">false</span>) only test =<br> <span class="keyword">let</span> set_test =<br> <span class="constructor">List</span>.fold_left<br> (<span class="keyword">fun</span> st str <span class="keywordsign">-></span> <span class="constructor">SetTestPath</span>.add str st)<br> <span class="constructor">SetTestPath</span>.empty<br> only<br> <span class="keyword">in</span><br> <span class="keyword">let</span> <span class="keyword">rec</span> filter_test path tst =<br> <span class="keyword">if</span> <span class="constructor">SetTestPath</span>.mem (string_of_path path) set_test <span class="keyword">then</span><br> <span class="keyword">begin</span><br> <span class="constructor">Some</span> tst<br> <span class="keyword">end</span><br> <br> <span class="keyword">else</span><br> <span class="keyword">begin</span><br> <span class="keyword">match</span> tst <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">TestCase</span> (l, f) <span class="keywordsign">-></span><br> <span class="keyword">begin</span><br> <span class="keyword">if</span> skip <span class="keyword">then</span><br> <span class="constructor">Some</span><br> (<span class="constructor">TestCase</span><br> (l, <span class="keyword">fun</span> ctxt <span class="keywordsign">-></span><br> raise (<span class="constructor">Skip</span> <span class="string">"Test disabled"</span>)))<br> <span class="keyword">else</span><br> <span class="constructor">None</span><br> <span class="keyword">end</span><br> <br> <span class="keywordsign">|</span> <span class="constructor">TestList</span> tst_lst <span class="keywordsign">-></span><br> <span class="keyword">begin</span><br> <span class="keyword">let</span> ntst_lst =<br> fold_lefti<br> (<span class="keyword">fun</span> ntst_lst tst i <span class="keywordsign">-></span><br> <span class="keyword">let</span> nntst_lst =<br> <span class="keyword">match</span> filter_test ((<span class="constructor">ListItem</span> i) :: path) tst <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">Some</span> tst <span class="keywordsign">-></span><br> tst :: ntst_lst<br> <span class="keywordsign">|</span> <span class="constructor">None</span> <span class="keywordsign">-></span><br> ntst_lst<br> <span class="keyword">in</span><br> nntst_lst)<br> []<br> tst_lst<br> <span class="keyword">in</span><br> <span class="keyword">if</span> not skip <span class="keywordsign">&&</span> ntst_lst = [] <span class="keyword">then</span><br> <span class="constructor">None</span><br> <span class="keyword">else</span><br> <span class="constructor">Some</span> (<span class="constructor">TestList</span> (<span class="constructor">List</span>.rev ntst_lst))<br> <span class="keyword">end</span><br> <br> <span class="keywordsign">|</span> <span class="constructor">TestLabel</span> (lbl, tst) <span class="keywordsign">-></span><br> <span class="keyword">begin</span><br> <span class="keyword">let</span> ntst_opt =<br> filter_test<br> ((<span class="constructor">Label</span> lbl) :: path)<br> tst<br> <span class="keyword">in</span><br> <span class="keyword">match</span> ntst_opt <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">Some</span> ntst <span class="keywordsign">-></span><br> <span class="constructor">Some</span> (<span class="constructor">TestLabel</span> (lbl, ntst))<br> <span class="keywordsign">|</span> <span class="constructor">None</span> <span class="keywordsign">-></span><br> <span class="keyword">if</span> skip <span class="keyword">then</span><br> <span class="constructor">Some</span> (<span class="constructor">TestLabel</span> (lbl, tst))<br> <span class="keyword">else</span><br> <span class="constructor">None</span><br> <span class="keyword">end</span><br> <span class="keyword">end</span><br> <span class="keyword">in</span><br> filter_test [] test</code></body></html>