<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 : OUnitState.next_test_case</title> </head> <body> <code class="code"><span class="keyword">let</span> <span class="keyword">rec</span> next_test_case conf logger state =<br> <span class="keyword">match</span> state.tests_planned, state.idle_workers <span class="keyword">with</span><br> <span class="keywordsign">|</span> [], _ <span class="keywordsign">-></span><br> <span class="constructor">Finished</span>, state<br> <span class="keywordsign">|</span> _, worker :: tl_workers <span class="keywordsign">-></span><br> <span class="keyword">begin</span><br> <span class="keyword">let</span> choice =<br> state.chooser<br> {<br> <span class="constructor">OUnitChooser</span>.<br> tests_planned = <span class="constructor">List</span>.map fst state.tests_planned;<br> tests_running = <span class="constructor">List</span>.map fst state.tests_running;<br> tests_passed = <span class="constructor">List</span>.map fst state.tests_passed;<br> cache = state.cache;<br> }<br> <span class="keyword">in</span><br> <span class="keyword">match</span> choice <span class="keyword">with</span><br> <span class="keywordsign">|</span> <span class="constructor">Choose</span> test_path <span class="keywordsign">-></span><br> <span class="keyword">begin</span><br> <span class="keyword">try</span><br> <span class="keyword">let</span> test_length, test_fun =<br> <span class="constructor">List</span>.assoc test_path state.tests_planned<br> <span class="keyword">in</span><br> <span class="keyword">let</span> now = <span class="constructor">OUnitUtils</span>.now () <span class="keyword">in</span><br> <span class="constructor">Next_test_case</span> (test_path, test_fun, worker),<br> {state <span class="keyword">with</span><br> tests_running =<br> (test_path,<br> {<br> test_length = test_length;<br> deadline = now +. delay_of_length test_length;<br> next_health_check =<br> now +. state.health_check_interval;<br> worker = worker;<br> }) :: state.tests_running;<br> tests_planned =<br> filter_out test_path state.tests_planned;<br> idle_workers =<br> tl_workers}<br> <span class="keyword">with</span> <span class="constructor">Not_found</span> <span class="keywordsign">-></span><br> <span class="keyword">assert</span> <span class="keyword">false</span><br> <span class="keyword">end</span><br> <br> <span class="keywordsign">|</span> <span class="constructor">ChooseToPostpone</span> <span class="keywordsign">-></span><br> <span class="constructor">Try_again</span>, state<br> <br> <span class="keywordsign">|</span> <span class="constructor">ChooseToSkip</span> path <span class="keywordsign">-></span><br> <span class="keyword">let</span> skipped_result = <span class="constructor">RSkip</span> <span class="string">"Skipped by the chooser."</span> <span class="keyword">in</span><br> <span class="constructor">OUnitLogger</span>.report logger (<span class="constructor">TestEvent</span> (path, <span class="constructor">EStart</span>));<br> <span class="constructor">OUnitLogger</span>.report<br> logger (<span class="constructor">TestEvent</span> (path, <span class="constructor">EResult</span> skipped_result));<br> <span class="constructor">OUnitLogger</span>.report logger (<span class="constructor">TestEvent</span> (path, <span class="constructor">EEnd</span>));<br> next_test_case<br> conf logger<br> (add_test_results conf<br> ((path, skipped_result, <span class="constructor">None</span>), []) state)<br> <br> <span class="keywordsign">|</span> <span class="constructor">NoChoice</span> <span class="keywordsign">-></span><br> <span class="constructor">Finished</span>, state<br> <br> <span class="keyword">end</span><br> <span class="keywordsign">|</span> _, [] <span class="keywordsign">-></span><br> <span class="constructor">Not_enough_worker</span>, state</code></body></html>