Boost logo

Boost-Commit :

From: gennadiy.rozental_at_[hidden]
Date: 2008-07-27 02:50:46


Author: rogeeff
Date: 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
New Revision: 47835
URL: http://svn.boost.org/trac/boost/changeset/47835

Log:
tentative version of docs
Added:
   trunk/libs/test/doc/html/
   trunk/libs/test/doc/html/aknowledgements.html (contents, props changed)
   trunk/libs/test/doc/html/execution-monitor/
   trunk/libs/test/doc/html/execution-monitor.html (contents, props changed)
   trunk/libs/test/doc/html/execution-monitor/compilation.html (contents, props changed)
   trunk/libs/test/doc/html/execution-monitor/reference.html (contents, props changed)
   trunk/libs/test/doc/html/execution-monitor/user-guide.html (contents, props changed)
   trunk/libs/test/doc/html/faq.html (contents, props changed)
   trunk/libs/test/doc/html/index.html (contents, props changed)
   trunk/libs/test/doc/html/intro.html (contents, props changed)
   trunk/libs/test/doc/html/minimal.html (contents, props changed)
   trunk/libs/test/doc/html/open-issues.html (contents, props changed)
   trunk/libs/test/doc/html/prg-exec-monitor/
   trunk/libs/test/doc/html/prg-exec-monitor.html (contents, props changed)
   trunk/libs/test/doc/html/prg-exec-monitor/compilation.html (contents, props changed)
   trunk/libs/test/doc/html/prg-exec-monitor/impl.html (contents, props changed)
   trunk/libs/test/doc/html/tutorials/
   trunk/libs/test/doc/html/tutorials/hello-the-testing-world.html (contents, props changed)
   trunk/libs/test/doc/html/tutorials/intro-in-testing.html (contents, props changed)
   trunk/libs/test/doc/html/tutorials/new-year-resolution.html (contents, props changed)
   trunk/libs/test/doc/html/utf/
   trunk/libs/test/doc/html/utf.html (contents, props changed)
   trunk/libs/test/doc/html/utf/compilation/
   trunk/libs/test/doc/html/utf/compilation.html (contents, props changed)
   trunk/libs/test/doc/html/utf/compilation/auto-linking.html (contents, props changed)
   trunk/libs/test/doc/html/utf/compilation/direct-include.html (contents, props changed)
   trunk/libs/test/doc/html/utf/compilation/standalone.html (contents, props changed)
   trunk/libs/test/doc/html/utf/intro.html (contents, props changed)
   trunk/libs/test/doc/html/utf/testing-tools/
   trunk/libs/test/doc/html/utf/testing-tools.html (contents, props changed)
   trunk/libs/test/doc/html/utf/testing-tools/custom-predicate.html (contents, props changed)
   trunk/libs/test/doc/html/utf/testing-tools/floating_point_comparison.html (contents, props changed)
   trunk/libs/test/doc/html/utf/testing-tools/output-test.html (contents, props changed)
   trunk/libs/test/doc/html/utf/testing-tools/reference.html (contents, props changed)
   trunk/libs/test/doc/html/utf/tutorials.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recomendations/
   trunk/libs/test/doc/html/utf/usage-recomendations.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recomendations/command-line-specific.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recomendations/dot-net-specific.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recomendations/generic.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recommendations/
   trunk/libs/test/doc/html/utf/usage-recommendations.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recommendations/command-line-specific.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recommendations/dot-net-specific.html (contents, props changed)
   trunk/libs/test/doc/html/utf/usage-recommendations/generic.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/
   trunk/libs/test/doc/html/utf/user-guide.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/fixture/
   trunk/libs/test/doc/html/utf/user-guide/fixture.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/fixture/global.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/fixture/model.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/initialization.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/runtime-config/
   trunk/libs/test/doc/html/utf/user-guide/runtime-config.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/runtime-config/reference.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/
   trunk/libs/test/doc/html/utf/user-guide/test-organization.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-nullary-test-case.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/expected-failures.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-nullary-test-case.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-case-template.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/master-test-suite.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/nullary-test-case.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/test-case-template.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/test-suite.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-organization/unary-test-case.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/
   trunk/libs/test/doc/html/utf/user-guide/test-output.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_CHECKPOINT.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_PASSPOINT.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/log-ct-config.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/log-hr-format.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/log-xml-format.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/results-report.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/test-log.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-output/test-progress.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/test-runners.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/
   trunk/libs/test/doc/html/utf/user-guide/usage-variants.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/dynamic-lib-variant.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner-variant.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html (contents, props changed)
   trunk/libs/test/doc/html/utf/user-guide/usage-variants/static-lib-variant.html (contents, props changed)
Text files modified:
   trunk/libs/test/index.html | 4 ++--
   1 files changed, 2 insertions(+), 2 deletions(-)

Added: trunk/libs/test/doc/html/aknowledgements.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/aknowledgements.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="intro.html" title="Introduction">
+<link rel="prev" href="open-issues.html" title="Open issues">
+<link rel="next" href="execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; Introduction<a href="execution-monitor.html">
+ &gt;
+ </a><b>Acknowledgements</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="execution-monitor.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.aknowledgements"></a>Acknowledgements</h3></div></div></div>
+<p>Original Test Library:</p>
+<p class="first-line-indented">
+ Ed Brey, Kevlin Henney, Ullrich Koethe, and Thomas Matelich provided very helpful comments during development.
+ Dave Abrahams, Ed Brey, William Kempf, Jens Maurer, and Wilka suggested numerous improvements during the Formal
+ Review. Jens Maurer was the review manager. Beman Dawes is the developer and maintainer.
+ </p>
+<p>Second incarnation including the Unit Test Framework:</p>
+<p class="first-line-indented">
+ Beman Dawes and Ullrich Koethe started the library. Fernando Cacciola, Jeremy Siek, Beman Dawes, Ullrich Koethe,
+ Dave Abrahams suggested numerous improvements during the Formal Review. Jeremy Siek was the review manager. Beman
+ Dawes was a great help in both final testing and merging library with rest of the boost. Gennadiy Rozental is the
+ developer and maintainer.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="open-issues.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="intro.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="execution-monitor.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/execution-monitor.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/execution-monitor.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Part I. Boost Test Library: The Execution Monitor</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="index.html" title="Boost Test Library">
+<link rel="prev" href="aknowledgements.html" title="Acknowledgements">
+<link rel="next" href="execution-monitor/compilation.html" title="The Execution Monitor compilation variants and procedures">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; <b>The Execution Monitor</b><a href="prg-exec-monitor.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="execution-monitor/compilation.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="execution-monitor"></a>Part I. Boost Test Library: The Execution Monitor</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Compilation</dt>
+<dt>User's guide</dt>
+<dt>Reference</dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title"><a name="execution-monitor.intro"></a></h3></div></div></div>
+<p class="first-line-indented">
+ Sometimes we need to call a function and make sure that no user or system originated exceptions are being thrown
+ by it. Uniform exception reporting is also may be convenient. That's the purpose of the Boost.Test's
+ <em class="firstterm">Execution Monitor</em>.
+ </p>
+<p class="first-line-indented">
+ The Execution Monitor is a lower-level component of the Boost Test Library. It is the base for implementing all
+ other Boost.Test components, but also can be used standalone to get controlled execution of error-prone functions
+ with a uniform error notification. The Execution Monitor calls a user-supplied function in a controlled
+ environment, relieving users from messy error detection.
+ </p>
+<p class="first-line-indented">
+ The Execution Monitor usage is demonstrated in the example exec_mon_example . Additional examples are
+ in <a class="xref" href="prg-exec-monitor.html" title="Part II. Boost Test Library: The Program Execution Monitor">Part II, &#8220;The Program Execution Monitor&#8221;</a> or <a class="xref" href="utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">Part IV, &#8220;The Unit Test Framework&#8221;</a>.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.design"></a>Design Rationale</h4></div></div></div>
+<p class="first-line-indented">
+ The Execution Monitor design assumes that it can be used when no (or almost no) memory available. Also the
+ Execution Monitor is intended to be portable to as many platforms as possible.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aknowledgements.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="execution-monitor/compilation.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/execution-monitor/compilation.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/execution-monitor/compilation.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Execution Monitor compilation variants and procedures</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">
+<link rel="prev" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">
+<link rel="next" href="user-guide.html" title="The Execution Monitor user's guide">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Execution Monitor<a href="../prg-exec-monitor.html">
+ &gt;
+ </a><b>Compilation</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="user-guide.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="execution-monitor.compilation"></a>The Execution Monitor compilation variants and procedures</h3></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.impl"></a>Implementation</h4></div></div></div>
+<p class="first-line-indented">
+ The Execution Monitor is implemented in two modules: one header file and one source file.
+ </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><code class="filename">boost/test/execution_monitor.hpp</code></span></p></td>
+<td>
+ defines abstract execution monitor interfaces and implements execution exception.
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">libs/test/execution_monitor.hpp</span></p></td>
+<td>
+ provides the Execution Monitor implementation for all supported configurations, including Microsoft structured
+ exception based, UNIX signals.
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p class="first-line-indented">
+ You may use this component in both debug and release modes, but in release mode the Execution Monitor won't
+ catch Microsoft C runtime debug events.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.lib-compilation"></a>Standalone library compilation</h4></div></div></div>
+<p class="first-line-indented">
+ To compile the Execution Monitor as standalone library compose it using only
+ <code class="filename">execution-monitor.cpp</code> as a source file. Alternatively you can add this file directly to the
+ list of source files for your project. Boost Test Library's components include this file as a part of their
+ compilation procedure.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.direct-include"></a>Direct include</h4></div></div></div>
+<p class="first-line-indented">
+ In some cases you may want to include the source file along with header file into your sources. But be aware that
+ to be able to catch all kinds of standard exceptions and to implement signal handling logic this file will bring
+ a lot of dependencies.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../execution-monitor.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../execution-monitor.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="user-guide.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/execution-monitor/reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/execution-monitor/reference.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,292 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Execution Monitor reference</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">
+<link rel="prev" href="user-guide.html" title="The Execution Monitor user's guide">
+<link rel="next" href="../prg-exec-monitor.html" title="Part II. Boost Test Library: The Program Execution Monitor">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Execution Monitor<a href="../prg-exec-monitor.html">
+ &gt;
+ </a><b>Reference</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../prg-exec-monitor.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="execution-monitor.reference"></a>The Execution Monitor reference</h3></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="header.boost.test.execution_monitor.hpp"></a>Header &lt;boost/test/execution_monitor.hpp&gt;</h4></div></div></div>
+<pre class="synopsis"><span class="bold"><strong>namespace</strong></span> boost {
+ <span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a>;
+ <span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a>;
+ <span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_aborted" title="Class execution_aborted">execution_aborted</a>;
+ <span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.system_error" title="Class system_error">system_error</a>;
+}</pre>
+<div class="refentry" lang="en">
+<a name="boost.execution_monitor"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class execution_monitor</span></h2>
+<p>boost::execution_monitor &#8212;
+ uniformly detects and reports the occurrence of several types of signals and exceptions, reducing various errors
+ to a uniform <a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a> that is returned to a caller
+ </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a> {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// <a class="link" href="reference.html#boost.execution_monitorconstruct-copy-destruct">construct/copy/destruct</a></em></span>
+ <a class="link" href="reference.html#id270337-bb">execution_monitor</a>();
+
+ <span class="emphasis"><em>// <a class="link" href="reference.html#id270356-bb">execution</a></em></span>
+ <span class="type"><span class="bold"><strong>int</strong></span></span> <a class="link" href="reference.html#id270361-bb">execute</a>(unit_test::callback0&lt;<span class="bold"><strong>int</strong></span>&gt; <span class="bold"><strong>const</strong></span>&amp;);
+
+ <span class="emphasis"><em>// <a class="link" href="reference.html#id270422-bb">registration</a></em></span>
+ <span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Exception, <span class="bold"><strong>typename</strong></span> ExceptionTranslator&gt;
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a class="link" href="reference.html#id270427-bb">register_exception_translator</a>(ExceptionTranslator <span class="bold"><strong>const</strong></span>&amp;,
+ boost::type&lt;Exception&gt;* = 0);
+ <span class="type">unit_test::readwrite_property&lt;<span class="bold"><strong>bool</strong></span>&gt;</span> p_catch_system_errors;
+ <span class="type">unit_test::readwrite_property&lt;<span class="bold"><strong>bool</strong></span>&gt;</span> p_auto_start_dbg;
+ <span class="type">unit_test::readwrite_property&lt;<span class="bold"><strong>int</strong></span>&gt;</span> p_timeout;
+ <span class="type">unit_test::readwrite_property&lt;<span class="bold"><strong>int</strong></span>&gt;</span> p_use_alt_stack;
+ <span class="type">unit_test::readwrite_property&lt;<span class="bold"><strong>bool</strong></span>&gt;</span> p_detect_fp_exceptions;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id587156"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id587160"></a><h3>
+<a name="boost.execution_monitorconstruct-copy-destruct"></a><code class="computeroutput">execution_monitor</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><a name="id270337-bb"></a>execution_monitor();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Nothing.</td>
+</tr>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Constructs <a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a> object.</td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id587233"></a><h3>
+<a name="id270356-bb"></a><code class="computeroutput">execution_monitor</code> execution</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><span class="type"><span class="bold"><strong>int</strong></span></span> <a name="id270361-bb"></a>execute(unit_test::callback0&lt;<span class="bold"><strong>int</strong></span>&gt; <span class="bold"><strong>const</strong></span>&amp; F);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Parameters:</span></p></td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><code class="computeroutput">F</code></span></p></td>
+<td></td>
+</tr></tbody>
+</table></div></td>
+</tr>
+<tr>
+<td><p><span class="term">Returns:</span></p></td>
+<td>Value returned by monitored function F call.</td>
+</tr>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>
+ <a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a> on detected uncaught C++ exception, a hardware or software signal,
+ trap, or other monitored function F premature failure.
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">Notes:</span></p></td>
+<td>method execute doesn't consider it an error for F to return a non-zero value</td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+<div class="refsect2" lang="en">
+<a name="id587350"></a><h3>
+<a name="id270422-bb"></a><code class="computeroutput">execution_monitor</code> registration</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><span class="bold"><strong>template</strong></span>&lt;<span class="bold"><strong>typename</strong></span> Exception, <span class="bold"><strong>typename</strong></span> ExceptionTranslator&gt;
+ <span class="type"><span class="bold"><strong>void</strong></span></span> <a name="id270427-bb"></a>register_exception_translator(ExceptionTranslator <span class="bold"><strong>const</strong></span>&amp; tr,
+ boost::type&lt;Exception&gt;* dummy = 0);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Nothing.</td>
+</tr>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>
+ Registers translator function tr for an exception of type Exception. Translators get chained, so you can
+ register as many as you want. The Exception type needs to be specified explicitly as the member function
+ template argument. The translator function gets called when an exception of type Exception is thrown from
+ within the monitored function. The translator receives a thrown exception object as its first argument.
+ Result value of translator is ignored and no exception is reported if this function exits normally. But you
+ can always rethrow the exception or throw a different one.
+ </td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+</div>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.execution_exception"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class execution_exception</span></h2>
+<p>boost::execution_exception &#8212;
+ uniformly reports monitored function execution problems
+ </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a> {
+<span class="bold"><strong>public</strong></span>:
+ <span class="bold"><strong>enum</strong></span> <a class="link" href="reference.html#boost.execution_exception.error_code" title="Type error_code">error_code</a>;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id630857"></a><h2>Description</h2>
+<p class="first-line-indented">
+ The class execution_exception is an exception used by the Execution Monitor to report problems detected during
+ a monitored function execution. It intentionally does not allocate any memory so as to be safe for use when
+ there is a lack of memory.
+ </p>
+<div class="refentry" lang="en">
+<a name="boost.execution_exception.error_code"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Type error_code</span></h2>
+<p>boost::execution_exception::error_code</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>enum</strong></span> error_code { no_error, user_error, cpp_exception_error, system_error,
+ timeout_error, user_fatal_error, system_fatal_error };</pre></div>
+<div class="refsect1" lang="en">
+<a name="id630905"></a><h2>Description</h2>
+<p class="first-line-indented">
+ These values are sometimes used as program return codes. The particular values have been chosen to avoid
+ conflicts with commonly used program return codes: values &lt; 100 are often user assigned, values &gt; 255 are
+ sometimes used to report system errors. Gaps in values allow for orderly expansion.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Only uncaught C++ exceptions are treated as errors. If the application catches a C++ exception, it will never
+ reach the <a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a>.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The system errors include <acronym class="acronym">UNIX</acronym> signals and Windows structured exceptions. They are often
+ initiated by hardware traps.
+ </p></td></tr>
+</table></div>
+<p class="first-line-indented">
+ The implementation decides what a fatal_system_exception is and what is just a system_exception. Fatal errors
+ are so likely to have corrupted machine state (like a stack overflow or addressing exception) that it is
+ unreasonable to continue execution.
+ </p>
+</div>
+</div>
+</div>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.execution_aborted"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class execution_aborted</span></h2>
+<p>boost::execution_aborted &#8212;
+ This is a trivial default constructible class. Use it to report graceful abortion of a monitored function
+ execution.
+ </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.execution_aborted" title="Class execution_aborted">execution_aborted</a> {
+};</pre></div>
+</div>
+<div class="refentry" lang="en">
+<a name="boost.system_error"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Class system_error</span></h2>
+<p>boost::system_error &#8212;
+ This is a default constructible class. Use it to report failure in system call invocation.
+ </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis">
+<span class="bold"><strong>class</strong></span> <a class="link" href="reference.html#boost.system_error" title="Class system_error">system_error</a> {
+<span class="bold"><strong>public</strong></span>:
+ <span class="emphasis"><em>// <a class="link" href="reference.html#boost.system_errorconstruct-copy-destruct">construct/copy/destruct</a></em></span>
+ <a class="link" href="reference.html#id270669-bb">system_error</a>();
+ <span class="type">unit_test::readonly_property&lt;<span class="bold"><strong>long</strong></span>&gt;</span> p_errno;
+};</pre></div>
+<div class="refsect1" lang="en">
+<a name="id630949"></a><h2>Description</h2>
+<div class="refsect2" lang="en">
+<a name="id630953"></a><h3>
+<a name="boost.system_errorconstruct-copy-destruct"></a><code class="computeroutput">system_error</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol type="1"><li>
+<pre class="literallayout"><a name="id270669-bb"></a>system_error();</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">Throws:</span></p></td>
+<td>Nothing.</td>
+</tr>
+<tr>
+<td><p><span class="term">Effects:</span></p></td>
+<td>Constructs <a class="link" href="reference.html#boost.system_error" title="Class system_error">system_error</a> object.</td>
+</tr>
+</tbody>
+</table></div>
+</li></ol></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="user-guide.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../execution-monitor.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../prg-exec-monitor.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/execution-monitor/user-guide.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/execution-monitor/user-guide.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,164 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Execution Monitor user's guide</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">
+<link rel="prev" href="compilation.html" title="The Execution Monitor compilation variants and procedures">
+<link rel="next" href="reference.html" title="The Execution Monitor reference">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Execution Monitor<a href="../prg-exec-monitor.html">
+ &gt;
+ </a><b>User's guide</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="reference.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="execution-monitor.user-guide"></a>The Execution Monitor user's guide</h3></div></div></div>
+<p class="first-line-indented">
+ The Execution Monitor is designed to solve the problem of executing potentially dangerous function that may result
+ in any number of error conditions, in monitored environment that should prevent any undesirable exceptions to
+ propagate out of function call and produce consistent result report for all
+ <a class="link" href="user-guide.html#execution-monitor.user-guide.monitor-outcomes" title="Monitored function execution">outcomes</a>. The Execution Monitor is able to
+ produce informative report for all standard C++ exceptions and intrinsic types. All other exceptions are reported as
+ unknown. If you prefer different message for your exception class or need to perform any action, the Execution
+ Monitor supports <a class="link" href="user-guide.html#execution-monitor.user-guide.errors-reporting" title="Errors reporting and translation">custom exception translators</a>.
+ There are several other <a class="link" href="user-guide.html#execution-monitor.user-guide.monitor-params" title="The execution monitor parameters">parameters</a> of the
+ monitored environment can be configured by setting appropriate properties of the Execution Monitor.
+ </p>
+<p class="first-line-indented">
+ All symbols in the Execution Monitor implementation are located in the namespace boost. To use the Execution
+ Monitor you need to:
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ #include &lt;boost/test/execution_monitor.hpp&gt;
+ </li>
+<li>Make an instance of <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code>
+</li>
+<li>
+ Optionally register custom exception translators for exception classes which require special processing.
+ </li>
+</ol></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.user-guide.monitor-outcomes"></a>Monitored function execution</h4></div></div></div>
+<p class="first-line-indented">
+ To start the monitored function, invoke the method <code class="computeroutput"><a class="link" href="reference.html#id270361-bb">execution_monitor::execute</a></code> and pass
+ the monitored function as an argument. If the call succeeds, the method returns the result code produced by the
+ monitored function. If any of the following conditions occur:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>Uncaught C++ exception.</li>
+<li>Hardware or software signal, trap, or other exception.</li>
+<li>Timeout reached.</li>
+<li>Debug assert event occurred (under Microsoft Visual C++ or compatible compiler).</li>
+</ul></div>
+<p>
+ then the method throws the <code class="computeroutput"><a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a></code>. The exception contains unique
+ <code class="computeroutput">error_code</code> value identifying the error condition and the detailed message that can be used to report
+ the error.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.user-guide.monitor-params"></a>The execution monitor parameters</h4></div></div></div>
+<p class="first-line-indented">
+ All parameters are implemented as public read-write properties of class <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code>.
+ </p>
+<p class="first-line-indented">
+ The <em class="firstterm">p_catch_system_errors</em> property is a boolean flag (default value is true) specifying whether
+ or not <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> should trap system level exceptions (second category in above list).
+ Set this property to false, for example, if you wish to force coredump file creation. The Unit Test Framework
+ provides a runtime parameter --catch_system_errors=yes to alter the behavior in monitored test cases.
+ </p>
+<p class="first-line-indented">
+ The <em class="firstterm">p_auto_start_dbg</em> property is a boolean flag (default value is false) specifying whether or
+ not <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> should try to attach debugger in case system error is caught.
+ </p>
+<p class="first-line-indented">
+ The <em class="firstterm">p_timeout property</em> is an integer timeout (in seconds) for monitored function execution. Use
+ this parameter to monitor code with possible deadlocks or indefinite loops. This feature is only available for some
+ operating systems (not yet Microsoft Windows).
+ </p>
+<p class="first-line-indented">
+ The <em class="firstterm">p_use_alt_stack</em> property is a boolean flag (default value is false) specifying whether or
+ not <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> should use an alternative stack for the
+ <code class="computeroutput">sigaction</code> based signal catching. When enabled the signals are delivered to the
+ <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> on a stack different from current execution stack, which is safer in case
+ if it is corrupted by monitored function. For more details on alternative stack handling see appropriate
+ manuals.
+ </p>
+<p class="first-line-indented">
+ The <em class="firstterm">p_detect_fp_exceptions</em> property is a boolean flag (default value is false) specifying
+ whether or not <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> should install hardware traps for the floating point
+ exception on platforms where it's supported.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.user-guide.errors-reporting"></a>Errors reporting and translation</h4></div></div></div>
+<p class="first-line-indented">
+ If you need to report an error inside monitored function execution you have to throw an exception. Do not use the
+ <code class="computeroutput"><a class="link" href="reference.html#boost.execution_exception" title="Class execution_exception">execution_exception</a></code> - it's not intended to be used for this purpose. The simplest choice is
+ to use one of the following C++ types as an exception:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>C string.</li>
+<li>std:string.</li>
+<li>any exception class in std::exception hierarchy.</li>
+</ul></div>
+<p class="first-line-indented">
+ In case if you prefer to use your own exception classes or can't govern what exceptions are generated by monitored
+ function and would like to see proper error message in a report, the Execution Monitor allows you to register the
+ translator for any exception class. You can register as many independent translators as you like. See
+ <code class="computeroutput"><a class="link" href="reference.html#boost.execution_monitor" title="Class execution_monitor">execution_monitor</a></code> specification for requirements on translator function. Also see below
+ for usage example.
+ </p>
+<p class="first-line-indented">
+ Finally, if you need to abort the monitored function execution without reporting any errors, you can throw an
+ exception <code class="computeroutput"><a class="link" href="reference.html#boost.execution_aborted" title="Class execution_aborted">execution_aborted</a></code>. As a result the execution is aborted and zero result code
+ is produced by the method <code class="computeroutput"><a class="link" href="reference.html#id270361-bb">execution_monitor::execute</a></code>.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="execution-monitor.user-guide.mem-leaks-detection"></a>Memory leaks detection</h4></div></div></div>
+<p class="first-line-indented">
+ The Execution Monitor provides a limited ability to detect memory leaks during program execution, and to
+ break program execution on specific memory allocation order-number (1 - first allocation of memory in program, 2 -
+ second and so on). Unfortunately this feature is, at the moment, implemented only for the Microsoft family of
+ compilers (and Intel, if it employs Microsoft C Runtime Library). Also it can not be tuned per instance of the
+ monitor and is only triggered globally and reported after the whole program execution is done. In a future this
+ ought to be improved. An interface is composed from two free functions residing in namespace boost:
+ </p>
+<pre class="programlisting">void detect_memory_leaks( bool on_off );
+void break_memory_alloc( long mem_alloc_order_num );</pre>
+<p class="first-line-indented">
+ Use function detect_memory_leaks to switch memory leaks detection on/off. Use break_memory_alloc to break a
+ program execution at allocation specified by mem_alloc_order_num argument. The Unit Test Framework
+ provides a runtime parameter (--detect_memory_leak=yes or no) allowing you to manage this feature during monitored
+ unit tests.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compilation.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../execution-monitor.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/faq.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/faq.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,230 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Frequently Asked Questions</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="intro.html" title="Introduction">
+<link rel="prev" href="intro.html" title="Introduction">
+<link rel="next" href="open-issues.html" title="Open issues">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; Introduction<a href="execution-monitor.html">
+ &gt;
+ </a><b>FAQ</b><a href="intro.html#btl.portability">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="open-issues.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.faq"></a>Frequently Asked Questions</h3></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="faq.html#id641632">
+ Where the latest version of the Boost Test Library is located?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641658">
+ I found a bug. Where can I report it?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641686">
+ I have a request for a new feature. Where can I ask for it?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641714">
+ How to create test case using the Unit Test Framework?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641746">
+ How to create test suite using the Unit Test Framework?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641781">
+ Why did I get a linker error when compiling my test program?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641857">
+ How can I redirect testing output?
+ </a>
+</dt>
+<dt> <a href="faq.html#id641893">
+ I want different default log trace level
+ </a>
+</dt>
+<dt> <a href="faq.html#id641929">
+ Is there DLL version of Boost.Test components available on Win32 platform?
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641632"></a><a name="id641634"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Where the latest version of the Boost Test Library is located?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ The latest version of Boost Test Library is available online at http://www.boost.org/libs/test
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641658"></a><a name="id641660"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ I found a bug. Where can I report it?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ You can send a bug report to the boost users' mailing list and/or directly to
+ <a href="mailto:boost-test%20-at-%20emailacocunt%20-dot-%20com" target="_top">Gennadiy Rozental</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641686"></a><a name="id641688"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ I have a request for a new feature. Where can I ask for it?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ You can send a request to the boost developers' mailing list and/or directly to
+ <a href="mailto:boost-test%20-at-%20emailacocunt%20-dot-%20com" target="_top">Gennadiy Rozental</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641714"></a><a name="id641716"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ How to create test case using the Unit Test Framework?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ To create a test case use the macro BOOST_AUTO_TEST_CASE( test_function ). For more details see the Unit Test Framework
+ <a class="link" href="utf/user-guide/test-organization/auto-nullary-test-case.html" title="Nullary function based test case with automated registration">documentation</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641746"></a><a name="id641748"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ How to create test suite using the Unit Test Framework?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ To create a test suite use the macro BOOST_AUTO_TEST_SUITE( suite_name ). For more details see the Unit Test Framework
+ <a class="link" href="utf/user-guide/test-organization/auto-test-suite.html" title="Test suites with automated registration">documentation</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641781"></a><a name="id641783"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Why did I get a linker error when compiling my test program?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ Boost Test Library components provide several usage variants: to create a test program you can
+ link with the one of the precompiled library variants or use single-header variant. For example, to use Unit Test
+ Framework you may either include the &lt;boost/test/unit_test.hpp&gt;
+ and link with libunit_test_framework.lib or you can include &lt;boost/test/included/unit_test.hpp&gt;
+ , in which case you should not need to link with any precompiled component. Note also that
+ you should strictly follow specification on initialization function in other case some compilers may produce linker
+ error like this.
+ </p>
+<code class="computeroutput">Unresolved external init_unit_test_suite(int, char**).</code><p class="first-line-indented">
+ The reason for this error is that in your implementation you should specify second argument of
+ init_unit_test_suite exactly as in the specification, i.e.: char* [].
+ </p>
+</td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641857"></a><a name="id641859"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ How can I redirect testing output?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ Use unit_test_log::instance().set_log_output( std::ostream&amp; ). For more details see the Unit Test Framework
+ <a class="link" href="utf/user-guide/test-output/log-ct-config.html#utf.user-guide.test-output.log.ct-config.output-stream" title="Log output stream redirection">documentation</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641893"></a><a name="id641895"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ I want different default log trace level
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ Use environment variable BOOST_TEST_LOG_LEVEL to define desired log trace level. You still will be able to reset
+ this value from the command line. For the list of acceptable values see the Unit Test Framework
+ <a class="link" href="utf/user-guide/runtime-config/reference.html#utf.user-guide.runtime-config.parameters">documentation</a>.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id641929"></a><a name="id641931"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Is there DLL version of Boost.Test components available on Win32 platform?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ Yes. Starting with Boost 1.34.0.
+ </p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="intro.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="open-issues.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/index.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,162 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost Test Library</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="next" href="intro.html" title="Introduction">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"></td>
+<td><div class="spirit-nav">Next</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="btl"></a>Boost Test Library</h2></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">Gennadiy</span> <span class="surname">Rozental</span>
+</h3>
+<code class="email">&lt;<a class="email" href="mailto:boost-test%20=at=%20emailaccount%20=dot=%20com">boost-test =at= emailaccount =dot= com</a>&gt;</code>
+</div></div>
+<div><p class="copyright">Copyright © 2001-2007 Gennadiy Rozental</p></div>
+<div><div class="legalnotice">
+<a name="id586245"></a><p>
+ Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at
+ http://www.boost.org/LICENSE_1_0.txt )
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Introduction</dt>
+<dl>
+<dt>FAQ</dt>
+<dt>Open issues</dt>
+<dt>Acknowledgements</dt>
+</dl>
+<dt>I. The Execution Monitor
+</dt>
+<dl>
+<dt>Compilation</dt>
+<dt>User's guide</dt>
+<dt>Reference</dt>
+</dl>
+<dt>II. The Program Execution Monitor
+</dt>
+<dl>
+<dt>Implementation</dt>
+<dt>Compilation</dt>
+</dl>
+<dt>III. Minimal testing facility
+</dt>
+<dt>IV. The Unit Test Framework
+</dt>
+<dl>
+<dt>Introduction</dt>
+<dt>Tutorials</dt>
+<dl>
+<dt>Introduction into testing</dt>
+<dt>Hello the testing world</dt>
+<dt>Boost.Test driven development</dt>
+</dl>
+<dt>Compilation</dt>
+<dl>
+<dt>Standalone library compilation</dt>
+<dt>Auto-linking support</dt>
+<dt>Direct include</dt>
+</dl>
+<dt>User's guide</dt>
+<dl>
+<dt>Usage variants</dt>
+<dl>
+<dt>Static library</dt>
+<dt>Dynamic library</dt>
+<dt>Single header</dt>
+<dt>External test runner</dt>
+</dl>
+<dt>Supplied test runners</dt>
+<dl><dt>External test runner</dt></dl>
+<dt>Test module initialization</dt>
+<dt>Test organization</dt>
+<dl>
+<dt>Nullary function based test case</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Unary function based test case</dt>
+<dt>Test case template</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Test suite</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+<dt>Master Test Suite</dt>
+</dl>
+<dt>Expected failures specification</dt>
+</dl>
+<dt>Fixtures</dt>
+<dl>
+<dt>Generic model</dt>
+<dt>Per test case</dt>
+<dt>Test suite shared</dt>
+<dt>Global fixture</dt>
+</dl>
+<dt>Test Output </dt>
+<dl>
+<dt>Test log</dt>
+<dl>
+<dt>BOOST_TEST_MESSAGE</dt>
+<dt>BOOST_TEST_CHECKPOINT</dt>
+<dt>BOOST_TEST_PASSPOINT</dt>
+<dt>Logging floating point type numbers</dt>
+<dt>Human readable format</dt>
+<dt>XML based log output format</dt>
+<dt>Compile time configuration</dt>
+</dl>
+<dt>Test report output</dt>
+<dt>Progress display</dt>
+</dl>
+<dt>Runtime configuration </dt>
+<dl>
+<dt>Run by name</dt>
+<dt>Parameters reference</dt>
+</dl>
+</dl>
+<dt>Testing tools</dt>
+<dl>
+<dt>Output testing tool</dt>
+<dt>Custom predicate support</dt>
+<dt>Floating-point comparison algorithms</dt>
+<dt>Reference</dt>
+</dl>
+<dt>Usage recommendations</dt>
+<dl>
+<dt>Generic</dt>
+<dt>Microsoft Visual Studio .NET users specific</dt>
+<dt>Command-line (non-GUI) users specific</dt>
+</dl>
+</dl>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="intro.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/intro.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/intro.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="index.html" title="Boost Test Library">
+<link rel="prev" href="index.html" title="Boost Test Library">
+<link rel="next" href="faq.html" title="Frequently Asked Questions">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; <b>Introduction</b><a href="execution-monitor.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="faq.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="btl.intro"></a>Introduction</h2></div></div></div>
+<div class="epigraph">
+<p>Test everything that could possibly break</p>
+<div class="attribution"><span>--<span class="attribution">XP maxim</span></span></div>
+</div>
+<p class="first-line-indented">
+ The Boost Test Library provides a matched set of components for writing test programs, organizing tests in to
+ simple test cases and test suites, and controlling their runtime execution. The Program Execution Monitor is also
+ useful in some production (non-test) environments.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.about-docs"></a>About this documentation</h3></div></div></div>
+<p class="first-line-indented">
+ This documentation is <span class="bold"><strong>not</strong></span> intended to be read though from the beginning to the end by
+ a novice user. You can do that if you are interested in detailed bottom-up description of all Boost.Test components.
+ Otherwise you are better off jumping directly to the subject of your interest. For example, if you are interested in
+ unit testing framework you may go directly <a class="link" href="utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">there</a>, but for novice users I recommend to
+ start from simple <a class="link" href="utf/tutorials.html" title="The unit test framework tutorials">tutorials</a>. Looking for quick help - check
+ <a class="link" href="faq.html" title="Frequently Asked Questions">FAQ</a> section for resolution to many popular issues you may be faced with. Most pages
+ should link you directly to the terms that you need to understand it. For help with compilation see compilation
+ sections of an appropriate component.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.release-notes"></a>Release notes</h3></div></div></div>
+<p class="first-line-indented">
+ For more details see complete release notes.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.portability"></a>Portability</h3></div></div></div>
+<p class="first-line-indented">
+ Because the Boost Test Library is critical for porting and testing Boost libraries, it has been written to be
+ conservative in its use of C++ features, and to keep dependencies to a bare minimum.
+ </p>
+<p class="first-line-indented">
+ Boost.Test supports all main Boost compilers and platforms. Confirmation of its status on core and additional
+ platforms/compilers can be seen by viewing Boost.Test's own internal regression test results on
+ release status page or
+ trunk status page
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="index.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/minimal.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/minimal.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,197 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Part III. Boost Test Library: The minimal testing facility</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="index.html" title="Boost Test Library">
+<link rel="prev" href="prg-exec-monitor/compilation.html" title="The Program Execution Monitor compilation">
+<link rel="next" href="utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; <b>Minimal testing facility</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="utf.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="minimal"></a>Part III. Boost Test Library: The minimal testing facility</h1></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="minimal.intro"></a>Introduction</h3></div></div></div>
+<p class="first-line-indented">
+ <em class="firstterm">Boost.Test minimal testing facility</em> provides the functionality previously implemented by the
+ original version of Boost.Test. As the name suggest, it provides only minimal basic facilities for test creation. It
+ have no configuration parameters (either command line arguments or environment variables) and it supplies
+ a limited set of <a class="link" href="minimal.html#minimal.tools" title="Provided testing tools">testing tools</a> which behaves similarly to ones defined amount
+ the Unit Test Framework <a class="link" href="utf/testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">Testing tools</a>. The minimal testing facility supplies its own function
+ main() (so can not be used for multi unit testing) and will execute the test program in a monitored environment.
+ </p>
+<p class="first-line-indented">
+ As it follows from the name this component provides only minimal set of the testing capabilities and as a general
+ rule the Unit Test Framework should be preferred. In a majority of the cases it provides you with much wider set of
+ testing tools (and other goods), while still being as easy to set up.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="minimal.usage"></a>Usage</h3></div></div></div>
+<p class="first-line-indented">
+ The only change (other then including <a href="../../../../boost/test/minimal.hpp" target="_top">
+ <code class="filename">boost/test/minimal.hpp</code></a>) you need to make, to integrate your test module with minimal testing facility is
+ the signature of your function main(). It should look like this:
+ </p>
+<pre class="programlisting">int test_main( int argc, char* argv[] )
+{
+ ...
+}</pre>
+<p class="first-line-indented">
+ Once you apply the change test automatically starts running in monitored environment. Also you can start using
+ <a class="link" href="minimal.html#minimal.tools" title="Provided testing tools">testing tools</a> provided by the minimal testing facility and get uniform errors reporting.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="minimal.example"></a>Example</h3></div></div></div>
+<p class="first-line-indented">
+ Following example illustrates different approaches you can employ to detect and report errors using different
+ testing tools
+ </p>
+<div class="example">
+<a name="minimal.example.example27"></a><p class="title"><b>Example 4. Minimal testing facility application</b></p>
+<div class="example-contents">
+<div class="programlistingco">
+<pre class="programlisting">#include &lt;boost/test/minimal.hpp&gt;
+
+//____________________________________________________________________________//
+
+int add( int i, int j ) { return i+j; }
+
+//____________________________________________________________________________//
+
+int test_main( int, char *[] ) // note the name!
+{
+ // six ways to detect and report the same error:
+ BOOST_CHECK( add( 2,2 ) == 4 ); // #1 continues on error
+ BOOST_REQUIRE( add( 2,2 ) == 4 ); // #2 throws on error
+ if( add( 2,2 ) != 4 )
+ BOOST_ERROR( "Ouch..." ); // #3 continues on error
+ if( add( 2,2 ) != 4 )
+ BOOST_FAIL( "Ouch..." ); // #4 throws on error
+ if( add( 2,2 ) != 4 ) throw "Oops..."; // #5 throws on error
+
+ return add( 2, 2 ) == 4 ? 0 : 1; // #6 returns error code
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show annotations</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<div class="example-annot" id="example27-annot"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-1"></a>(1)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_CHECK tool, which displays an error message on std::cout that includes the
+ expression that failed, the source file name, and the source file line number. It also increments the error count.
+ At program termination, the error count will be displayed automatically by the minimal testing facility.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-2"></a>(2)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach using the BOOST_REQUIRE tool, is similar to #1, except that after displaying the error, an
+ exception is thrown, to be caught by the minimal testing facility. This approach is suitable when writing an explicit test program,
+ and the error would be so severe as to make further testing impractical. BOOST_REQUIRE differs from the C++
+ Standard Library's assert() macro in that it is always generated, and channels error detection into the uniform
+ reporting procedure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-3"></a>(3)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach is similar to #1, except that the error detection is coded separately. This is most useful when
+ the specific condition being tested is not indicative of the reason for failure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-4"></a>(4)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach is similar to #2, except that the error detection is coded separately. This is most useful when
+ the specific condition being tested is not indicative of the reason for failure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-5"></a>(5)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach throws an exception, which will be caught and reported by the minimal testing facility. This approach is suitable
+ for both production and test code, in libraries or not. The error message displayed when the exception is
+ caught will be most meaningful if the exception is derived from <code class="computeroutput">std::exception </code>, or is a
+ char* or <code class="computeroutput">std::string</code>.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet18.ann-6"></a>(6)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_CHECK_MESSAGE tool, is similar to approach #1, except that similar to the approach #3
+ displays an alternative error message specified as a second argument.
+ </p></td>
+</tr>
+</table></div>
+</div>
+<pre class="example-output" id="example27-output">
+**** no errors detected
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="minimal.tools"></a>Provided testing tools</h3></div></div></div>
+<p class="first-line-indented">
+ The minimal testing facility supplies following four tools:
+ </p>
+<pre class="inline-synopsis">
+BOOST_CHECK(<span class="emphasis"><em>predicate</em></span>)
+BOOST_REQUIRE(<span class="emphasis"><em>predicate</em></span>)
+BOOST_ERROR(<span class="emphasis"><em>message</em></span>)
+BOOST_FAIL(<span class="emphasis"><em>message</em></span>)</pre>
+<p class="first-line-indented">
+ Their behavior is modeled after the <a class="link" href="utf/testing-tools/reference.html" title="The UTF testing tools reference">similarly named tools</a>
+ implemented by the Unit Test Framework.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="minimal.impl"></a>Implementation</h3></div></div></div>
+<p class="first-line-indented">
+ The minimal testing facility is implemented inline in one header <a href="../../../../boost/test/minimal.hpp" target="_top">
+ <code class="filename">boost/test/minimal.hpp</code></a>. There are no special compilation instructions for this component.
+ </p>
+<p class="first-line-indented">
+ There is a single unit test program that validates minimal testing facility functionality: minimal_test
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="prg-exec-monitor/compilation.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="utf.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/open-issues.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/open-issues.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Open issues</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="intro.html" title="Introduction">
+<link rel="prev" href="faq.html" title="Frequently Asked Questions">
+<link rel="next" href="aknowledgements.html" title="Acknowledgements">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; Introduction<a href="execution-monitor.html">
+ &gt;
+ </a><b>Open issues</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="aknowledgements.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="btl.open-issues"></a>Open issues</h3></div></div></div>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>Finish update for the command line arguments support</li>
+<li>Selective test cases run by name</li>
+<li>
+ Boost.Test thread safety need to be achieved at least if BOOST_TEST_THREAD_SAFE is defined. This one will require
+ separate discussion
+ </li>
+<li>
+ Some performance testing tools (aka profiler). Unless somebody else will come up with something like this
+ </li>
+<li>
+ Build info feature needs to be updated: there are at least two different "build infos": library build and test
+ module build
+ </li>
+<li>More tutorial documentation.</li>
+<li>
+ Projects that could be very interesting, but I may not be able to do it by myself:
+ <div class="itemizedlist"><ul type="circle">
+<li>An add-on for Visual Studio to automate test case/ test modules generation</li>
+<li>Set of Python and/or Perl scripts to automate test case/test modules generation from command line</li>
+</ul></div>
+ </li>
+<li>Memory usage test tools.</li>
+<li>Time-out implementation on Win32 platform.</li>
+<li>Make output_test_stream match like diff do</li>
+<li>Better Unicode support (reports and log in wostream)</li>
+<li>Support for custom test case dependency/condition</li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faq.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="intro.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="aknowledgements.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/prg-exec-monitor.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/prg-exec-monitor.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,250 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Part II. Boost Test Library: The Program Execution Monitor</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="index.html" title="Boost Test Library">
+<link rel="prev" href="execution-monitor/reference.html" title="The Execution Monitor reference">
+<link rel="next" href="prg-exec-monitor/impl.html" title="The Program Execution Monitor implementation">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; <b>The Program Execution Monitor</b><a href="minimal.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="prg-exec-monitor/impl.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="pem"></a>Part II. Boost Test Library: The Program Execution Monitor</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Implementation</dt>
+<dt>Compilation</dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="pem.intro"></a>Introduction</h3></div></div></div>
+<p class="first-line-indented">
+ The components of a C++ program may report user-detected errors in several ways, such as via a return value or
+ throwing an exception. System-detected errors such as dereferencing an invalid pointer are reported in other ways,
+ totally operating system and compiler dependent.
+ </p>
+<p class="first-line-indented">
+ Yet many C++ programs, both production and test, must run in an environment where uniform reporting of errors is
+ necessary. For example, converting otherwise uncaught exceptions to non-zero program return codes allows many
+ command line, script, or batch environments to continue processing in a controlled manner. Even some
+ <acronym class="acronym">GUI</acronym> environments benefit from the unification of errors into program return codes.
+ </p>
+<p class="first-line-indented">
+ <em class="firstterm">The Boost Test Library's Program Execution Monitor</em> relieves users from messy error
+ detection and reporting duties by providing a replacement function main() which calls a user-supplied cpp_main()
+ function within a monitored environment. The supplied main() then uniformly detects and reports the occurrence of
+ several types of errors, reducing them to a uniform return code which is returned to the host environment.
+ </p>
+<p class="first-line-indented">
+ Uniform error reporting is particularly useful for programs running unattended under control of scripts or batch
+ files. Some operating systems pop up message boxes if an uncaught exception occurs, and this requires manual
+ intervention. By converting such exceptions into non-zero program return codes, the library makes the program a
+ better citizen. More uniform reporting of errors isn't a benefit to some programs, particularly programs always
+ run by hand of a knowledgeable person. So the Program Execution Monitor wouldn't be worth using in that environment.
+ </p>
+<p class="first-line-indented">
+ Uniform error reporting can be also useful in test environments such as the Boost regression tests. Be aware though
+ in such case it might be preferable to use the <a class="link" href="utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">Unit Test Framework</a>, cause it allows one
+ to use the <a class="link" href="utf/testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">Testing tools</a> and generate more detailed error information.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="pem.usage"></a>Usage</h3></div></div></div>
+<p class="first-line-indented">
+ To facilitate uniform error reporting the Program Execution Monitor supplies function main() as part if it's implementation. To use the
+ Program Execution Monitor instead of regular function main your program is required to supply a function cpp_main() with same signature.
+ </p>
+<p class="first-line-indented">
+ Here is the traditional Hello World program implemented using the Program Execution Monitor:
+ </p>
+<div class="example">
+<a name="pem.usage.example24"></a><p class="title"><b>Example 1. The Program Execution Monitor: Hello World</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;iostream&gt;
+#include &lt;boost/test/included/prg_exec_monitor.hpp&gt;
+
+//____________________________________________________________________________//
+
+int cpp_main( int, char* [] ) // note name cpp_main, not main.
+{
+ std::cout &lt;&lt; "Hello, world\n";
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example24-output">Hello, world
+
+no errors detected</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ It really is that simple - just change the name of your initial function from main() to cpp_main(). Do make sure
+ the argc and argv parameters are specified (although you don't have to name them if you don't use them).
+ </p>
+<p class="first-line-indented">
+ The Program Execution Monitor treats as errors:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>Exceptions thrown from cpp_main().</li>
+<li>Non-zero return from cpp_main().</li>
+</ul></div>
+<p class="first-line-indented">
+ So what if some function had thrown a runtime_error with the message "big trouble" and it's not trapped by any
+ catch clause? Like in a following example:
+ </p>
+<div class="example">
+<a name="pem.usage.example25"></a><p class="title"><b>Example 2. The Program Execution Monitor: standard exception detection</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;stdexcept&gt;
+#include &lt;boost/test/included/prg_exec_monitor.hpp&gt;
+
+//____________________________________________________________________________//
+
+int foo() { throw std::runtime_exception( "big trouble" ); }
+
+//____________________________________________________________________________//
+
+int cpp_main( int, char* [] ) // note the name
+{
+ foo();
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example25-output">**** exception(205): std::runtime_error: big trouble
+******** errors detected; see standard output for details ********</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ Note that in both examples above we used single-header variant of the Program Execution Monitor. Alternatively we can build and link with
+ standalone library. In case of static library we are not required to include any Program Execution Monitor related headers. To use dynamic
+ library you are required to include
+ boost/test/prg_exec_monitor.hpp
+ and define <a class="xref" href="prg-exec-monitor/compilation.html#pem.flag.dyn-link">BOOST_TEST_DYN_LINK</a> during program compilation. The same
+ header is required if you want to employ <a class="link" href="prg-exec-monitor/compilation.html#pem.compilation.auto-linking" title="Support of the auto-linking feature">auto-linking</a> feature.
+ </p>
+<p class="first-line-indented">
+ Let's consider an example where function cpp_main() had bubbled up a return code of 5:
+ </p>
+<div class="example">
+<a name="pem.usage.example26"></a><p class="title"><b>Example 3. The Program Execution Monitor: error return code detection</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/prg_exec_monitor.hpp&gt; // this header is optional
+
+//____________________________________________________________________________//
+
+int cpp_main( int, char* [] ) // note the name
+{
+ return 5;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example26-output">**** error return code: 5
+******** errors detected; see standard output for details ********</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ The Program Execution Monitor reports errors to both cout (details) and cerr (summary). Primary detailed error
+ messages appear on standard output stream so that it is properly interlaced with other output, thus aiding error
+ analysis. While the final error notification message appears on standard error stream. This increases the
+ visibility of error notification if standard output and error streams are directed to different devices or files.
+ </p>
+<p class="first-line-indented">
+ The Program Execution Monitor's supplied main() will return following result codes:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>boost::exit_success - no errors</li>
+<li>boost::exit_failure - non-zero and non-boost::exit_success return code from cpp_main().</li>
+<li>boost::exit_exception_failure - cpp_main() throw an exception.</li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="pem.config"></a>Configuration</h3></div></div></div>
+<p class="first-line-indented">
+ There are two aspects of the Program Execution Monitor behavior that you can customize at runtime. Customization is performed using
+ environment variables.
+ </p>
+<div class="table">
+<a name="pem.config.flags"></a><p class="title"><b>Table 1. The Program Execution Monitor configuration environment variables</b></p>
+<div class="table-contents"><table class="table" summary="The Program Execution Monitor configuration environment variables">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Flag</th>
+<th>Usage</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>BOOST_TEST_CATCH_SYSTEM_ERRORS</td>
+<td>
+ allows customizing behavior of the Program Execution Monitor in regards of catching system errors. For more details about the
+ meaning of this option see the <a class="link" href="execution-monitor/reference.html#boost.execution_monitor" title="Class execution_monitor">Execution Monitor</a>. If you
+ want to prevent the Program Execution Monitor from catching system exception, set the value of this
+ variable to "no". The default value is "yes".
+ </td>
+</tr>
+<tr>
+<td>BOOST_PRG_MON_CONFIRM</td>
+<td>
+ allows avoiding success confirmation message. Some users prefer to see a confirmation message in case if program
+ successfully executed. While others don't like the clutter or any output is prohibited by organization standards.
+ To avoid the message set the value of this variable to "no". The default value is "yes".
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="execution-monitor/reference.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="prg-exec-monitor/impl.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/prg-exec-monitor/compilation.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/prg-exec-monitor/compilation.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,164 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Program Execution Monitor compilation</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../prg-exec-monitor.html" title="Part II. Boost Test Library: The Program Execution Monitor">
+<link rel="prev" href="impl.html" title="The Program Execution Monitor implementation">
+<link rel="next" href="../minimal.html" title="Part III. Boost Test Library: The minimal testing facility">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Program Execution Monitor<a href="../minimal.html">
+ &gt;
+ </a><b>Compilation</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../minimal.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="pem.compilation"></a>The Program Execution Monitor compilation</h3></div></div></div>
+<p class="first-line-indented">
+ In comparison with many other boost libraries, which are completely implemented in header files, compilation and
+ linking with the Program Execution Monitor may require additional steps. The Program Execution Monitor presents you with options to either
+ <a class="link" href="compilation.html#pem.compilation.standalone" title="Standalone library compilation">built and link with a standalone library</a> or
+ <a class="link" href="compilation.html#pem.compilation.direct-include" title="Including the Program Execution Monitor directly into your program">include the implementation directly</a> into your
+ program. If you opt to use the library the Program Execution Monitor header implements the
+ <a class="link" href="compilation.html#pem.compilation.auto-linking" title="Support of the auto-linking feature">auto-linking support</a> and following flags can be used to configure
+ compilation of the Program Execution Monitor library and your program:
+ </p>
+<div class="table">
+<a name="pem.compilation.flags"></a><p class="title"><b>Table 2. Program Execution Monitor compilation flags</b></p>
+<div class="table-contents"><table class="table" summary="Program Execution Monitor compilation flags">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Variable</th>
+<th>Usage</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+<a name="pem.flag.dyn-link"></a>BOOST_TEST_DYN_LINK</td>
+<td>Define this flag to build/use dynamic library.</td>
+</tr>
+<tr>
+<td>
+<a name="pem.flag.no-lib"></a>BOOST_TEST_NO_LIB</td>
+<td>Define this flag to prevent auto-linking.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="pem.compilation.standalone"></a>Standalone library compilation</h4></div></div></div>
+<p class="first-line-indented">
+ If you opted to link your program with the standalone library, you need to build it first. To build a standalone
+ library all C++ files (.cpp), that constitute Program Execution Monitor <a class="link" href="impl.html" title="The Program Execution Monitor implementation">implementation</a> need to be
+ listed as source files in your makefile<sup>[<a name="id642858" href="#ftn.id642858" class="footnote">1</a>]</sup>.
+ </p>
+<p class="first-line-indented">
+ The makefile for use with Boost.Build system is supplied in <code class="filename">libs/test/build</code>
+ directory. The Program Execution Monitor can be built as either <a class="link" href="compilation.html#pem.compilation.standalone.static" title="Static library compilation">static</a>
+ or <a class="link" href="compilation.html#pem.compilation.standalone.dynamic" title="Dynamic library compilation">dynamic</a> library.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="pem.compilation.standalone.static"></a>Static library compilation</h5></div></div></div>
+<p class="first-line-indented">
+ There are no additional build defines or options required to build static library. Using Boost.Build system you
+ can build the static library with a following command from libs/test/build directory:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">bjam</code> [-sTOOLS=&lt;your-tool-name&gt;] {-sBUILD=boost_prg_exec_monitor}</p></div>
+<p class="first-line-indented">
+ Also on Windows you can use the Microsoft Visual Studio .NET project file provided.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="pem.compilation.standalone.dynamic"></a>Dynamic library compilation</h5></div></div></div>
+<p class="first-line-indented">
+ To build the dynamic library<sup>[<a name="id643007" href="#ftn.id643007" class="footnote">2</a>]</sup> you
+ need to add <a class="xref" href="compilation.html#pem.flag.dyn-link">BOOST_TEST_DYN_LINK</a> to the list of macro definitions in the
+ makefile. Using the Boost.Build system you can build the dynamic library with the following command from
+ <code class="filename">libs/test/build</code> directory:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">bjam</code> [-sTOOLS=&lt;your-tool-name&gt;] {-sBUILD=boost_prg_exec_monitor}</p></div>
+<p class="first-line-indented">
+ Also on Windows you can use the Microsoft Visual Studio .NET project file provided.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ For your program to successfully link with the dynamic library the flag
+ <a class="xref" href="compilation.html#pem.flag.dyn-link">BOOST_TEST_DYN_LINK</a> needs to be defined both during dynamic library
+ build and during your program compilation.
+ </p></td></tr>
+</table></div>
+</div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="pem.compilation.auto-linking"></a>Support of the auto-linking feature</h4></div></div></div>
+<p class="first-line-indented">
+ For the Microsoft family of compilers the Program Execution Monitor provides an ability to automatically select proper library name
+ and add it to the list of objects to be linked with. To employ this feature you required to include either header
+ boost/test/prg_exec_monitor.hpp
+ or header
+ boost/test/included/prg_exec_monitor.hpp
+ By default the feature is going to be enabled. To disable it you have to define the flag
+ <a class="xref" href="compilation.html#pem.flag.no-lib">BOOST_TEST_NO_LIB</a>.
+ </p>
+<p class="first-line-indented">
+ For more details on the auto-linking feature implementation and configuration you should consult the
+ appropriate documentation.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="pem.compilation.direct-include"></a>Including the Program Execution Monitor directly into your program</h4></div></div></div>
+<p class="first-line-indented">
+ If you prefer to avoid the standalone library compilation you have two alternative usage variants: you can either
+ include all files that constitute the static library in your program's makefile or include them as a part of
+ your program's source file. To facilitate the later variant the Program Execution Monitor implementation presents the header
+ boost/test/included/prg_exec_monitor.hpp
+ In both variants neither <a class="xref" href="compilation.html#pem.flag.dyn-link">BOOST_TEST_DYN_LINK</a> nor
+ <a class="xref" href="compilation.html#pem.flag.no-lib">BOOST_TEST_NO_LIB</a> are applicable. This solution may not be the best choice
+ in a long run, since it requires the Program Execution Monitor sources recompilation for every program you use it with.
+ </p>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id642858" href="#id642858" class="simpara">1</a>] </sup>There are varieties of make systems that can be used. To name
+ a few: <acronym class="acronym">GNU</acronym> make (and other make clones) and build systems integrated into <acronym class="acronym">IDE</acronym>s
+ (for example Microsoft Visual Studio). The Boost preferred solution is Boost.Build system that is based on top of
+ bjam tool. Make systems require some kind of configuration file that lists all files that constitute the library
+ and all build options. For example the makefile that is used by make, or the Microsoft Visual Studio project file,
+ Jamfile is used by Boost.Build. For the sake of simplicity let's call this file the makefile.</p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id643007" href="#id643007" class="simpara">2</a>] </sup>What is meant by the term dynamic library is a <em class="firstterm">dynamically
+ loaded library</em>, alternatively called a <em class="firstterm">shared library</em>.</p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="impl.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../prg-exec-monitor.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../minimal.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/prg-exec-monitor/impl.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/prg-exec-monitor/impl.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Program Execution Monitor implementation</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../prg-exec-monitor.html" title="Part II. Boost Test Library: The Program Execution Monitor">
+<link rel="prev" href="../prg-exec-monitor.html" title="Part II. Boost Test Library: The Program Execution Monitor">
+<link rel="next" href="compilation.html" title="The Program Execution Monitor compilation">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Program Execution Monitor<a href="../minimal.html">
+ &gt;
+ </a><b>Implementation</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="compilation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="pem.impl"></a>The Program Execution Monitor implementation</h3></div></div></div>
+<p class="first-line-indented">
+ To monitor execution of user supplied function cpp_main() the Program Execution Monitor relies on the Boost.Test's
+ <a class="link" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">Execution Monitor</a>. Also the Program Execution Monitor supplies the function main() to facilitate
+ uniform error reporting. Following files constitute the Program Execution Monitor implementation:
+ </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">libs/test/execution_monitor.cpp</span></p></td>
+<td>
+ provides <a class="link" href="../execution-monitor.html" title="Part I. Boost Test Library: The Execution Monitor">Execution Monitor</a> implementation for all supported
+ configurations.
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">libs/test/cpp_main.cpp</span></p></td>
+<td>supplies function main() for static library build</td>
+</tr>
+<tr>
+<td><p><span class="term">boost/test/included/prg_exec_monitor.hpp</span></p></td>
+<td>combines all implementation files into single header to be use as inlined version of component</td>
+</tr>
+<tr>
+<td><p><span class="term">boost/test/prg_exec_monitor.hpp</span></p></td>
+<td>
+ contains definitions for main() function for dynamic library build and pragmas for auto-linking feature support.
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p class="first-line-indented">
+ The Program Execution Monitor implementation wraps several system headers and is intended to be used as standalone library. While there
+ exist an alternative variant to <a class="link" href="compilation.html#pem.compilation.direct-include" title="Including the Program Execution Monitor directly into your program">include the whole implementation
+ directly</a> into your program, for the long term usage the preferable solution is to
+ <a class="link" href="compilation.html#pem.compilation.standalone" title="Standalone library compilation">build library once</a> and reuse it.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../prg-exec-monitor.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../prg-exec-monitor.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="compilation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/tutorials/hello-the-testing-world.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/tutorials/hello-the-testing-world.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,191 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Hello the testing world or beginner's introduction into testing using the Unit Test Framework</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf/tutorials.html" title="The unit test framework tutorials">
+<link rel="prev" href="intro-in-testing.html" title="Introduction into testing or why testing is worth the effort">
+<link rel="next" href="new-year-resolution.html" title='Boost.Test driven development or "getting started" for TDD followers'>
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Tutorials<a href="../utf/compilation.html">
+ &gt;
+ </a><b>Hello the testing world</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="new-year-resolution.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tutorial.hello-the-testing-world"></a>Hello the testing world or beginner's introduction into testing using the Unit Test Framework</h4></div></div></div>
+<p class="first-line-indented">
+ How should a test program report errors? Displaying an error message is an obvious possibility:
+ </p>
+<pre class="programlisting">if( something_bad_detected )
+ std::cout &lt;&lt; "something bad has been detected" &lt;&lt; std::endl;</pre>
+<p class="first-line-indented">
+ But that requires inspection of the program's output after each run to determine if an error occurred. Since test
+ programs are often run as part of a regression test suite, human inspection of output to detect error messages is
+ time consuming and unreliable. Test frameworks like GNU/expect can do the inspections automatically, but are
+ overly complex for simple testing.
+ </p>
+<p class="first-line-indented">
+ A better simple way to report errors is for the test program to return EXIT_SUCCESS (normally 0) if the test program
+ completes satisfactorily, and EXIT_FAILURE if an error is detected. This allows a simple regression test script to
+ automatically and unambiguous detect success or failure. Further appropriate actions such as creating an HTML table
+ or emailing an alert can be taken by the script, and can be modified as desired without having to change the actual
+ C++ test programs.
+ </p>
+<p class="first-line-indented">
+ A testing protocol based on a policy of test programs returning EXIT_SUCCESS or EXIT_FAILURE does not require any
+ supporting tools; the C++ language and standard library are sufficient. The programmer must remember, however, to
+ catch all exceptions and convert them to program exits with non-zero return codes. The programmer must also remember
+ to not use the standard library assert() macro for test code, because on some systems it results in undesirable side
+ effects like a message requiring manual intervention.
+ </p>
+<p class="first-line-indented">
+ The Boost Test Library's Unit Test Framework is designed to automate those tasks. The library supplied main()
+ relieves users from messy error detection and reporting duties. Users could use supplied testing tools to perform
+ complex validation tasks. Let's take a look on the following simple test program:
+ </p>
+<pre class="programlisting">#include &lt;my_class.hpp&gt;
+
+int main( int, char* [] )
+{
+ my_class test_object( "qwerty" );
+
+ return test_object.is_valid() ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+</pre>
+<p class="first-line-indented">
+ There are several issues with above test.
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>You need to convert is_valid result in proper result code.</li>
+<li>Would exception happen in test_object construction of method is_valid invocation, the program will crash.</li>
+<li>You won't see any output, would you run this test manually.</li>
+</ol></div>
+<p class="first-line-indented">
+ The Unit Test Framework solves all these issues. To integrate with it above program needs to be changed to:
+ </p>
+<pre class="programlisting">#include &lt;my_class.hpp&gt;
+#define BOOST_TEST_MODULE MyTest
+#include &lt;boost/test/unit_test.hpp&gt;
+
+BOOST_AUTO_TEST_CASE( my_test )
+{
+ my_class test_object( "qwerty" );
+
+ BOOST_CHECK( test_object.is_valid() );
+}
+</pre>
+<p class="first-line-indented">
+ Now, you not only receive uniform result code, even in case of exception, but also nicely formatted output from
+ BOOST_CHECK tool, would you choose to see it. Is there any other ways to perform checks? The following example test
+ program shows several different ways to detect and report an error in the add() function.
+ </p>
+<div class="programlistingco">
+<pre class="programlisting">#define BOOST_TEST_MODULE MyTest
+#include &lt;boost/test/unit_test.hpp&gt;
+
+int add( int i, int j ) { return i+j; }
+
+BOOST_AUTO_TEST_CASE( my_test )
+{
+ // seven ways to detect and report the same error:
+ BOOST_CHECK( add( 2,2 ) == 4 ); // #1 continues on error
+
+ BOOST_REQUIRE( add( 2,2 ) == 4 ); // #2 throws on error
+
+ if( add( 2,2 ) != 4 )
+ BOOST_ERROR( "Ouch..." ); // #3 continues on error
+
+ if( add( 2,2 ) != 4 )
+ BOOST_FAIL( "Ouch..." ); // #4 throws on error
+
+ if( add( 2,2 ) != 4 ) throw "Ouch..."; // #5 throws on error
+
+ BOOST_CHECK_MESSAGE( add( 2,2 ) == 4, // #6 continues on error
+ "add(..) result: " &lt;&lt; add( 2,2 ) );
+
+ BOOST_CHECK_EQUAL( add( 2,2 ), 4 ); // #7 continues on error
+}
+</pre>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-1"></a>(1)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_CHECK tool, which displays an error message (by default on std::cout) that includes
+ the expression that failed, the source file name, and the source file line number. It also increments the error
+ count. At program termination, the error count will be displayed automatically by the Unit Test Framework.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-2"></a>(2)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_REQUIRE tool, is similar to approach #1, except that after displaying the error,
+ an exception is thrown, to be caught by the Unit Test Framework. This approach is suitable when writing an
+ explicit test program, and the error would be so severe as to make further testing impractical. BOOST_REQUIRE
+ differs from the C++ Standard Library's assert() macro in that it is always generated, and channels error
+ detection into the uniform Unit Test Framework reporting procedure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-3"></a>(3)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach is similar to approach #1, except that the error detection and error reporting are coded separately.
+ This is most useful when the specific condition being tested requires several independent statements and/or is
+ not indicative of the reason for failure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-4"></a>(4)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach is similar to approach #2, except that the error detection and error reporting are coded separately.
+ This is most useful when the specific condition being tested requires several independent statements and/or is
+ not indicative of the reason for failure.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-5"></a>(5)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach throws an exception, which will be caught and reported by the Unit Test Framework. The error
+ message displayed when the exception is caught will be most meaningful if the exception is derived from
+ std::exception, or is a char* or std::string.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-6"></a>(6)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_CHECK_MESSAGE tool, is similar to approach #1, except that similar to the approach #3
+ displays an alternative error message specified as a second argument.
+ </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="snippet12.ann-7"></a>(7)</p></td>
+<td valign="top" align="left"><p class="first-line-indented">
+ This approach uses the BOOST_CHECK_EQUAL tool and functionally is similar to approach #1. This approach is most
+ attractive for checking equality of two variables, since in case of error it shows mismatched values.
+ </p></td>
+</tr>
+</table></div>
+</div>
+<p></p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro-in-testing.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf/tutorials.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="new-year-resolution.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/tutorials/intro-in-testing.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/tutorials/intro-in-testing.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,215 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction into testing or why testing is worth the effort</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf/tutorials.html" title="The unit test framework tutorials">
+<link rel="prev" href="../utf/tutorials.html" title="The unit test framework tutorials">
+<link rel="next" href="hello-the-testing-world.html" title="Hello the testing world or beginner's introduction into testing using the Unit Test Framework">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Tutorials<a href="../utf/compilation.html">
+ &gt;
+ </a><b>Introduction into testing</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="hello-the-testing-world.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div>
+<div><h4 class="title">
+<a name="tutorial.intro-in-testing"></a>Introduction into testing or why testing is worth the effort</h4></div>
+<div><div class="author">
+<h3 class="author">
+<span class="firstname">John</span> <span class="othername">R</span> <span class="surname">Phillips</span>
+</h3>
+<code class="email">&lt;<a class="email" href="mailto:jphillip%20at%20capital%20dot%20edu%20(please%20unobscure)">jphillip at capital dot edu (please unobscure)</a>&gt;</code>
+</div></div>
+<div><p class="copyright">Copyright © 2006 John R. Phillips</p></div>
+<div><div class="legalnotice">
+<a name="id644286"></a><p>
+ Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file
+ <code class="filename">LICENSE_1_0.txt</code> or copy at
+ http://www.boost.org/LICENSE_1_0.txt )
+ </p>
+</div></div>
+</div></div>
+<p class="first-line-indented">
+ For almost everyone, the first introduction to the craft of programming is a version of the simple "Hello World" program. In C++, this first example might be written as
+ </p>
+<pre class="programlisting">#include &lt;ostream&gt;
+
+int main()
+{
+ std::cout &lt;&lt; "Hello World\n";
+}
+</pre>
+<p class="first-line-indented">
+ This is a good introduction for several reasons. One is that the program is short enough, and the logic of its
+ execution simple enough that direct inspection can show whether it is correct in all use cases known to the new
+ student programmer. If this were the complexity of all programming, there would be no need to test anything before
+ using it. In programming as a new student experiences it, testing is pointless and adds unneeded complexity.
+ </p>
+<p class="first-line-indented">
+ However, no actual programs are as simple as an introductory lesson makes "Hello World" seem. Not even "Hello World".
+ In all real programs, there are decisions to be made and multiple paths of execution based on these decisions. These
+ decisions could be based on user input, streaming data, resource availability and dozens of other factors. The
+ programmer strives to control the inputs, and results of these decisions, but no one can keep all of them clearly
+ in mind once the size of the project exceeds just a few hundred lines. Even "Hello World" hides complexities of
+ this sort in the simple seeming call to std::cout.
+ </p>
+<p class="first-line-indented">
+ Since the individual programmer can no longer determine the correctness of the program, there is a need for a
+ different approach. An obvious possibility is testing the program after construction. Someone develops a set of
+ test cases, where inputs are given to the program such that the behavior and outputs of a correctly performing
+ program are known. The performance of the new program is compared to known standards and the new program either
+ passes or fails. If it fails, attempts are made to fix it. If the test cases are carefully chosen, the specifics of
+ the failure give an indication of what in the program needs to be fixed.
+ </p>
+<p class="first-line-indented">
+ This is an improvement over just not knowing whether the program is working properly, but it isn't a big improvement.
+ If the whole program is tested at once, it is nearly impossible to develop test cases that clearly indicate what
+ the failure is. The system is too complex, and the programmer still needs to understand almost all of the possible
+ outcomes to be able to develop tests. As always, when a problem is too big and complicated a good idea is to try
+ splitting it into smaller and simpler pieces.
+ </p>
+<p class="first-line-indented">
+ This approach leads to a layered system of testing, that is similar to the layered approach to original development
+ and should be integrated into it. When writing a program, the design is factored into small units that are
+ conceptually and structurally easier to grasp. A standard rule for this is that one unit performs one job or
+ embodies one concept. These simple units are composed into larger and more complicated algorithms by passing needed
+ information into a unit and receiving the desired result out of it. The units are integrated to perform the whole
+ task. Testing should reflect this structure of development.
+ </p>
+<p class="first-line-indented">
+ The simplest layer is Unit Testing. A unit is the smallest conceptually whole segment of the program. Examples of
+ basic units might be a single class or a single function. For each unit, the tester (who may or may not be the
+ programmer) attempts to determine what states the unit can encounter while executing as part of the program. These
+ states include determining the range of appropriate inputs to the unit, determining the range of possible
+ inappropriate inputs, and recognizing any ways the state of the rest of the program might affect execution in this
+ unit.
+ </p>
+<p class="first-line-indented">
+ With so many general statements, an example will help clarify. Imagine the following procedural function is part of
+ a program, and the programmer wants to test it. For the sake of brevity, header includes and namespace qualifiers
+ have been suppressed.
+ </p>
+<pre class="programlisting">double find_root( double (*f)(double),
+ double low_guess,
+ double high_guess,
+ std::vector&lt;double&gt;&amp; steps,
+ double tolerance )
+{
+ double solution;
+ bool converged = false;
+
+ while(not converged)
+ {
+ double temp = (low_guess + high_guess) / 2.0;
+ steps.push_back( temp );
+
+ double f_temp = f(temp);
+ double f_low = f(low_guess);
+
+ if(abs(f_temp) &lt; tolerance)
+ {
+ solution = temp;
+ converged = true;
+ }
+ else if(f_temp / abs(f_temp) == f_low / abs(f_low))
+ {
+ low_guess = temp;
+ converged = false;
+ }
+ else
+ {
+ high_guess = temp;
+ converged = false;
+ }
+ }
+
+ return solution;
+}
+</pre>
+<p class="first-line-indented">
+ This code, although brief and simple is getting long enough that it takes attention to find what is done and why.
+ It is no longer obvious at a glance what the intent of the program is, so careful naming must be used to carry that
+ intent.
+ </p>
+<p class="first-line-indented">
+ Thanks to the control structures, there are some obvious execution paths in the code. However, there are also a few
+ less obvious paths. For example, if the root finder takes many steps to converge to an acceptable answer, the
+ vector that is holding the history of steps taken may need to reallocate for additional space. In this case, there
+ are many hidden steps in the single push_back command. These steps also include the chance of failure, since that
+ is always a possibility in a memory allocation.
+ </p>
+<p class="first-line-indented">
+ A second example notes that the value of the function at the low guess has not been tested, so there is the chance
+ of a zero division. Also, if the value of the function at the high guess is zero, the root finder will miss that
+ root entirely. It may even fall into an infinite loop if no root lies between the low and high values.
+ </p>
+<p class="first-line-indented">
+ In this unit, proper testing includes checking the behavior in each possibility. It also includes checking the
+ function by giving inputs where the correct answer is known and checking the results against that answer. Thus,
+ the unit is tested in every execution path to assure proper behavior.
+ </p>
+<p class="first-line-indented">
+ Test cases are chosen to expose as many errors as possible. A defining characteristic of a good test case is that
+ the programmer knows what the unit should do if it is functioning properly. Test cases should be generated to
+ exercise each available execution path. For the above snippet, this includes the obvious and the not so obvious
+ paths. Every path should be tested, since every path is a possible outcome of program execution.
+ </p>
+<p class="first-line-indented">
+ Thus, to write a good testing suite, the tester must know the structure of the code. The most dependable way to
+ accomplish this is if the original programmer writes tests as part of creating the code. In fact, it is advisable
+ that the tests are produced before the code is written, and updated whenever structure decisions are changed. This
+ way, the tests are written with a view toward how the unit should perform instead of reproducing the programmer's
+ thinking from writing the code. While black box testing is also useful, it is important that someone who knows the
+ design decisions made and the rationale for those decisions test the code unit. A programmer who can't devise
+ good tests for a unit does not yet know the problem at hand well enough to program dependably.
+ </p>
+<p class="first-line-indented">
+ When a unit is completed and tested, it is ready for integration with other units in the program. This is
+ integration should also be tested. At this point, the test cases focus on the interaction between the units. Tests
+ are designed to exercise each way the units can affect each other.
+ </p>
+<p class="first-line-indented">
+ This is the point in development where proper unit testing really shines. If each unit is doing what it should be
+ doing and not creating unexpected side effects, any issues in testing a set of integrated units must come from how
+ they are passing information. Thus, the nearly intractable problem of finding an error while many units interact
+ becomes the less intimidating problem of finding the breakdown in communications.
+ </p>
+<p class="first-line-indented">
+ At each layer of increasing complexity, new tests are run, and if the prior tests of the components are well
+ designed and all issues are fixed, new errors are isolated to the integration. This process continues, in parallel
+ with development, from the smallest units to the completed program.
+ </p>
+<p class="first-line-indented">
+ This shows that there is a need to be able to check and test code snippets such as individual functions and classes
+ independent the program of which they will become a part. That is, the need for a means to provide predetermined
+ inputs to the unit to check the outputs against expected results. Such a system must allow for both normal
+ operation and error conditions, allow the programmer to produce a thorough description of the results.
+ </p>
+<p class="first-line-indented">
+ This is the goal and rationale for all unit testing, and supporting testing of this sort is the purpose of the
+ Boost.Test library. As is shown below, Boost.Test provides a well-integrated set of tools to support this testing
+ effort throughout the programming and maintenance cycles of software development.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../utf/tutorials.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf/tutorials.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="hello-the-testing-world.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/tutorials/new-year-resolution.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/tutorials/new-year-resolution.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,206 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.Test driven development or "getting started" for TDD followers</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf/tutorials.html" title="The unit test framework tutorials">
+<link rel="prev" href="hello-the-testing-world.html" title="Hello the testing world or beginner's introduction into testing using the Unit Test Framework">
+<link rel="next" href="../utf/compilation.html" title="The UTF compilation variants and procedures">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Tutorials<a href="../utf/compilation.html">
+ &gt;
+ </a><b>Boost.Test driven development</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../utf/compilation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tutorial.new-year-resolution"></a>Boost.Test driven development or "getting started" for TDD followers</h4></div></div></div>
+<p class="first-line-indented">
+ Today is a momentous day - first day of new year. Today I am going to start a new life. I am going to stop eating a
+ greasy food, start attending a fitness club and today I am going to test programs I am writing. I can start
+ right after the last line of a program is completed or, even better, I can write tests while I am coding. And maybe
+ next time I will write tests before the coding, during the design stage. I have read a lot of literature on how to
+ write the tests, I have the unit test framework in hand and an idea of new class. So let's get started.
+ </p>
+<p class="first-line-indented">
+ Let say I want to encapsulate an unchangeable C character buffer with a length into the simple class
+ <code class="computeroutput">const_string</code>. Rationale: a string class that does not allocate a memory and provide a convenient
+ read-only access to the preallocated character buffer. I will probably want <code class="computeroutput">const_string</code> to have an
+ interface similar to the class std::string. What will I do first? In my new life I will start with writing a test
+ module for future class <code class="computeroutput">const_string</code>. It will look like this:
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE const_string test
+#include &lt;boost/test/unit_test.hpp&gt;
+
+// EOF
+</pre>
+<p class="first-line-indented">
+ Now I can compile it and link with the unit test framework. Done! I have a working test program. It is empty, so
+ when I run the program it produces following output:
+ </p>
+<pre class="screen">*** No errors detected</pre>
+<p class="first-line-indented">
+ Well, now it could be a good time to start a work on <code class="computeroutput">const_string</code>. First thing I imagine would be good
+ to have is a constructors and trivial access methods. So my class initial version looks like this:
+ </p>
+<p>const_string.hpp:</p>
+<pre class="programlisting">class const_string {
+public:
+ // Constructors
+ const_string();
+ const_string( std::string const&amp; s )
+ const_string( char const* s );
+ const_string( char const* s, size_t length );
+ const_string( char const* begin, char const* end );
+
+ // Access methods
+ char const* data() const;
+ size_t length() const;
+ bool is_empty() const;
+
+ ...
+};
+</pre>
+<p class="first-line-indented">
+ Now I am able to write a first test case - constructors testing - and add it to a test suite. My test program became
+ to look like this:
+ </p>
+<p>const_string_test.cpp:</p>
+<pre class="programlisting">#define BOOST_TEST_MODULE const_string test
+#include &lt;boost/test/unit_test.hpp&gt;
+
+BOOST_AUTO_EST_CASE( constructors_test )
+{
+ const_string cs0( "" ); // 1 //
+ BOOST_CHECK_EQUAL( cs0.length(), (size_t)0 );
+ BOOST_CHECK( cs0.is_empty() );
+
+ const_string cs01( NULL ); // 2 //
+ BOOST_CHECK_EQUAL( cs01.length(), (size_t)0 );
+ BOOST_CHECK( cs01.is_empty() );
+
+ const_string cs1( "test_string" ); // 3 //
+ BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 );
+ BOOST_CHECK_EQUAL( cs1.length(), std::strlen("test_string") );
+
+ std::string s( "test_string" ); // 4 //
+ const_string cs2( s );
+ BOOST_CHECK_EQUAL( std::strcmp( cs2.data(), "test_string" ), 0 );
+
+ const_string cs3( cs1 ); // 5 //
+ BOOST_CHECK_EQUAL( std::strcmp( cs1.data(), "test_string" ), 0 );
+
+ const_string cs4( "test_string", 4 ); // 6 //
+ BOOST_CHECK_EQUAL( std::strncmp( cs4.data(), "test", cs4.length() ), 0 );
+
+ const_string cs5( s.data(), s.data() + s.length() ); // 7 //
+ BOOST_CHECK_EQUAL( std::strncmp( cs5.data(), "test_string", cs5.length() ), 0 );
+
+ const_string cs_array[] = { "str1", "str2" }; // 8 //
+ BOOST_CHECK_EQUAL( cs_array[0], "str1" );
+ BOOST_CHECK_EQUAL( cs_array[1], "str2" );
+}
+
+// EOF
+</pre>
+<p class="first-line-indented">
+ The constructors_test test case is intended to check a simple feature of the class <code class="computeroutput">const_string</code>: an
+ ability to construct itself properly based on different arguments. To test this feature I am using such
+ characteristics of constructed object as a data it contains and a length. The specification of the class
+ <code class="computeroutput">const_string</code> does not contain any expected failures, so, though the constructor can fail if I would
+ pass a pointer to an invalid memory, error check control is not performed (can't require what was not promised
+ :-)). But for any valid input it should work. So I am trying to check a construction for an empty string (1), a NULL
+ string (2) a regular C string(3), an STL string(4), a copy construction(5) and so on. Well, after fixing all the
+ errors in the implementation (do you write programs without errors from scratch?) I am able to pass this test case
+ and the unit test framework gives me the following report:
+ </p>
+<pre class="screen">Running 1 test case
+
+*** No errors detected</pre>
+<p class="first-line-indented">
+ Encouraged I am moving on and adding more access methods:
+ </p>
+<p>const_string.hpp:</p>
+<pre class="programlisting">class const_string {
+public:
+ ...
+ char operator[]( size_t index ) const;
+ char at( size_t index ) const;
+ ...
+};
+</pre>
+<p class="first-line-indented">
+ I added the new feature - I need a new test case to check it. As a result my test suite became to look like this:
+ </p>
+<p>const_string_test.cpp:</p>
+<pre class="programlisting">#define BOOST_TEST_MODULE const_string test
+#include &lt;boost/test/unit_test.hpp&gt;
+
+BOOST_AUTO_EST_CASE( constructors_test )
+{
+ ...
+}
+
+BOOST_AUTO_EST_CASE( data_access_test )
+{
+ const_string cs1( "test_string" ); // 1 //
+ BOOST_CHECK_EQUAL( cs1[(size_t)0], 't' );
+ BOOST_CHECK_EQUAL( cs1[(size_t)4], '_' );
+ BOOST_CHECK_EQUAL( cs1[cs1.length()-1], 'g' );
+
+ BOOST_CHECK_EQUAL( cs1[(size_t)0], cs1.at( 0 ) ); // 2 //
+ BOOST_CHECK_EQUAL( cs1[(size_t)2], cs1.at( 5 ) );
+ BOOST_CHECK_EQUAL( cs1.at( cs1.length() - 1 ), 'g' );
+
+ BOOST_CHECK_THROW( cs1.at( cs1.length() ), std::out_of_range ); // 3 //
+}
+
+// EOF
+</pre>
+<p class="first-line-indented">
+ In the data_access_test test case I am trying to check the class <code class="computeroutput">const_string</code> character access
+ correctness. While tests (1) checks valid access using <code class="computeroutput">const_string</code>::operator[] and test (2) checks
+ valid access using method <code class="computeroutput">const_string</code>::at(), there is one more thing to test. The specification of the
+ method <code class="computeroutput">const_string</code>::at() contains validation for the out of bound access. That was test (3) is
+ intended to do: check that the validation is working. A testing of a validation and error handling code is an
+ important part of a unit testing and should not be left for a production stage. The data_access_test test case
+ passed and I am ready for the next step.
+ </p>
+<p class="first-line-indented">
+ Continuing my effort I am able to complete class <code class="computeroutput">const_string</code> (see
+ Listing 1) and testing module for it (see
+ Listing 2) that is checking all features that are presented
+ in the class <code class="computeroutput">const_string</code> specification.
+ </p>
+<p class="first-line-indented">
+ Well, I am step closer to fulfilling my new year resolution (we should see about this fitness club sometime next
+ ). What about you? Your testing habits could be a little different. You could start with a class/library
+ development and then at some point start writing test cases on feature basis. Or you can, given a detailed
+ specification for the future product, including expected interfaces, immediately start with writing all test cases
+ (or it could be a different person, while you working on implementation at the same time). In any case you should not
+ have any problems to use facilities provided by the Boost.Test unit test framework and, let me hope, be able to
+ write a stable, bulletproof code. And what is even more important is your confidence in an ability to make changes
+ of any complexity without involving a lengthy regression testing of your whole product. Your test module and the
+ unit test framework will stay behind your back to help you with any occasional errors.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="hello-the-testing-world.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf/tutorials.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../utf/compilation.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Part IV. Boost Test Library: The Unit Test Framework</title>
+<link rel="stylesheet" href="../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="index.html" title="Boost Test Library">
+<link rel="up" href="index.html" title="Boost Test Library">
+<link rel="prev" href="minimal.html" title="Part III. Boost Test Library: The minimal testing facility">
+<link rel="next" href="utf/intro.html" title="Introduction">
+<script language="JavaScript1.2" src="../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; <b>The Unit Test Framework</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="utf/intro.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="utf"></a>Part IV. Boost Test Library: The Unit Test Framework</h1></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Introduction</dt>
+<dt>Tutorials</dt>
+<dl>
+<dt>Introduction into testing</dt>
+<dt>Hello the testing world</dt>
+<dt>Boost.Test driven development</dt>
+</dl>
+<dt>Compilation</dt>
+<dl>
+<dt>Standalone library compilation</dt>
+<dt>Auto-linking support</dt>
+<dt>Direct include</dt>
+</dl>
+<dt>User's guide</dt>
+<dl>
+<dt>Usage variants</dt>
+<dl>
+<dt>Static library</dt>
+<dt>Dynamic library</dt>
+<dt>Single header</dt>
+<dt>External test runner</dt>
+</dl>
+<dt>Supplied test runners</dt>
+<dl><dt>External test runner</dt></dl>
+<dt>Test module initialization</dt>
+<dt>Test organization</dt>
+<dl>
+<dt>Nullary function based test case</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Unary function based test case</dt>
+<dt>Test case template</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Test suite</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+<dt>Master Test Suite</dt>
+</dl>
+<dt>Expected failures specification</dt>
+</dl>
+<dt>Fixtures</dt>
+<dl>
+<dt>Generic model</dt>
+<dt>Per test case</dt>
+<dt>Test suite shared</dt>
+<dt>Global fixture</dt>
+</dl>
+<dt>Test Output </dt>
+<dl>
+<dt>Test log</dt>
+<dl>
+<dt>BOOST_TEST_MESSAGE</dt>
+<dt>BOOST_TEST_CHECKPOINT</dt>
+<dt>BOOST_TEST_PASSPOINT</dt>
+<dt>Logging floating point type numbers</dt>
+<dt>Human readable format</dt>
+<dt>XML based log output format</dt>
+<dt>Compile time configuration</dt>
+</dl>
+<dt>Test report output</dt>
+<dt>Progress display</dt>
+</dl>
+<dt>Runtime configuration </dt>
+<dl>
+<dt>Run by name</dt>
+<dt>Parameters reference</dt>
+</dl>
+</dl>
+<dt>Testing tools</dt>
+<dl>
+<dt>Output testing tool</dt>
+<dt>Custom predicate support</dt>
+<dt>Floating-point comparison algorithms</dt>
+<dt>Reference</dt>
+</dl>
+<dt>Usage recommendations</dt>
+<dl>
+<dt>Generic</dt>
+<dt>Microsoft Visual Studio .NET users specific</dt>
+<dt>Command-line (non-GUI) users specific</dt>
+</dl>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="minimal.html"><img src="../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="utf/intro.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/compilation.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/compilation.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,152 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The UTF compilation variants and procedures</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="../tutorials/new-year-resolution.html" title='Boost.Test driven development or "getting started" for TDD followers'>
+<link rel="next" href="compilation/standalone.html" title="Standalone library compilation">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Compilation</b><a href="user-guide.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="compilation/standalone.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.compilation"></a>The <acronym class="acronym">UTF</acronym> compilation variants and procedures</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Standalone library compilation</dt>
+<dt>Auto-linking support</dt>
+<dt>Direct include</dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title"><a name="utf.compilation.impl"></a></h4></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> is comparatively complicated component and is implemented in close to hundred header and source files,
+ so for long term usage the preferable solution is to build the <acronym class="acronym">UTF</acronym> as a reusable standalone library.
+ Depending on your platform this may save you a significant time during test module compilation and doesn't
+ really require that much effort.
+ Boost Getting started tells you how to get
+ pre-built libraries for some platforms. If available, this is the easiest option and you can ignore standalone
+ library compilation instructions below.
+ </p>
+<p class="first-line-indented">
+ Following files constitute the <acronym class="acronym">UTF</acronym> implementation:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="files-list"><ul type="disc">
+<li>debug.cpp</li>
+<li>compiler_log_formatter.cpp</li>
+<li>exception_safety.cpp</li>
+<li>execution_monitor.cpp</li>
+<li>framework.cpp</li>
+<li>interaction_based.cpp</li>
+<li>logged_expectations.cpp</li>
+<li>plain_report_formatter.cpp</li>
+<li>progress_monitor.cpp</li>
+<li>results_collector.cpp</li>
+<li>results_reporter.cpp</li>
+<li>unit_test_log.cpp</li>
+<li>unit_test_main.cpp</li>
+<li>unit_test_monitor.cpp</li>
+<li>unit_test_parameters.cpp</li>
+<li>unit_test_suite.cpp</li>
+<li>xml_log_formatter.cpp</li>
+<li>xml_report_formatter.cpp</li>
+</ul></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.compilation.procedured"></a>Compilation procedures</h4></div></div></div>
+<p class="first-line-indented">
+ In comparison with many other boost libraries, which are completely implemented in header files, compilation and
+ linking with the <acronym class="acronym">UTF</acronym> may require additional steps. The <acronym class="acronym">UTF</acronym> presents you with options to either
+ <a class="link" href="compilation/standalone.html" title="Standalone library compilation">built and link with a standalone library</a> or
+ <a class="link" href="compilation/direct-include.html" title="Including the UTF directly into your test module">include the implementation directly</a> into a test module.
+ If you opt to use the library the <acronym class="acronym">UTF</acronym> headers implement the
+ <a class="link" href="compilation/auto-linking.html" title="Support of the auto-linking feature">auto-linking support</a>. The compilation of the <acronym class="acronym">UTF</acronym> library and
+ a test module can be configured using the following compilation flags.
+ </p>
+<div class="table">
+<a name="utf.compilation.flags"></a><p class="title"><b>Table 3. The <acronym class="acronym">UTF</acronym> compilation flags</b></p>
+<div class="table-contents"><table class="table" summary="The UTF compilation flags">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Flag</th>
+<th>Usage</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+<a name="utf.flag.dyn-link"></a>BOOST_TEST_DYN_LINK</td>
+<td>Define this flag to build/use dynamic library.</td>
+</tr>
+<tr>
+<td>
+<a name="utf.flag.no-lib"></a>BOOST_TEST_NO_LIB</td>
+<td>Define this flag to prevent auto-linking.</td>
+</tr>
+<tr>
+<td>
+<a name="utf.flag.no-main"></a>BOOST_TEST_NO_MAIN</td>
+<td>Define this flag to prevent function main() implementation generation.</td>
+</tr>
+<tr>
+<td>
+<a name="utf.flag.main"></a>BOOST_TEST_MAIN</td>
+<td>
+ Define this flag to generate an empty test module initialization function and in case of
+ <a class="link" href="user-guide/test-runners.html#utf.user-guide.dynamic-lib-runner" title="Dynamic library variant of the UTF">dynamic library variant</a> default function main()
+ implementation as well.
+ </td>
+</tr>
+<tr>
+<td>
+<a name="utf.flag.module"></a>BOOST_TEST_MODULE</td>
+<td>
+ Define this flag to generate the test module initialization function, which uses the defined value to name
+ the master test suite. In case of <a class="link" href="user-guide/test-runners.html#utf.user-guide.dynamic-lib-runner" title="Dynamic library variant of the UTF">dynamic library variant</a>
+ default function main() implementation is generated as well
+ </td>
+</tr>
+<tr>
+<td>
+<a name="utf.flag.alt-init-api"></a>BOOST_TEST_ALTERNATIVE_INIT_API</td>
+<td>
+ Define this flag to generate the switch to the alternative test module initialization API.
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p class="first-line-indented">
+ Further in documentation you are going to see in details when and how these flags should be used.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials/new-year-resolution.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="compilation/standalone.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/compilation/auto-linking.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/compilation/auto-linking.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Support of the auto-linking feature</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../compilation.html" title="The UTF compilation variants and procedures">
+<link rel="prev" href="standalone.html" title="Standalone library compilation">
+<link rel="next" href="direct-include.html" title="Including the UTF directly into your test module">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Compilation<a href="../user-guide.html">
+ &gt;
+ </a><b>Auto-linking support</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="direct-include.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.compilation.auto-linking"></a>Support of the auto-linking feature</h4></div></div></div>
+<p class="first-line-indented">
+ For the Microsoft family of compilers the <acronym class="acronym">UTF</acronym> provides an ability to automatically select proper library name
+ and add it to the list of objects to be linked with. By default this feature is enabled. To disable it you have
+ to define the flag <a class="xref" href="../compilation.html#utf.flag.no-lib">BOOST_TEST_NO_LIB</a>. For more details on the auto-linking
+ feature implementation and configuration you should consult the
+ appropriate documentation.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="standalone.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../compilation.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="direct-include.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/compilation/direct-include.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/compilation/direct-include.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Including the UTF directly into your test module</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../compilation.html" title="The UTF compilation variants and procedures">
+<link rel="prev" href="auto-linking.html" title="Support of the auto-linking feature">
+<link rel="next" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Compilation<a href="../user-guide.html">
+ &gt;
+ </a><b>Direct include</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../user-guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.compilation.direct-include"></a>Including the <acronym class="acronym">UTF</acronym> directly into your test module</h4></div></div></div>
+<p class="first-line-indented">
+ If you prefer to avoid the standalone library compilation you can either include all files that constitute the
+ static library in your test module's makefile or include them as a part of a test module's source file.
+ To facilitate the later variant the <acronym class="acronym">UTF</acronym> presents the
+ <a class="link" href="../user-guide/usage-variants/single-header-variant.html" title="The single-header variant of the UTF">single-header usage variant</a>. In either case no special
+ build options or macro definitions are required to be added to your compilation options list by default. But the
+ same flags that can be used for the <a class="link" href="standalone.html" title="Standalone library compilation">standalone library compilation</a>
+ are applicable in this case. Though, obviously, neither <a class="xref" href="../../prg-exec-monitor/compilation.html#pem.flag.dyn-link">BOOST_TEST_DYN_LINK</a>
+ nor <a class="xref" href="../../prg-exec-monitor/compilation.html#pem.flag.no-lib">BOOST_TEST_NO_LIB</a> are applicable. This solution may not be the
+ best choice in a long run, since it requires the <acronym class="acronym">UTF</acronym> sources recompilation for every test module you use it with
+ and for every change of a test module you are working on. In a result your testing cycle time may increase. If it
+ become tiresome, I recommend switching to one of the prebuilt library usage variants.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auto-linking.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../compilation.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../user-guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/compilation/standalone.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/compilation/standalone.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Standalone library compilation</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../compilation.html" title="The UTF compilation variants and procedures">
+<link rel="prev" href="../compilation.html" title="The UTF compilation variants and procedures">
+<link rel="next" href="auto-linking.html" title="Support of the auto-linking feature">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Compilation<a href="../user-guide.html">
+ &gt;
+ </a><b>Standalone library compilation</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="auto-linking.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.compilation.standalone"></a>Standalone library compilation</h4></div></div></div>
+<p class="first-line-indented">
+ If you opted to link your program with the standalone library, you need to build it first. To build a standalone
+ library the all C++ files (.cpp), that constitute <acronym class="acronym">UTF</acronym> <a class="link" href="../../prg-exec-monitor/impl.html" title="The Program Execution Monitor implementation">implementation</a> need to be
+ listed as source files in your makefile<sup>[<a name="id646111" href="#ftn.id646111" class="footnote">3</a>]</sup>.
+ </p>
+<p class="first-line-indented">
+ The Jamfile for use with Boost.Build system is supplied in <code class="filename">libs/test/build</code>
+ directory. The <acronym class="acronym">UTF</acronym> can be built as either <a name="prg-exec-monitor.compilation.standalone.static"></a>static
+ or <a name="prg-exec-monitor.compilation.standalone.dynamic"></a>dynamic library.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.compilation.standalone.static"></a>Static library compilation</h5></div></div></div>
+<p class="first-line-indented">
+ No special build options or macro definitions are required to build the static library. Using the Boost.Build
+ system you can build the static library with the following command from
+ <code class="filename">libs/test/build</code> directory:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">bjam</code> [-sTOOLS=&lt;your-tool-name&gt;] {-sBUILD=boost_unit_test_framework}</p></div>
+<p class="first-line-indented">
+ Also on Windows you can use the Microsoft Visual Studio .NET project file provided.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.compilation.standalone.dynamic"></a>Dynamic library compilation</h5></div></div></div>
+<p class="first-line-indented">
+ To build the dynamic library<sup>[<a name="id646262" href="#ftn.id646262" class="footnote">4</a>]</sup> you
+ need to add <a class="xref" href="../compilation.html#utf.flag.dyn-link">BOOST_TEST_DYN_LINK</a> to the list of macro definitions in the
+ makefile. Using the Boost.Build system you can build the dynamic library with the following command from
+ <code class="filename">libs/test/build</code> directory:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">bjam</code> [-sTOOLS=&lt;your-tool-name&gt;] {-sBUILD=boost_unit_test_framework}</p></div>
+<p class="first-line-indented">
+ Also on Windows you can use the Microsoft Visual Studio .NET project file provided.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ For test module to successfully link with the dynamic library the flag
+ <a class="xref" href="../compilation.html#utf.flag.dyn-link">BOOST_TEST_DYN_LINK</a> needs to be defined both during dynamic library build
+ and during test module compilation.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id646111" href="#id646111" class="simpara">3</a>] </sup>There are varieties of make systems that can be used. To name
+ a few: <acronym class="acronym">GNU</acronym> make (and other make clones) and build systems integrated into <acronym class="acronym">IDE</acronym>s
+ (for example Microsoft Visual Studio). The Boost preferred solution is Boost.Build system that is based on top of
+ bjam tool. Make systems require some kind of configuration file that lists all files that constitute the library
+ and all build options. For example the makefile that is used by make, or the Microsoft Visual Studio project file,
+ Jamfile is used by Boost.Build. For the sake of simplicity let's call this file the makefile.</p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id646262" href="#id646262" class="simpara">4</a>] </sup>What is meant by the term dynamic library is a <em class="firstterm">dynamically
+ loaded library</em>, alternatively called a <em class="firstterm">shared library</em>.</p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../compilation.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../compilation.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auto-linking.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/intro.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/intro.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,137 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="next" href="tutorials.html" title="The unit test framework tutorials">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Introduction</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.intro"></a>Introduction</h2></div></div></div>
+<div class="epigraph">
+<p>
+ The acceptance test makes the customer satisfied that the software provides the business value that makes them
+ willing to pay for it. The unit test makes the programmer satisfied that the software does what the programmer
+ thinks it does
+ </p>
+<div class="attribution"><span>--<span class="attribution">XP maxim</span></span></div>
+</div>
+<p class="first-line-indented">
+ What is the first thing you need to do when you start working on new library/class/program? That's right -
+ you need to start with the unit test module (I hope you all gave this answer!). Occasional, simple test may be
+ implemented using asserts. But any professional developer soon finds this approach lacking. It becomes clear that
+ it's too time-consuming and tedious for simple, but repetitive unit testing tasks and it's too inflexible for
+ most nontrivial ones.
+ </p>
+<p class="first-line-indented">
+ <em class="firstterm"><a name="utf.def"></a>The Boost Test Library Unit Test Framework</em> (further in the documentation
+ referred by the acronym <acronym class="acronym"><a name="utf.def.ref"></a>UTF</acronym>) provides both an easy to use and flexible solution
+ to this problem domain: C++ unit test implementation and organization.
+ </p>
+<p class="first-line-indented">
+ Unit testing tasks arise during many different stages of software development: from initial project implementation
+ to its maintenance and later revisions. These tasks differ in their complexity and purpose and accordingly are
+ approached differently by different developers. The wide spectrum of tasks in a problem domain cause many
+ requirements (sometimes conflicting) to be placed on a unit testing framework. These include:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="square">
+<li style="list-style-type: square">
+ Writing a unit test module should be simple and obvious for new users.
+ </li>
+<li style="list-style-type: square">
+ The framework should allow advanced users to perform nontrivial tests.
+ </li>
+<li style="list-style-type: square">
+ Test module should be able to have many small test cases and developer should be able to group them into test
+ suites.
+ </li>
+<li style="list-style-type: square">
+ At the beginning of the development users want to see verbose and descriptive error message, whereas during the
+ regression testing they just want to know if any tests failed.
+ </li>
+<li style="list-style-type: square">
+ For a small test modules run time should prevail over compilation time: user don't want to wait a minute to
+ compile a test that takes a second to run.
+ </li>
+<li style="list-style-type: square">
+ For long and complex tests users want to be able to see the test progress.
+ </li>
+<li style="list-style-type: square">
+ Simplest tests shouldn't require an external library.
+ </li>
+<li style="list-style-type: square">
+ For long term usage users of a unit test framework should be able to build it as a standalone library.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> design is based on above rationale and provides versatile facilities to:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="square">
+<li style="list-style-type: square">
+ Simplify writing test cases by using various <a class="link" href="testing-tools/reference.html" title="The UTF testing tools reference">testing tools</a>.
+ </li>
+<li style="list-style-type: square">
+<a class="link" href="user-guide/test-organization.html" title="Test organization or the house that Jack built">Organize test cases</a> into a test tree.</li>
+<li style="list-style-type: square">
+ Relieve you from messy error detection, reporting duties and framework runtime parameters processing.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> keeps track of all passed/failed testing tools <a class="link" href="user-guide.html#test-assertion.def">assertions</a>,
+ provides an ability to check the <a class="link" href="user-guide/test-output/test-progress.html" title="Test progress display">test progress</a>
+ and generates a <a class="link" href="user-guide/test-output/results-report.html" title="Test report output">result report</a> in several different
+ formats. The <acronym class="acronym">UTF</acronym> supplies command line test runners that initialize the framework and run the requested tests.
+ Depending on the selected <a class="link" href="compilation.html#utf.compilation.flags" title="Table 3. The UTF compilation flags">compilation flags</a> the function main()
+ default implementation, that invoke the supplied test runner, can be generated automatically as well.
+ </p>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> is intended to be used both for a simple and non trivial testing. It is not intended to be used with
+ production code. In this case the Program Execution Monitor is more
+ suitable.
+ </p>
+<p class="first-line-indented">
+ Given the largely differing requirements of new and advanced users, it is clear that the <acronym class="acronym">UTF</acronym> must provide both
+ simple, easy-to-use interfaces with limited customization options and advanced interfaces, which allow unit testing
+ to be fully customized. Accordingly the material provided in this documentation is split into two sections:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="upper-roman">
+<li style="list-style-type: upper-roman">
+ <a class="link" href="user-guide.html" title="Unit Test Framework: User's guide">The User's Guide</a>: covers all functionality that doesn't require
+ knowledge of the <acronym class="acronym">UTF</acronym> internals
+ </li>
+<li style="list-style-type: upper-roman">
+ The Advanced User's Guide: covers all implementation details
+ required for a user to understand the advanced customization options available in the <acronym class="acronym">UTF</acronym>, and for a user
+ interested in extending the testing framework.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ For those interested in getting started quickly please visit <a href="../example-toc.html" target="_top">collection of
+ examples</a> presented in this documentation.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../utf.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/testing-tools.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/testing-tools.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The UTF testing tools or tester's toolbox for all occasions</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="user-guide/runtime-config/reference.html" title="Runtime parameters reference">
+<link rel="next" href="testing-tools/output-test.html" title="Output testing tool">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Testing tools</b><a href="usage-recommendations.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="testing-tools/output-test.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.testing-tools"></a>The <acronym class="acronym">UTF</acronym> testing tools or tester's toolbox for all occasions</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Output testing tool</dt>
+<dt>Custom predicate support</dt>
+<dt>Floating-point comparison algorithms</dt>
+<dt>Reference</dt>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.intro"></a>Introduction</h4></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym>'s supplies a toolbox of testing tools to ease creation and maintenance of test programs and
+ provide a uniform error reporting mechanism. The toolbox supplied in most part in a form of macro and function
+ declarations. While the functions can be called directly, the usual way to use testing tools is via convenience
+ macros. All macros arguments are calculated once, so it's safe to pass complex expressions in their place.
+ All tools automatically supply an error location: a file name and a line number. The testing tools are intended
+ for unit test code rather than library or production code, where throwing exceptions, using assert(),
+ <code class="computeroutput">boost::concept_check</code> or <code class="computeroutput">BOOST_STATIC_ASSERT</code>() may be more suitable
+ ways to detect and report errors. For list of all supplied testing tools and usage examples see the reference.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.flavors"></a>Testing tools flavors</h4></div></div></div>
+<p class="first-line-indented">
+ All the tools are supplied in three flavors(levels): <em class="firstterm">WARN</em>, <em class="firstterm">CHECK</em> and
+ <em class="firstterm">REQUIRE</em>. For example: <code class="computeroutput"><a class="link" href="testing-tools/reference.html" title="The UTF testing tools reference">BOOST_WARN_EQUAL</a></code>,
+ <code class="computeroutput"><a class="link" href="testing-tools/reference.html" title="The UTF testing tools reference">BOOST_CHECK_EQUAL</a></code>, <code class="computeroutput"><a class="link" href="testing-tools/reference.html" title="The UTF testing tools reference">BOOST_REQUIRE_EQUAL</a></code>. If an assertion designated by
+ the tool passes, confirmation message can be printed in log output<sup>[<a name="id657740" href="#ftn.id657740" class="footnote">6</a>]</sup>. If an assertion designated by the tool failed, depending on the level following
+ will happened<sup>[<a name="id657756" href="#ftn.id657756" class="footnote">7</a>]</sup>:
+ </p>
+<div class="table">
+<a name="utf.testing-tools.levels-diffs"></a><p class="title"><b>Table 5. Testing tools levels differences</b></p>
+<div class="table-contents"><table class="table" summary="Testing tools levels differences">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Level</th>
+<th>Test log content</th>
+<th>Errors counter</th>
+<th>Test execution</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>WARN</td>
+<td>
+ warning in <em class="replaceable"><code>&lt;test case name&gt;</code></em>: condition
+ <em class="replaceable"><code>&lt;assertion description&gt;</code></em> is not satisfied
+ </td>
+<td>not affected</td>
+<td>continues</td>
+</tr>
+<tr>
+<td>CHECK</td>
+<td>
+ error in <em class="replaceable"><code>&lt;test case name&gt;</code></em>: test
+ <em class="replaceable"><code>&lt;assertion description&gt;</code></em> failed
+ </td>
+<td>increased</td>
+<td>continues</td>
+</tr>
+<tr>
+<td>REQUIRE</td>
+<td>
+ fatal error in <em class="replaceable"><code>&lt;test case name&gt;</code></em>: critical test
+ <em class="replaceable"><code>&lt;assertion description&gt;</code></em> failed
+ </td>
+<td>increased</td>
+<td>aborts</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p class="first-line-indented">
+ Regularly you should use CHECK level tools to implement your assertions. You can use WARN level tools to validate
+ aspects less important then correctness: performance, portability, usability etc. You should use REQUIRE level
+ tools only if continuation of the test case doesn't make sense if this assertions fails.
+ </p>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id657740" href="#id657740" class="simpara">6</a>] </sup>to manage what messages appear
+ in the test log stream set the proper <a class="link" href="user-guide/test-output/test-log.html" title="Test log output">log
+ level</a></p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id657756" href="#id657756" class="simpara">7</a>] </sup>in some cases log message can be slightly different to reflect failed tool
+ specifics</p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="user-guide/runtime-config/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="testing-tools/output-test.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/testing-tools/custom-predicate.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/testing-tools/custom-predicate.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,146 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Custom predicate support</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<link rel="prev" href="output-test.html" title="Output testing tool">
+<link rel="next" href="floating_point_comparison.html" title="Floating-point comparison algorithms">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Testing tools<a href="../usage-recommendations.html">
+ &gt;
+ </a><b>Custom predicate support</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="floating_point_comparison.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.custom-predicate"></a>Custom predicate support</h4></div></div></div>
+<p class="first-line-indented">
+ Even though supplied testing tools cover wide range of possible checks and provide detailed report on cause of error
+ in some cases you may want to implement and use custom predicate that perform complex check and produce intelligent
+ report on failure. To satisfy this need testing tools implement custom predicate support. There two layers of custom
+ predicate support implemented by testing tools toolbox: with and without custom error message generation.
+ </p>
+<p class="first-line-indented">
+ The first layer is supported by BOOST_CHECK_PREDICATE family of testing tools. You can use it to check any custom
+ predicate that reports the result as boolean value. The values of the predicate arguments are reported by the tool
+ automatically in case of failure.
+ </p>
+<div class="example">
+<a name="utf.testing-tools.custom-predicate.example30"></a><p class="title"><b>Example 36. Custom predicate support using BOOST_CHECK_PREDICATE</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+bool is_even( int i ) { return i%2 == 0; }
+
+BOOST_AUTO_TEST_CASE( test_is_even )
+{
+ BOOST_CHECK_PREDICATE( is_even, (14) );
+
+ int i = 17;
+ BOOST_CHECK_PREDICATE( is_even, (i) );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example30-output">&gt; example
+Running 1 test case...
+test.cpp(13): error in "test_is_even": check is_even( i ) failed for ( 17 )
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ To use second layer your predicate have to return
+ <code class="computeroutput">boost::test_tools::predicate_result</code>. This class encapsulates boolean result value along
+ with any error or information message you opt to report.
+ </p>
+<p class="first-line-indented">
+ Usually you construct the instance of class <code class="computeroutput">boost::test_tools::predicate_result</code> inside your
+ predicate function and return it by value. The constructor expects one argument - the boolean result value. The
+ constructor is implicit, so you can simply return boolean value from your predicate and
+ <code class="computeroutput">boost::test_tools::predicate_result</code> is constructed automatically to hold your value and empty
+ message. You can also assign boolean value to the constructed instance. You can check the current predicate value by
+ using <code class="computeroutput">operator!</code>() or directly accessing public read-only property p_predicate_value. The
+ error message is stored in public read-write property p_message.
+ </p>
+<div class="example">
+<a name="utf.testing-tools.custom-predicate.example31"></a><p class="title"><b>Example 37. Custom predicate support using class predicate_result</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+boost::test_tools::predicate_result
+compare_lists( std::list&lt;int&gt; const&amp; l1, std::list&lt;int&gt; const&amp; l2 )
+{
+ if( l1.size() != l2.size() ) {
+ boost::test_tools::predicate_result res( false );
+
+ res.message() &lt;&lt; "Different sizes [" &lt;&lt; l1.size() &lt;&lt; "!=" &lt;&lt; l2.size() &lt;&lt; "]";
+
+ return res;
+ }
+
+ return true;
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_list_comparizon )
+{
+ std::list&lt;int&gt; l1, l2;
+ l1.push_back( 1 );
+ l1.push_back( 2 );
+
+ BOOST_CHECK( compare_lists( l1, l2 ) );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example31-output">Running 1 test case...
+test.cpp(28): error in "test_list_comparizon": check compare_lists( l1, l2 ) failed. Different sizes [2!=0]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="output-test.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing-tools.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="floating_point_comparison.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/testing-tools/floating_point_comparison.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/testing-tools/floating_point_comparison.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,253 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Floating-point comparison algorithms</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<link rel="prev" href="custom-predicate.html" title="Custom predicate support">
+<link rel="next" href="reference.html" title="The UTF testing tools reference">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Testing tools<a href="../usage-recommendations.html">
+ &gt;
+ </a><b>Floating-point comparison algorithms</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.fpv-comparison"></a>Floating-point comparison algorithms</h4></div></div></div>
+<p class="first-line-indented">
+ In most cases it is unreasonable to use an <code class="computeroutput">operator==(...)</code> for a floating-point values equality check.
+ The simple, absolute value comparison based, solution for a floating-point values <code class="varname">u</code>,
+ <code class="varname">v</code> and a tolerance :
+ </p>
+<div class="equation">
+<a name="utf.testing-tools.fpv-comparison.eq.1"></a><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><div class="informalequation"><span class="mathphrase">
+ |<code class="varname">u</code> <code class="varname">v</code>|
+ </span></div></td>
+<td class="index">(<span class="bold"><strong>1</strong></span>)</td>
+</tr></tbody>
+</table>
+</div>
+<p>
+ does not produce expected results in many circumstances - specifically for very small or very big values (See
+ <a class="xref" href="floating_point_comparison.html#bbl.Squassabia" title="Comparing Floats: How To Determine if Floating Quantities Are Close Enough Once a Tolerance Has Been Reached">[<abbr class="abbrev">Squassabia</abbr>]</a> for examples). The <acronym class="acronym">UTF</acronym> implements floating-point comparison algorithm that is
+ based on the more confident solution first presented in <a class="xref" href="floating_point_comparison.html#bbl.KnuthII" title="The art of computer programming (vol II)">[<abbr class="abbrev">KnuthII</abbr>]</a>:
+ </p>
+<div class="equation">
+<a name="utf.testing-tools.fpv-comparison.eq.2"></a><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><div class="informalequation"><span class="mathphrase">
+ |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">u</code>| |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">v</code>|
+ </span></div></td>
+<td class="index">(<span class="bold"><strong>2</strong></span>)</td>
+</tr></tbody>
+</table>
+</div>
+<p>
+ defines a <em class="firstterm">very close with tolerance </em> relationship between <code class="varname">u</code> and <code class="varname">v</code>
+ </p>
+<div class="equation">
+<a name="utf.testing-tools.fpv-comparison.eq.3"></a><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><div class="informalequation"><span class="mathphrase">
+ |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">u</code>| |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">v</code>|
+ </span></div></td>
+<td class="index">(<span class="bold"><strong>3</strong></span>)</td>
+</tr></tbody>
+</table>
+</div>
+<p>
+ defines a <em class="firstterm">close enough with tolerance </em> relationship between <code class="varname">u</code> and <code class="varname">v</code>
+ </p>
+<p class="first-line-indented">
+ Both relationships are commutative but are not transitive. The relationship defined by inequations
+ (2) is stronger
+ that the relationship defined by inequations (3)
+ (i.e. (2)
+ (3)). Because of the multiplication in the right side
+ of inequations, that can cause an unwanted underflow condition, the implementation is using modified version of the
+ inequations (2) and
+ (3) where all underflow, overflow conditions can be
+ guarded safely:
+ </p>
+<div class="equation">
+<a name="utf.testing-tools.fpv-comparison.eq.4"></a><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><div class="informalequation"><span class="mathphrase">
+ |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">u</code>| |<code class="varname">u</code> <code class="varname">v</code>| / |<code class="varname">v</code>|
+ </span></div></td>
+<td class="index">(<span class="bold"><strong>4</strong></span>)</td>
+</tr></tbody>
+</table>
+</div>
+<div class="equation">
+<a name="utf.testing-tools.fpv-comparison.eq.5"></a><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><div class="informalequation"><span class="mathphrase">
+ |<code class="varname">u</code> <code class="varname">v</code>| |<code class="varname">u</code>| |<code class="varname">u</code> <code class="varname">v</code>| / |<code class="varname">v</code>|
+ </span></div></td>
+<td class="index">(<span class="bold"><strong>5</strong></span>)</td>
+</tr></tbody>
+</table>
+</div>
+<p class="first-line-indented">
+ Checks based on equations (4) and
+ (5) are implemented by two predicates with
+ alternative interfaces: binary predicate <code class="computeroutput">close_at_tolerance</code><sup>[<a name="id658995" href="#ftn.id658995" class="footnote">8</a>]</sup> and predicate with four arguments
+ <code class="computeroutput">check_is_close</code><sup>[<a name="id659008" href="#ftn.id659008" class="footnote">9</a>]</sup>.
+ </p>
+<p class="first-line-indented">
+ While equations (4) and
+ (5) in general are preferred for the general floating
+ point comparison check over equation (1), they are
+ unusable for the test on closeness to zero. The later check is still might be useful in some cases and the <acronym class="acronym">UTF</acronym>
+ implements an algorithm based on equation (1) in
+ binary predicate <code class="computeroutput">check_is_small</code><sup>[<a name="id659064" href="#ftn.id659064" class="footnote">10</a>]</sup>.
+ </p>
+<p class="first-line-indented">
+ On top of the generic, flexible predicates the <acronym class="acronym">UTF</acronym> implements macro based family of tools
+ <code class="computeroutput"><a class="link" href="reference.html" title="The UTF testing tools reference">BOOST_CHECK_CLOSE</a></code> and <code class="computeroutput"><a class="link" href="reference.html" title="The UTF testing tools reference">BOOST_CHECK_SMALL</a></code>. These tools limit the check
+ flexibility to strong-only checks, but automate failed check arguments reporting.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.testing-tools.fpv-comparison.tolerance-selection"></a>Tolerance selection considerations</h5></div></div></div>
+<p class="first-line-indented">
+ In case of absence of domain specific requirements the value of tolerance can be chosen as a sum of the predicted
+ upper limits for "relative rounding errors" of compared values. The "rounding" is the operation by which a real
+ value 'x' is represented in a floating-point format with 'p' binary digits (bits) as the floating-point value 'X'.
+ The "relative rounding error" is the difference between the real and the floating point values in relation to real
+ value: |x-X|/|x|. The discrepancy between real and floating point value may be caused by several reasons:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>Type promotion</li>
+<li>Arithmetic operations</li>
+<li>Conversion from a decimal presentation to a binary presentation</li>
+<li>Non-arithmetic operation</li>
+</ul></div>
+<p class="first-line-indented">
+ The first two operations proved to have a relative rounding error that does not exceed
+ "machine epsilon value" for the appropriate floating point type (represented by
+ <code class="computeroutput">std::numeric_limits</code>&lt;FPT&gt;::epsilon()). Conversion to binary presentation, sadly, does
+ not have such requirement. So we can't assume that float 1.1 is close to real 1.1 with tolerance
+ "machine epsilon value" for float (though for 11./10 we can). Non arithmetic operations either do not have a
+ predicted upper limit relative rounding errors. Note that both arithmetic and non-arithmetic operations might also
+ produce others "non-rounding" errors, such as underflow/overflow, division-by-zero or 'operation errors'.
+ </p>
+<p class="first-line-indented">
+ All theorems about the upper limit of a rounding error, including that of epsilon, refer only to
+ the 'rounding' operation, nothing more. This means that the 'operation error', that is, the error incurred by the
+ operation itself, besides rounding, isn't considered. In order for numerical software to be able to actually
+ predict error bounds, the IEEE754 standard requires arithmetic operations to be 'correctly or exactly rounded'.
+ That is, it is required that the internal computation of a given operation be such that the floating point result
+ is the exact result rounded to the number of working bits. In other words, it is required that the computation used
+ by the operation itself doesn't introduce any additional errors. The IEEE754 standard does not require same behavior
+ from most non-arithmetic operation. The underflow/overflow and division-by-zero errors may cause rounding errors
+ with unpredictable upper limits.
+ </p>
+<p class="first-line-indented">
+ At last be aware that epsilon rules are not transitive. In other words combination of two
+ arithmetic operations may produce rounding error that significantly exceeds 2 epsilon. All
+ in all there are no generic rules on how to select the tolerance and users need to apply common sense and domain/
+ problem specific knowledge to decide on tolerance value.
+ </p>
+<p class="first-line-indented">
+ To simplify things in most usage cases latest version of algorithm below opted to use percentage values for
+ tolerance specification (instead of fractions of related values). In other words now you use it to check that
+ difference between two values does not exceed x percent.
+ </p>
+<p class="first-line-indented">
+ For more reading about floating-point comparison see references below.
+ </p>
+</div>
+<div class="bibliography">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="bbl.fpv-comparison"></a>A floating-point comparison related references</h3></div></div></div>
+<div class="bibliodiv">
+<h3 class="title">
+<a name="bbl.fpv-comparison.books"></a>Books</h3>
+<div class="biblioentry">
+<a name="bbl.KnuthII"></a><p>[<abbr class="abbrev">KnuthII</abbr>] <span class="title"><i>The art of computer programming (vol II)</i>. </span><span class="author"><span class="firstname">Donald. E.</span> <span class="surname">Knuth</span>. </span><span class="copyright">Copyright © 1998 Addison-Wesley Longman, Inc.. </span><span class="isbn">0-201-89684-2. </span><span class="publisher"><span class="publishername">Addison-Wesley Professional; 3 edition. </span></span></p>
+</div>
+<div class="biblioentry">
+<a name="bbl.Kulisch"></a><p>[<abbr class="abbrev">Kulisch</abbr>] <span class="biblioset"><i>Rounding near zero</i>. </span><span class="biblioset"><i>Advanced Arithmetic for the Digital Computer</i>. <span class="author"><span class="firstname">Ulrich W</span> <span class="surname">Kulisch</span>. </span><span class="copyright">Copyright © 2002 Springer, Inc.. </span><span class="isbn">0-201-89684-2. </span><span class="publisher"><span class="publishername">Springer; 1 edition. </span></span></span></p>
+</div>
+</div>
+<div class="bibliodiv">
+<h3 class="title">
+<a name="bbl.fpv-comparison.periodicals"></a>Periodicals</h3>
+<div class="biblioentry">
+<a name="bbl.Squassabia"></a><p>[<abbr class="abbrev">Squassabia</abbr>] <span class="title"><i>Comparing Floats: How To Determine if Floating Quantities Are Close Enough Once a Tolerance Has Been Reached</i>. </span><span class="author"><span class="firstname">Alberto</span> <span class="surname">Squassabia</span>. </span><span class="biblioset"><i>C++ Report</i>. <span class="issuenum">March 2000. </span>.
+ </span></p>
+</div>
+<div class="biblioentry">
+<a name="bbl.Becker"></a><p>[<abbr class="abbrev">Becker</abbr>] <span class="biblioset">&#8220;The Journeyman's Shop: Trap Handlers, Sticky Bits, and Floating-Point Comparisons&#8221;. <span class="author"><span class="firstname">Pete</span> <span class="surname">Becker</span>. </span></span><span class="biblioset"><i>C/C++ Users Journal</i>. <span class="issuenum">December 2000. </span>.
+ </span></p>
+</div>
+</div>
+<div class="bibliodiv">
+<h3 class="title">
+<a name="bbl.fpv-comparison.publications"></a>Publications</h3>
+<div class="biblioentry">
+<a name="bbl.Goldberg"></a><p>[<abbr class="abbrev">Goldberg</abbr>] <span class="biblioset">&#8220;What Every Computer Scientist Should Know About Floating-Point Arithmetic&#8221;. <span class="author"><span class="firstname">David</span> <span class="surname">Goldberg</span>. </span><span class="copyright">Copyright © 1991 Association for Computing Machinery, Inc.. </span><span class="pagenums">150-230. </span></span><span class="biblioset"><i>Computing Surveys</i>. <span class="issuenum">March. </span>.
+ </span></p>
+</div>
+<div class="biblioentry">
+<a name="bbl.Langlois"></a><p>[<abbr class="abbrev">Langlois</abbr>] <span class="title"><i>From Rounding Error Estimation to Automatic Correction with Automatic Differentiation</i>. </span><span class="author"><span class="firstname">Philippe</span> <span class="surname">Langlois</span>. </span><span class="copyright">Copyright © 2000. </span><span class="issn">0249-6399. </span></p>
+</div>
+<div class="biblioentry">
+<a name="bbl.Kahan"></a><p>[<abbr class="abbrev">Kahan</abbr>] <span class="title"><i>Lots of information on William Kahan home page</i>. </span><span class="author"><span class="firstname">William</span> <span class="surname">Kahan</span>. </span></p>
+</div>
+</div>
+</div>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id658995" href="#id658995" class="simpara">8</a>] </sup>check type
+ and tolerance value are fixed at predicate construction time</p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id659008" href="#id659008" class="simpara">9</a>] </sup>check type and tolerance value are the arguments of the
+ predicate</p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id659064" href="#id659064" class="simpara">10</a>] </sup><code class="varname">v</code> is zero</p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="custom-predicate.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing-tools.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/testing-tools/output-test.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/testing-tools/output-test.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,162 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Output testing tool</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<link rel="prev" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<link rel="next" href="custom-predicate.html" title="Custom predicate support">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Testing tools<a href="../usage-recommendations.html">
+ &gt;
+ </a><b>Output testing tool</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="custom-predicate.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.output-test"></a>Output testing tool</h4></div></div></div>
+<p class="first-line-indented">
+ How do you perform correctness test for <code class="computeroutput">operator&lt;&lt;( std::ostream&amp;, ... )</code>
+ operations? You can print into the standard output stream and manually check that it is matching your expectations.
+ Unfortunately, this is not really acceptable for the regression testing and doesn't serve a ling term purpose of a
+ unit test. You can use <code class="computeroutput">std::stringstream</code> and compare resulting output buffer with the
+ expected pattern string, but you are required to perform several additional operations with every check you do. So it
+ becomes tedious very fast. The class <em class="firstterm"><code class="computeroutput">output_test_stream</code></em> is designed to
+ automate these tasks for you. This is a simple, but powerful tool for testing standard
+ <code class="computeroutput">std::ostream</code> based output operation. The class <code class="computeroutput">output_test_stream</code>
+ complies to <code class="computeroutput">std::ostream</code> interface so it can be used in place of any
+ <code class="computeroutput">std::ostream</code> parameter. It provides several test methods to validate output content,
+ including test for match to expected output content or test for expected output length. Flushing, synchronizing,
+ string comparison and error message generation is automated by the tool implementation.
+ </p>
+<p class="first-line-indented">
+ In some cases it still may not be good enough. It becomes even more obvious when it's difficult to generate the
+ expected pattern. What we need in cases like this is to be able to check once manually that the output is as expected
+ and to be able in a future check that it stays the same. To help manage this logic the class
+ <code class="computeroutput">output_test_stream</code> allows matching output content versus specified pattern file and produce
+ pattern file based on successful test run.
+ </p>
+<p class="first-line-indented">
+ Detailed specification of class <code class="computeroutput">output_test_stream</code> is covered in reference section.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.testing-tools.output-test.usage"></a>Usage</h5></div></div></div>
+<p class="first-line-indented">
+ There are two ways to employ the class <code class="computeroutput">output_test_stream</code>: explicit output checks and
+ pattern file matching.
+ </p>
+</div>
+<div class="example">
+<a name="utf.testing-tools.output-test.example28"></a><p class="title"><b>Example 34. output_test_stream usage with explicit output checks</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ Use the instance of class output_test_stream as an output stream and check output content using tool's methods.
+ Note use of <code class="literal">false</code> to prevent output flushing in first two invocation of check functions. Unless
+ you want to perform several different checks for the same output you wouldn't need to use it though. Your
+ test will look like a serious of output operators followed by one check. And so on again. Try to perform checks as
+ frequently as possible. It not only simplifies patterns you compare with, but also allows you to more closely
+ identify possible source of failure.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/output_test_stream.hpp&gt;
+using boost::test_tools::output_test_stream;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ output_test_stream output;
+ int i=2;
+ output &lt;&lt; "i=" &lt;&lt; i;
+ BOOST_CHECK( !output.is_empty( false ) );
+ BOOST_CHECK( output.check_length( 3, false ) );
+ BOOST_CHECK( output.is_equal( "i=3" ) );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example28-output">&gt; example
+Running 1 test case...
+test.cpp(15): error in "test": check output.is_equal( "i=3" ) failed. Output content: "i=2"
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="example">
+<a name="utf.testing-tools.output-test.example29"></a><p class="title"><b>Example 35. output_test_stream usage for pattern file matching</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ Even simpler: no need to generate expected patterns. Though you need to keep the pattern file all the time somewhere
+ around. Your testing will look like a serious of output operators followed by match pattern checks repeated several
+ times. Try to perform checks as frequently as possible, because it allows you to more closely identify possible source
+ of failure. Content of the pattern file is:
+ </p>
+<p>
+ <div class="literallayout"><p>i=2<br>
+File: test.cpp Line: 14</p></div>
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/output_test_stream.hpp&gt;
+using boost::test_tools::output_test_stream;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ output_test_stream output( "pattern_file", true );
+ int i=2;
+ output &lt;&lt; "i=" &lt;&lt; i;
+ BOOST_CHECK( output.match_pattern() );
+
+ output &lt;&lt; "\nFile: " &lt;&lt; __FILE__ &lt;&lt; " Line: " &lt;&lt; __LINE__;
+ BOOST_CHECK( output.match_pattern() );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example29-output">&gt; example
+Running 1 test case...
+test.cpp(16): error in "test": check output.match_pattern() failed. Mismatch at position 23
+...5...
+...4...
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../testing-tools.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing-tools.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="custom-predicate.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/testing-tools/reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/testing-tools/reference.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,1085 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The UTF testing tools reference</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<link rel="prev" href="floating_point_comparison.html" title="Floating-point comparison algorithms">
+<link rel="next" href="../usage-recommendations.html" title="The unit test framework usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Testing tools<a href="../usage-recommendations.html">
+ &gt;
+ </a><b>Reference</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.testing-tools.reference"></a>The <acronym class="acronym">UTF</acronym> testing tools reference</h4></div></div></div>
+<script language="JavaScript1.2">
+ var id298906;
+ </script><table class="inline-reference"><tr>
+<td class="index" valign="top"><ul>
+<li>BOOST_<level></li>
+<li>BOOST_<level>_BITWISE_EQUAL</li>
+<li>BOOST_<level>_CLOSE</li>
+<li>BOOST_<level>_CLOSE_FRACTION</li>
+<li>BOOST_<level>_EQUAL</li>
+<li>BOOST_<level>_EQUAL_COLLECTION</li>
+<li>BOOST_<level>_EXCEPTION</li>
+<li>BOOST_<level>_GE</li>
+<li>BOOST_<level>_GT</li>
+<li>BOOST_<level>_LE</li>
+<li>BOOST_<level>_LT</li>
+<li>BOOST_<level>_MESSAGE</li>
+<li>BOOST_<level>_NE</li>
+<li>BOOST_<level>_NO_THROW</li>
+<li>BOOST_<level>_PREDICATE</li>
+<li>BOOST_<level>_SMALL</li>
+<li>BOOST_<level>_THROW</li>
+<li>BOOST_ERROR</li>
+<li>BOOST_FAIL</li>
+<li>BOOST_IS_DEFINED</li>
+</ul></td>
+<td class="content" valign="top">
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN"></a>BOOST_WARN(<span class="emphasis"><em>predicate</em></span>)
+<a name="BOOST_CHECK"></a>BOOST_CHECK(<span class="emphasis"><em>predicate</em></span>)
+<a name="BOOST_REQUIRE"></a>BOOST_REQUIRE(<span class="emphasis"><em>predicate</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to validate the predicate value. The only parameter for these tools is a boolean predicate
+ value that gets validated. It could be any expression that could be evaluated and converted to boolean value. The
+ expression gets evaluated only once, so it's safe to pass complex expression for validation.
+ </p>
+<div class="example">
+<a name=".example34"></a><p class="title"><b>Example 38. BOOST_&lt;level&gt; usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i=2;
+ BOOST_WARN( sizeof(int) == sizeof(short) );
+ BOOST_CHECK( i == 1 );
+ BOOST_REQUIRE( i &gt; 5 );
+ BOOST_CHECK( i == 6 ); // will never reach this check
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example34-output">&gt; example --log_level=warning
+Running 1 test case...
+test.cpp(9): warning in "test": condition sizeof(int) == sizeof(short) is not satisfied
+test.cpp(10): error in "test": check i == 1 failed
+test.cpp(11): fatal error in "test": critical check i &gt; 5 failed
+
+*** 2 failures detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_MESSAGE
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_BITWISE_EQUAL">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_BITWISE_EQUAL"></a>BOOST_WARN_BITWISE_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_BITWISE_EQUAL"></a>BOOST_CHECK_BITWISE_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_BITWISE_EQUAL"></a>BOOST_REQUIRE_BITWISE_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to perform bitwise comparison of two values. The check shows all positions where left and
+ right value's bits mismatch.
+ </p>
+<p class="first-line-indented">
+ The first parameter is the left compared value. The second parameter is the right compared value. Parameters are
+ not required to be of the same type, but warning is issued if their type's size does not coincide.
+ </p>
+<div class="example">
+<a name=".example33"></a><p class="title"><b>Example 39. BOOST_&lt;level&gt;_BITWISE_EQUAL usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_CHECK_BITWISE_EQUAL( (char)0x26, 0x04 );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example33-output">&gt; example
+Running 1 test case...
+test.cpp(8): error in "test": check (char)0x26 =.= 0x04 failed.
+Mismatch in a position 1
+Mismatch in a position 5
+Operands bit sizes mismatch: 8 != 32
+
+*** 1 failure detected in test suite "example" </pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_EQUAL
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_CLOSE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_CLOSE"></a>BOOST_WARN_CLOSE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_CHECK_CLOSE"></a>BOOST_CHECK_CLOSE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_REQUIRE_CLOSE"></a>BOOST_REQUIRE_CLOSE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to check on closeness using strong relationship defined by the predicate
+ <code class="computeroutput">check_is_close</code>( left, right, tolerance ). To check for the weak relationship use
+ BOOST_<level>_PREDICATE family of tools with explicit <code class="computeroutput">check_is_close</code>
+ invocation.
+ </p>
+<p>
+ The first parameter is the <span class="emphasis"><em>left</em></span> compared value. The second parameter is the
+ <span class="emphasis"><em>right</em></span> compared value. Last third parameter defines the tolerance for the comparison in
+ <a class="link" href="floating_point_comparison.html#utf.testing-tools.fpv-comparison.tolerance-selection" title="Tolerance selection considerations"><span class="bold"><strong>percentage units</strong></span></a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is required for left and right parameters to be of the same floating point type. You will need to explicitly
+ resolve any type mismatch to select which type to use for comparison.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note that to use these tools you need to include additional header floating_point_comparison.hpp.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name=".example42"></a><p class="title"><b>Example 40. BOOST_&lt;level&gt;_CLOSE usage with very small values</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/floating_point_comparison.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ double v1 = 1.23456e-10;
+ double v2 = 1.23457e-10;
+
+ BOOST_CHECK_CLOSE( v1, v2, 0.0001 );
+ // Absolute value of difference between these two values is 1e-15. They seems
+ // to be very close. But we want to checks that these values differ no more then 0.0001%
+ // of their value. And this test will fail at tolerance supplied.
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example42-output">&gt; example
+Running 1 test case...
+test.cpp(12): error in "test": difference between v1{1.23456e-010} and v2{1.23457e-010} exceeds 0.0001%
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="example">
+<a name=".example43"></a><p class="title"><b>Example 41. BOOST_&lt;level&gt;_CLOSE usage with very big values</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/floating_point_comparison.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ double v1 = 1.23456e28;
+ double v2 = 1.23457e28;
+
+ BOOST_REQUIRE_CLOSE( v1, v2, 0.001 );
+ // Absolute value of difference between these two values is 1e+23.
+ // But we are interested only that it does not exeed 0.001% of a values compared
+ // And this test will pass.
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example43-output">&gt; example
+Running 1 test case...
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_CLOSE_FRACTION, BOOST_<level>_SMALL, BOOST_<level>_EQUAL,
+ <a class="link" href="floating_point_comparison.html" title="Floating-point comparison algorithms">Floating point comparison algorithms</a>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_CLOSE_FRACTION">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_CLOSE_FRACTION"></a>BOOST_WARN_CLOSE_FRACTION(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_CHECK_CLOSE_FRACTION"></a>BOOST_CHECK_CLOSE_FRACTION(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_REQUIRE_CLOSE_FRACTION"></a>BOOST_REQUIRE_CLOSE_FRACTION(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>, <span class="emphasis"><em>tolerance</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to check on closeness using strong relationship defined by the predicate
+ <code class="computeroutput">check_is_close</code>( left, right, tolerance ). To check for the weak relationship use
+ BOOST_<level>_PREDICATE family of tools with explicit <code class="computeroutput">check_is_close</code>
+ invocation.
+ </p>
+<p>
+ The first parameter is the <span class="emphasis"><em>left</em></span> compared value. The second parameter is the
+ <span class="emphasis"><em>right</em></span> compared value. Last third parameter defines the tolerance for the comparison in
+ <a class="link" href="floating_point_comparison.html#utf.testing-tools.fpv-comparison.tolerance-selection" title="Tolerance selection considerations"><span class="bold"><strong>percentage units</strong></span></a>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is required for left and right parameters to be of the same floating point type. You will need to explicitly
+ resolve any type mismatch to select which type to use for comparison.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note that to use these tools you need to include additional header floating_point_comparison.hpp.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name=".example44"></a><p class="title"><b>Example 42. BOOST_&lt;level&gt;_CLOSE_FRACTION usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/floating_point_comparison.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ double v1 = 1.111e-10;
+ double v2 = 1.112e-10;
+
+ BOOST_CHECK_CLOSE_FRACTION( v1, v2, 0.0008999 );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example44-output">&gt; example
+Running 1 test case...
+test.cpp(12): error in "test": difference between v1{1.111e-010} and v2{1.112e-010} exceeds 0.0008999
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_CLOSE, BOOST_<level>_SMALL, BOOST_<level>_EQUAL,
+ <a class="link" href="floating_point_comparison.html" title="Floating-point comparison algorithms">Floating point comparison algorithms</a>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_EQUAL">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_EQUAL"></a>BOOST_WARN_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_EQUAL"></a>BOOST_CHECK_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_EQUAL"></a>BOOST_REQUIRE_EQUAL(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left == right ).
+ The difference is that the mismatched values are reported as well.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ It is bad idea to use these tools to compare floating point values. Use BOOST_<level>_CLOSE or
+ BOOST_<level>_CLOSE_FRACTION tools instead.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name=".example35"></a><p class="title"><b>Example 43. BOOST_&lt;level&gt;_EQUAL usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 2;
+ int j = 1;
+ BOOST_REQUIRE_EQUAL( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example35-output">&gt; example
+Running 1 test case...
+test.cpp(10): fatal error in "test": critical check i == j failed [2 != 1]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>, BOOST_<level>_CLOSE, BOOST_<level>_NE
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_EQUAL_COLLECTION">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_EQUAL_COLLECTION"></a>BOOST_WARN_EQUAL_COLLECTION(<span class="emphasis"><em>left_begin</em></span>, <span class="emphasis"><em>left_end</em></span>, <span class="emphasis"><em>right_begin</em></span>, <span class="emphasis"><em>right_end</em></span>)
+<a name="BOOST_CHECK_EQUAL_COLLECTION"></a>BOOST_CHECK_EQUAL_COLLECTION(<span class="emphasis"><em>left_begin</em></span>, <span class="emphasis"><em>left_end</em></span>, <span class="emphasis"><em>right_begin</em></span>, <span class="emphasis"><em>right_end</em></span>)
+<a name="BOOST_REQUIRE_EQUAL_COLLECTION"></a>BOOST_REQUIRE_EQUAL_COLLECTION(<span class="emphasis"><em>left_begin</em></span>, <span class="emphasis"><em>left_end</em></span>, <span class="emphasis"><em>right_begin</em></span>, <span class="emphasis"><em>right_end</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to perform an element by element comparison of two collections. They print all mismatched
+ positions, collection elements at these positions and check that the collections have the same size. The first two
+ parameters designate begin and end of the first collection. The two parameters designate begin and end of the
+ second collection.
+ </p>
+<div class="example">
+<a name=".example36"></a><p class="title"><b>Example 44. BOOST_&lt;level&gt;_EQUAL_COLLECTION usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int col1 [] = { 1, 2, 3, 4, 5, 6, 7 };
+ int col2 [] = { 1, 2, 4, 4, 5, 7, 7 };
+
+ BOOST_CHECK_EQUAL_COLLECTIONS( col1, col1+7, col2, col2+7 );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example36-output">&gt; example
+Running 1 test case...
+test.cpp(11): error in "test": check { col1, col1+7 } == { col2, col2+7 } failed.
+Mismatch in a position 2: 3 != 4
+Mismatch in a position 5: 6 != 7
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_EQUAL
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_EXCEPTION">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_EXCEPTION"></a>BOOST_WARN_EXCEPTION(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>, <span class="emphasis"><em>predicate</em></span>)
+<a name="BOOST_CHECK_EXCEPTION"></a>BOOST_CHECK_EXCEPTION(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>, <span class="emphasis"><em>predicate</em></span>)
+<a name="BOOST_REQUIRE_EXCEPTION"></a>BOOST_REQUIRE_EXCEPTION(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>, <span class="emphasis"><em>predicate</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to perform an exception detection and validation check. Tools execute the supplied expression
+ and validate that it throws an exception of supplied class (or the one derived from it) that complies with the
+ supplied predicate. If the expression throws any other unrelated exception, doesn't throw at all or
+ predicate evaluates to false, check fails. In comparison with BOOST_<level>_THROW tools these
+ allow performing more fine-grained checks. For example: make sure that an expected exception has specific
+ error message.
+ </p>
+<div class="example">
+<a name=".example37"></a><p class="title"><b>Example 45. BOOST_&lt;level&gt;_EXCEPTION usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+struct my_exception {
+ explicit my_exception( int ec = 0 ) : m_error_code( ec ) {}
+
+ int m_error_code;
+};
+
+bool is_critical( my_exception const&amp; ex ) { return ex.m_error_code &lt; 0; }
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_CHECK_EXCEPTION( throw my_exception( 1 ), my_exception, is_critical );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example37-output">&gt; example
+Running 1 test case...
+test.cpp(16): error in "test": incorrect exception my_exception is caught
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_THROW
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_GE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_GE"></a>BOOST_WARN_GE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_GE"></a>BOOST_CHECK_GE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_GE"></a>BOOST_REQUIRE_GE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left &gt;= right ).
+ The difference is that the argument values are reported as well.
+ </p>
+<div class="example">
+<a name=".example57"></a><p class="title"><b>Example 46. BOOST_&lt;level&gt;_GE usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 1;
+ int j = 4;
+ BOOST_CHECK_GE( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example57-output">&gt;example
+Running 1 test case...
+test.cpp(10): error in "test": check i &gt;= j failed [1 &lt; 4]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_LE, BOOST_<level>_LT, BOOST_<level>_GT
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_GT">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_GT"></a>BOOST_WARN_GT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_GT"></a>BOOST_CHECK_GT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_GT"></a>BOOST_REQUIRE_GT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left &gt;= right ).
+ The difference is that the argument values are reported as well.
+ </p>
+<div class="example">
+<a name=".example58"></a><p class="title"><b>Example 47. BOOST_&lt;level&gt;_GT usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 2;
+ int j = 14;
+ BOOST_CHECK_GT( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example58-output">&gt;example
+Running 1 test case...
+test.cpp(10): error in "test": check i &gt; j failed [2 &lt; 14]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_LE, BOOST_<level>_LT, BOOST_<level>_GE
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_LE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_LE"></a>BOOST_WARN_LE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_LE"></a>BOOST_CHECK_LE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_LE"></a>BOOST_REQUIRE_LE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left &lt;= right ).
+ The difference is that the argument values are reported as well.
+ </p>
+<div class="example">
+<a name=".example55"></a><p class="title"><b>Example 48. BOOST_&lt;level&gt;_LE usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 9;
+ int j = 6;
+ BOOST_CHECK_LE( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example55-output">&gt;example
+Running 1 test case...
+test.cpp(10): error in "test": check i &lt;= j failed [9 &gt; 6]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_LT, BOOST_<level>_GE, BOOST_<level>_GT
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_LT">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_LT"></a>BOOST_WARN_LT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_LT"></a>BOOST_CHECK_LT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_LT"></a>BOOST_REQUIRE_LT(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left &lt; right ).
+ The difference is that the argument values are reported as well.
+ </p>
+<div class="example">
+<a name=".example56"></a><p class="title"><b>Example 49. BOOST_&lt;level&gt;_LT usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 7;
+ int j = 7;
+ BOOST_CHECK_LT( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example56-output">&gt;example
+Running 1 test case...
+test.cpp(10): error in "test": check i &lt; j failed [7 &gt;= 7]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_LE, BOOST_<level>_GE, BOOST_<level>_GT
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_MESSAGE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_MESSAGE"></a>BOOST_WARN_MESSAGE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>message</em></span>)
+<a name="BOOST_CHECK_MESSAGE"></a>BOOST_CHECK_MESSAGE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>message</em></span>)
+<a name="BOOST_REQUIRE_MESSAGE"></a>BOOST_REQUIRE_MESSAGE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>message</em></span>)</pre>
+<p class="first-line-indented">
+ These tools perform exactly the same check as BOOST_<level> tools. The only difference is that
+ instead of generating an error/confirm message these use the supplied one.
+ </p>
+<p>
+ The first parameter is the boolean expression. The second parameter is the message reported in case of check
+ failure. The message argument can be constructed of components of any type supporting the
+ <code class="computeroutput">std::ostream&amp; operator&lt;&lt;(std::ostream&amp;)</code>.
+ </p>
+<div class="example">
+<a name=".example38"></a><p class="title"><b>Example 50. BOOST_&lt;level&gt;_MESSAGE usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+#include &lt;cmath&gt;
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ double res = std::sin( 45. );
+
+ BOOST_WARN_MESSAGE( res &gt; 1, "sin(45){" &lt;&lt; res &lt;&lt; "} is &lt;= 1. Hmm.. Strange. " );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example38-output">&gt; example --log_level=warning
+Running 1 test case...
+test.cpp(12): warning in "test": sin(45){0.850904} is &lt;= 1. Hmm.. Strange.
+
+*** No errors detected</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_NE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_NE"></a>BOOST_WARN_NE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_CHECK_NE"></a>BOOST_CHECK_NE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)
+<a name="BOOST_REQUIRE_NE"></a>BOOST_REQUIRE_NE(<span class="emphasis"><em>left</em></span>, <span class="emphasis"><em>right</em></span>)</pre>
+<p class="first-line-indented">
+ Check performed by these tools is the same as the one performed by BOOST_<level>( left != right ).
+ The difference is that the matched values are reported as well.
+ </p>
+<div class="example">
+<a name=".example54"></a><p class="title"><b>Example 51. BOOST_&lt;level&gt;_NE usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 3;
+ int j = 3;
+ BOOST_CHECK_NE( i, j );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example54-output">&gt;example
+Running 1 test case...
+test.cpp(10): error in "test": check i != j failed [3 == 3]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_EQUAL
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_NO_THROW">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_NO_THROW"></a>BOOST_WARN_NO_THROW(<span class="emphasis"><em>expression</em></span>)
+<a name="BOOST_CHECK_NO_THROW"></a>BOOST_CHECK_NO_THROW(<span class="emphasis"><em>expression</em></span>)
+<a name="BOOST_REQUIRE_NO_THROW"></a>BOOST_REQUIRE_NO_THROW(<span class="emphasis"><em>expression</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to perform a "no throw" check. Tools execute the supplied expression and validate that it does
+ not throw any exceptions. Error would be reported by the framework even if the statement appear directly in test
+ case body and throw any exception. But these tools allow proceeding further with test case in case of failure.
+ </p>
+<p>
+ If check is successful, tools may produce a confirmation message, in other case they produce an error message in
+ a form "error in &lt;test case name&gt;exception was thrown by &lt;expression&gt;.
+ </p>
+<p>
+ The only parameter is an expression to execute. You can use do-while(0) block if you want to execute more than one
+ statement.
+ </p>
+<div class="example">
+<a name=".example39"></a><p class="title"><b>Example 52. BOOST_&lt;level&gt;_NO_THROW usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+class my_exception{};
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_CHECK_NO_THROW( throw my_exception() );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example39-output">&gt; example
+Running 1 test case...
+test.cpp(10): error in "test": exception thrown by throw my_exception()
+
+*** 1 failure detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_THROW
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_PREDICATE">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_PREDICATE"></a>BOOST_WARN_PREDICATE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>arguments_list</em></span>)
+<a name="BOOST_CHECK_PREDICATE"></a>BOOST_CHECK_PREDICATE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>arguments_list</em></span>)
+<a name="BOOST_REQUIRE_PREDICATE"></a>BOOST_REQUIRE_PREDICATE(<span class="emphasis"><em>predicate</em></span>, <span class="emphasis"><em>arguments_list</em></span>)</pre>
+<p class="first-line-indented">
+ These are generic tools used to validate an arbitrary supplied predicate functor (there is a compile time limit on
+ predicate arity defined by the configurable macro <code class="computeroutput">BOOST_TEST_MAX_PREDICATE_ARITY</code>). To
+ validate zero arity predicate use BOOST_<level> tools. In other cases prefer theses tools. The
+ advantage of these tools is that they show arguments values in case of predicate failure.
+ </p>
+<p>
+ The first parameter is the predicate itself. The second parameter is the list of predicate arguments each wrapped
+ in round brackets (BOOST_PP sequence format).
+ </p>
+<div class="example">
+<a name=".example40"></a><p class="title"><b>Example 53. BOOST_&lt;level&gt;_PREDICATE usage</b></p>
+<div class="example-contents">
+<p>
+ Note difference in error log from
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+bool moo( int arg1, int arg2, int mod ) { return ((arg1+arg2) % mod) == 0; }
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 17;
+ int j = 15;
+ unit_test_log.set_threshold_level( log_warnings );
+ BOOST_WARN( moo( 12,i,j ) );
+ BOOST_WARN_PREDICATE( moo, (12)(i)(j) );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example40-output">&gt; example
+Running 1 test case...
+test.cpp(14): warning in "test": condition moo( 12,i,j ) is not satisfied
+test.cpp(15): warning in "test": condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 )
+
+*** No errors detected</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_SMALL">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_SMALL"></a>BOOST_WARN_SMALL(<span class="emphasis"><em>value</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_CHECK_SMALL"></a>BOOST_CHECK_SMALL(<span class="emphasis"><em>value</em></span>, <span class="emphasis"><em>tolerance</em></span>)
+<a name="BOOST_REQUIRE_SMALL"></a>BOOST_REQUIRE_SMALL(<span class="emphasis"><em>value</em></span>, <span class="emphasis"><em>tolerance</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to check that supplied value is small enough. The "smallness" is defined by absolute value
+ of the tolerance supplied as a second argument. Use these tools with caution. To compare to values on closeness
+ it's preferable to use BOOST_<level>_CLOSE tools instead.
+ </p>
+<p class="first-line-indented">
+ The first parameter is the value to check. The second parameter is the tolerance.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note that to use these tools you need to include additional header floating_point_comparison.hpp.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name=".example41"></a><p class="title"><b>Example 54. BOOST_&lt;level&gt;_SMALL usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/floating_point_comparison.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ double v = -1.23456e-3;
+
+ BOOST_CHECK_SMALL( v, 0.000001 );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example41-output">&gt; example
+Running 1 test case...
+test.cpp(11): error in "test": absolute value of v{-0.00123456} exceeds 1e-006
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>_CLOSE, BOOST_<level>_CLOSE_FRACTION,
+ <a class="link" href="floating_point_comparison.html" title="Floating-point comparison algorithms">Floating point comparison algorithms</a>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_&lt;level&gt;_THROW">
+<pre class="inline-synopsis">
+<a name="BOOST_WARN_THROW"></a>BOOST_WARN_THROW(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>)
+<a name="BOOST_CHECK_THROW"></a>BOOST_CHECK_THROW(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>)
+<a name="BOOST_REQUIRE_THROW"></a>BOOST_REQUIRE_THROW(<span class="emphasis"><em>expression</em></span>, <span class="emphasis"><em>exception</em></span>)</pre>
+<p class="first-line-indented">
+ These tools are used to perform an exception detection check. Tools execute the supplied expression and validate
+ that it throws an exception of supplied class (or the one derived from it) or it's child. If the statement
+ throws any other unrelated exception or doesn't throw at all, check fails.
+ </p>
+<p>
+ If check is successful, the tool produces a confirmation message, in other case it produces an error message in a
+ form "error in <em class="replaceable"><code>test case name</code></em>: exception <em class="replaceable"><code>exception</code></em> expected.
+ </p>
+<p class="first-line-indented">
+ The first parameter is the expression to execute. Use do-while(0) block if you want to execute more than one
+ statement. The second parameter is an expected exception.
+ </p>
+<div class="example">
+<a name=".example45"></a><p class="title"><b>Example 55. BOOST_&lt;level&gt;_THROW usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+class my_exception{};
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ int i = 0;
+ BOOST_CHECK_THROW( i++, my_exception );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example45-output">&gt; example
+Running 1 test case...
+test.cpp(11): error in "test": exception my_exception is expected
+
+*** 1 failure detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>NO_THROW
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_ERROR">
+<pre class="inline-synopsis">
+<a name="BOOST_ERROR"></a>BOOST_ERROR(<span class="emphasis"><em>message</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_ERROR tool behave the same way as <code class="computeroutput">BOOST_CHECK_MESSAGE( false, message )</code>. This tool is used for
+ an unconditional error counter increasing and message logging.
+ </p>
+<p>
+ The only tool's parameter is an error message to log.
+ </p>
+<div class="example">
+<a name=".example46"></a><p class="title"><b>Example 56. BOOST_ERROR usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_ERROR( "Nothing to test" );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example46-output">&gt; example
+Running 1 test case...
+test.cpp(8): error in "test": Nothing to test
+
+*** 1 failure detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_FAIL">
+<pre class="inline-synopsis">
+<a name="BOOST_FAIL"></a>BOOST_FAIL(<span class="emphasis"><em>message</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_FAIL behave the same way as <code class="computeroutput">BOOST_REQUIRE_MESSAGE( false, message )</code>. This tool is used for an
+ unconditional error counter increasing, message logging and the current test case aborting.
+ </p>
+<p>
+ The only tool's parameter is an error message to log.
+ </p>
+<div class="example">
+<a name=".example47"></a><p class="title"><b>Example 57. BOOST_FAIL usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_FAIL( "Test is not ready yet" );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example47-output">&gt; example
+Running 1 test case...
+test.cpp(8): fatal error in "test": Test is not ready yet
+
+*** 1 failure detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>
+ </div>
+<div class="entry" id="utf.testing-tools.reference.body.BOOST_IS_DEFINED">
+<pre class="inline-synopsis">
+<a name="BOOST_IS_DEFINED"></a>BOOST_IS_DEFINED(<span class="emphasis"><em>symbol</em></span>)</pre>
+<p class="first-line-indented">
+ Unlike the rest of the tools in the toolbox this tool does not perform the logging itself. Its only purpose
+ is to check at runtime whether or not the supplied preprocessor symbol is defined. Use it in combination with
+ BOOST_<level> to perform and log validation. Macros of any arity could be checked. To check the
+ macro definition with non-zero arity specify dummy arguments for it. See below for example.
+ </p>
+<p>
+ The only tool's parameter is a preprocessor symbol that gets validated.
+ </p>
+<div class="example">
+<a name=".example48"></a><p class="title"><b>Example 58. BOOST_IS_DEFINED usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test )
+{
+ BOOST_CHECK( BOOST_IS_DEFINED(SYMBOL1) );
+ BOOST_CHECK( BOOST_IS_DEFINED(SYMBOL2(arg)) );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example48-output">&gt; example
+Running 1 test case...
+test.cpp(8): error in "test": check ::boost::test_tools::tt_detail::is_defined_impl( "SYMBOL1", "= SYMBOL1" ) failed
+test.cpp(9): error in "test": check ::boost::test_tools::tt_detail::is_defined_impl( "SYMBOL2(arg)", "= SYMBOL2(arg)" ) failed
+
+*** 2 failures detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break"><span class="inline-ref-see-also">See also: </span>
+ BOOST_<level>
+ </div>
+</td>
+</tr></table>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="floating_point_comparison.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing-tools.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/tutorials.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/tutorials.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The unit test framework tutorials</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="intro.html" title="Introduction">
+<link rel="next" href="../tutorials/intro-in-testing.html" title="Introduction into testing or why testing is worth the effort">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Tutorials</b><a href="compilation.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../tutorials/intro-in-testing.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.tutorials"></a>The unit test framework tutorials</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Introduction into testing</dt>
+<dt>Hello the testing world</dt>
+<dt>Boost.Test driven development</dt>
+</dl>
+</div>
+<p class="first-line-indented">
+ You think writing tests is difficult, annoying and fruitless work? I beg to differ. Read through these tutorials
+ and I am sure you will agree.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../tutorials/intro-in-testing.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recomendations.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recomendations.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The unit test framework usage recomendations</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="testing-tools/reference.html" title="The UTF testing tools reference">
+<link rel="next" href="usage-recomendations/generic.html" title="Generic usage recommendations">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Usage recomendations</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="usage-recomendations/generic.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.usage-recomendations"></a>The unit test framework usage recomendations</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Generic</dt>
+<dt>Microsoft Visual Studio .NET users specific</dt>
+<dt>Command-line (non-GUI) users specific</dt>
+</dl>
+</div>
+<p class="first-line-indented">
+ On following pages collected tips and recommendations on how to use and apply the <acronym class="acronym">UTF</acronym> in your real life practice.
+ You don't necessarily need to follow them, but I found them handy.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="testing-tools/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage-recomendations/generic.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recomendations/command-line-specific.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recomendations/command-line-specific.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Command line usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recomendations.html" title="The unit test framework usage recomendations">
+<link rel="prev" href="dot-net-specific.html" title="Microsoft Visual Studio .NET usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recomendations &gt; <b>Command-line (non-GUI) users specific</b>
+</td>
+<td><div class="spirit-nav">Prev</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recomendations.command-line-specific"></a>Command line usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="command-line-specific.html#id536050">
+ If you got fatal exception somewhere within test case, make program generate coredump by adding extra command
+ line argument
+ </a>
+</dt>
+<dt> <a href="command-line-specific.html#id536081">
+ How to use test module build with Boost.Test framework under management of automated regression test facilities?
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id536050"></a><a name="id536052"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you got fatal exception somewhere within test case, make program generate coredump by adding extra command
+ line argument
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ If you got "memory access violation" message (or any other message indication fatal or system error) when you
+ run you test, to get more information about the error location add --catch_system_errors=no to the test run
+ command line. Now run the test again and it will create a coredump you could analyze using you preferable
+ debugger. Or run it under debugger in a first place and it will break at the point of failure.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id536081"></a><a name="id536083"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ How to use test module build with Boost.Test framework under management of automated regression test facilities?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ My first recommendation is to make sure that the test framework catches all fatal errors by adding argument
+ --catch_system_error=yes to all test modules invocations. Otherwise test program may produce unwanted
+ dialogs (depends on compiler and OS) that will halt you regression tests run. The second recommendation is to
+ suppress result report output by adding --report_level=no argument and test log output by adding
+ --log_level=nothing argument, so that test module won't produce undesirable output no one is going to look at
+ anyway. I recommend to rely only on result code that will be consistent for all test programs. An
+ alternative to my second recommendation is direct both log and report to separate file you could analyze
+ later on. Moreover you can make Boost.Test to produce them in XML format using output_format=XML and use some
+ automated tool that will format this information as you like.
+ </p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="dot-net-specific.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recomendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recomendations/dot-net-specific.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recomendations/dot-net-specific.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Microsoft Visual Studio .NET usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recomendations.html" title="The unit test framework usage recomendations">
+<link rel="prev" href="generic.html" title="Generic usage recommendations">
+<link rel="next" href="command-line-specific.html" title="Command line usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recomendations &gt; <b>Microsoft Visual Studio .NET users specific</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="command-line-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recomendations.dot-net-specific"></a>Microsoft Visual Studio .NET usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="dot-net-specific.html#id535872">
+ Use custom build step to automatically start test program after compilation
+ </a>
+</dt>
+<dt> <a href="dot-net-specific.html#id535975">
+ If you got fatal exception somewhere within test case, make debugger break at the point the failure by adding
+ extra command line argument
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535872"></a><a name="id535874"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Use custom build step to automatically start test program after compilation
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ I found it most convenient to put test program execution as a post-build step in compilation. To do so use
+ project property page:
+ </p>
+<div class="mediaobject"><img src="../../../img/post_build_event.jpg"></div>
+<p class="first-line-indented">
+ Full command you need in "Command Line" field is:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">"$(TargetDir)\$(TargetName).exe"</code> --result_code=no --report_level=no </p></div>
+<p class="first-line-indented">
+ Note that both report level and result code are suppressed. This way the only output you may see from this
+ command are possible runtime errors. But the best part is that you could jump through these errors using usual
+ keyboard shortcuts/mouse clicks you use for compilation error analysis:
+ </p>
+<div class="mediaobject"><img src="../../../img/post_build_out.jpg"></div>
+</td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535975"></a><a name="id535977"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you got fatal exception somewhere within test case, make debugger break at the point the failure by adding
+ extra command line argument
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ If you got "memory access violation" message (or any other message indication fatal or system error) when you
+ run you test, to get more information of error location add --catch_system_errors=no to the test run command
+ line:
+ </p>
+<div class="mediaobject"><img src="../../../img/run_args.jpg"></div>
+<p class="first-line-indented">
+ Now run the test again under debugger and it will break at the point of failure.
+ </p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recomendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="command-line-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recomendations/generic.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recomendations/generic.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,176 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
+<link rel="start" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recomendations.html" title="The unit test framework usage recomendations">
+<link rel="prev" href="../usage-recomendations.html" title="The unit test framework usage recomendations">
+<link rel="next" href="dot-net-specific.html" title="Microsoft Visual Studio .NET usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recomendations &gt; <b>Generic</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="dot-net-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recomendations.generic"></a>Generic usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="generic.html#id535651">
+ Prefer offline compiled libraries to the inline included components
+ </a>
+</dt>
+<dt> <a href="generic.html#id535689">
+ If you use only free function based test cases advance to the automatic registration facility
+ </a>
+</dt>
+<dt> <a href="generic.html#id535714">
+ To find location of first error reported by test tool within reused template function, use special hook within
+ framework headers
+ </a>
+</dt>
+<dt> <a href="generic.html#id535760">
+ To test reusable template base component with different template parameter use test case template facility
+ </a>
+</dt>
+<dt> <a href="generic.html#id535818">
+ Prefer BOOST_CHECK_EQUAL to BOOST_CHECK
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535651"></a><a name="id535654"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Prefer offline compiled libraries to the inline included components
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ If you are just want to write quick simple test in environment where you never used Boost.Test before - yes,
+ use included components. But if you plan to use Boost.Test on permanent basis, small investment of time needed
+ to build (if not build yet), install and change you makefiles/project settings will soon return to you in a
+ form of shorter compilation time. Why do you need to make your compiler do the same work over and over again?
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535689"></a><a name="id535692"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you use only free function based test cases advance to the automatic registration facility
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ It's really easy to switch to automatic registration. And you don't need to worry about forgotten test case
+ anymore
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535714"></a><a name="id535717"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ To find location of first error reported by test tool within reused template function, use special hook within
+ framework headers
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ In some cases you are reusing the same template based code from within one test case (actually I recommend
+ better solution in such case- see below). Now if an error gets reported by the test tool within that reused
+ code you may have difficulty locating were exactly error occurred. To address this issue you could either a add
+ <a class="link" href="../user-guide/test-output/BOOST_TEST_MESSAGE.html" title="BOOST_TEST_MESSAGE">BOOST_TEST_MESSAGE</a> statements in
+ templated code that log current type id of template parameters or you can use special hook located in
+ unit_test_result.hpp called first_failed_assertion(). If you set a breakpoint right on the line where this
+ function is defined you will be able to unroll the stack and see where error actually occurred.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535760"></a><a name="id535762"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ To test reusable template base component with different template parameter use test case template facility
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ If you writing unit test for generic reusable component you may have a need to test it against set of different
+ template parameter types . Most probably you will end up with a code like this:
+ </p>
+<pre class="programlisting">template&lt;typename TestType&gt;
+void
+specific_type_test( TestType* = 0 )
+{
+ MyComponent&lt;TestType&gt; c;
+ ... // here we perform actual testing
+}
+
+void my_component_test()
+{
+ specific_type_test( (int*)0 );
+ specific_type_test( (float*)0 );
+ specific_type_test( (UDT*)0 );
+ ...
+}
+</pre>
+<p class="first-line-indented">
+ This is namely the situation where you would use test case template facility. It's not only simplify this kind
+ of unit testing by automating some of the work, in addition every argument type gets tested separately under
+ unit test monitor. As a result if one of types produce exception or non-fatal error you may still continue and
+ get results from testing with other types.
+ </p>
+</td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id535818"></a><a name="id535820"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Prefer BOOST_CHECK_EQUAL to BOOST_CHECK
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ Even though BOOSK_CHECK tool is most generic and allows to validate any bool convertible expression, I would
+ recommend to use, if possible, more specific tools dedicated to the task. For example if you need you validate
+ some variable vs. some expected value use BOOST_CHECK_EQUAL instead. The main advantage is that in case of
+ failure you will see the mismatched value - the information most useful for error identification. The same
+ applies to other tools supplied by the framework.
+ </p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../usage-recomendations.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recomendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="dot-net-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recommendations.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recommendations.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The unit test framework usage recommendations</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="testing-tools/reference.html" title="The UTF testing tools reference">
+<link rel="next" href="usage-recommendations/generic.html" title="Generic usage recommendations">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>Usage recommendations</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="usage-recommendations/generic.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.usage-recommendations"></a>The unit test framework usage recommendations</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Generic</dt>
+<dt>Microsoft Visual Studio .NET users specific</dt>
+<dt>Command-line (non-GUI) users specific</dt>
+</dl>
+</div>
+<p class="first-line-indented">
+ On following pages collected tips and recommendations on how to use and apply the <acronym class="acronym">UTF</acronym> in your real life practice.
+ You don't necessarily need to follow them, but I found them handy.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="testing-tools/reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage-recommendations/generic.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recommendations/command-line-specific.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recommendations/command-line-specific.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Command line usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recommendations.html" title="The unit test framework usage recommendations">
+<link rel="prev" href="dot-net-specific.html" title="Microsoft Visual Studio .NET usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recommendations &gt; <b>Command-line (non-GUI) users specific</b>
+</td>
+<td><div class="spirit-nav">Prev</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recommendations.command-line-specific"></a>Command line usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="command-line-specific.html#id663841">
+ If you got fatal exception somewhere within test case, make program generate coredump by adding extra command
+ line argument
+ </a>
+</dt>
+<dt> <a href="command-line-specific.html#id663872">
+ How to use test module build with Boost.Test framework under management of automated regression test facilities?
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663841"></a><a name="id663843"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you got fatal exception somewhere within test case, make program generate coredump by adding extra command
+ line argument
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ If you got "memory access violation" message (or any other message indication fatal or system error) when you
+ run you test, to get more information about the error location add --catch_system_errors=no to the test run
+ command line. Now run the test again and it will create a coredump you could analyze using you preferable
+ debugger. Or run it under debugger in a first place and it will break at the point of failure.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663872"></a><a name="id663874"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ How to use test module build with Boost.Test framework under management of automated regression test facilities?
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ My first recommendation is to make sure that the test framework catches all fatal errors by adding argument
+ --catch_system_error=yes to all test modules invocations. Otherwise test program may produce unwanted
+ dialogs (depends on compiler and OS) that will halt you regression tests run. The second recommendation is to
+ suppress result report output by adding --report_level=no argument and test log output by adding
+ --log_level=nothing argument, so that test module won't produce undesirable output no one is going to look at
+ anyway. I recommend relying only on result code that will be consistent for all test programs. An
+ alternative to my second recommendation is direct both log and report to separate file you could analyze
+ later on. Moreover you can make Boost.Test to produce them in XML format using output_format=XML and use some
+ automated tool that will format this information as you like.
+ </p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="dot-net-specific.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recommendations/dot-net-specific.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recommendations/dot-net-specific.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Microsoft Visual Studio .NET usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recommendations.html" title="The unit test framework usage recommendations">
+<link rel="prev" href="generic.html" title="Generic usage recommendations">
+<link rel="next" href="command-line-specific.html" title="Command line usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recommendations &gt; <b>Microsoft Visual Studio .NET users specific</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="command-line-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recommendations.dot-net-specific"></a>Microsoft Visual Studio .NET usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="dot-net-specific.html#id663663">
+ Use custom build step to automatically start test program after compilation
+ </a>
+</dt>
+<dt> <a href="dot-net-specific.html#id663766">
+ If you got fatal exception somewhere within test case, make debugger break at the point the failure by adding
+ extra command line argument
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663663"></a><a name="id663665"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Use custom build step to automatically start test program after compilation
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ I found it most convenient to put test program execution as a post-build step in compilation. To do so use
+ project property page:
+ </p>
+<div class="mediaobject"><img src="../../../img/post_build_event.jpg"></div>
+<p class="first-line-indented">
+ Full command you need in "Command Line" field is:
+ </p>
+<div class="cmdsynopsis"><p><code class="command">"$(TargetDir)\$(TargetName).exe"</code> --result_code=no --report_level=no </p></div>
+<p class="first-line-indented">
+ Note that both report level and result code are suppressed. This way the only output you may see from this
+ command are possible runtime errors. But the best part is that you could jump through these errors using usual
+ keyboard shortcuts/mouse clicks you use for compilation error analysis:
+ </p>
+<div class="mediaobject"><img src="../../../img/post_build_out.jpg"></div>
+</td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663766"></a><a name="id663768"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you got fatal exception somewhere within test case, make debugger break at the point the failure by adding
+ extra command line argument
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ If you got "memory access violation" message (or any other message indication fatal or system error) when you
+ run you test, to get more information of error location add --catch_system_errors=no to the test run command
+ line:
+ </p>
+<div class="mediaobject"><img src="../../../img/run_args.jpg"></div>
+<p class="first-line-indented">
+ Now run the test again under debugger and it will break at the point of failure.
+ </p>
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="command-line-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/usage-recommendations/generic.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/usage-recommendations/generic.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,176 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic usage recommendations</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-recommendations.html" title="The unit test framework usage recommendations">
+<link rel="prev" href="../usage-recommendations.html" title="The unit test framework usage recommendations">
+<link rel="next" href="dot-net-specific.html" title="Microsoft Visual Studio .NET usage recommendations">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; Usage recommendations &gt; <b>Generic</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="dot-net-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.usage-recommendations.generic"></a>Generic usage recommendations</h4></div></div></div>
+<div class="qandaset">
+<dl>
+<dt> <a href="generic.html#id663440">
+ Prefer offline compiled libraries to the inline included components
+ </a>
+</dt>
+<dt> <a href="generic.html#id663471">
+ If you use only free function based test cases advance to the automatic registration facility
+ </a>
+</dt>
+<dt> <a href="generic.html#id663496">
+ To find location of first error reported by test tool within reused template function, use special hook within
+ framework headers
+ </a>
+</dt>
+<dt> <a href="generic.html#id663542">
+ To test reusable template base component with different template parameter use test case template facility
+ </a>
+</dt>
+<dt> <a href="generic.html#id663600">
+ Prefer BOOST_CHECK_EQUAL to BOOST_CHECK
+ </a>
+</dt>
+</dl>
+<table border="0" summary="Q and A Set">
+<col align="left" width="1%">
+<tbody>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663440"></a><a name="id663443"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Prefer offline compiled libraries to the inline included components
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ If you are just want to write quick simple test in environment where you never used Boost.Test before - yes,
+ use included components. But if you plan to use Boost.Test on permanent basis, small investment of time needed
+ to build (if not build yet), install and change you makefiles/project settings will soon return to you in a
+ form of shorter compilation time. Why do you need to make your compiler do the same work over and over again?
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663471"></a><a name="id663473"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ If you use only free function based test cases advance to the automatic registration facility
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ It's really easy to switch to automatic registration. And you don't need to worry about forgotten test case
+ anymore
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663496"></a><a name="id663498"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ To find location of first error reported by test tool within reused template function, use special hook within
+ framework headers
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ In some cases you are reusing the same template based code from within one test case (actually I recommend
+ better solution in such case- see below). Now if an error gets reported by the test tool within that reused
+ code you may have difficulty locating were exactly error occurred. To address this issue you could either a add
+ <a class="link" href="../user-guide/test-output/BOOST_TEST_MESSAGE.html" title="BOOST_TEST_MESSAGE">BOOST_TEST_MESSAGE</a> statements in
+ templated code that log current type id of template parameters or you can use special hook located in
+ unit_test_result.hpp called first_failed_assertion(). If you set a breakpoint right on the line where this
+ function is defined you will be able to unroll the stack and see where error actually occurred.
+ </p></td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663542"></a><a name="id663545"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ To test reusable template base component with different template parameter use test case template facility
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top">
+<p class="first-line-indented">
+ If you writing unit test for generic reusable component you may have a need to test it against set of different
+ template parameter types . Most probably you will end up with a code like this:
+ </p>
+<pre class="programlisting">template&lt;typename TestType&gt;
+void
+specific_type_test( TestType* = 0 )
+{
+ MyComponent&lt;TestType&gt; c;
+ ... // here we perform actual testing
+}
+
+void my_component_test()
+{
+ specific_type_test( (int*)0 );
+ specific_type_test( (float*)0 );
+ specific_type_test( (UDT*)0 );
+ ...
+}
+</pre>
+<p class="first-line-indented">
+ This is namely the situation where you would use test case template facility. It not only simplifies this kind
+ of unit testing by automating some of the work, in addition every argument type gets tested separately under
+ unit test monitor. As a result if one of types produce exception or non-fatal error you may still continue and
+ get results from testing with other types.
+ </p>
+</td>
+</tr>
+<tr class="question">
+<td align="left" valign="top">
+<a name="id663600"></a><a name="id663603"></a>
+</td>
+<td align="left" valign="top"><b><p>
+ Prefer BOOST_CHECK_EQUAL to BOOST_CHECK
+ </p></b></td>
+</tr>
+<tr class="answer">
+<td align="left" valign="top"></td>
+<td align="left" valign="top"><p class="first-line-indented">
+ Even though BOOSK_CHECK tool is most generic and allows validating any bool convertible expression, I would
+ recommend using, if possible, more specific tools dedicated to the task. For example if you need you validate
+ some variable vs. some expected value use BOOST_CHECK_EQUAL instead. The main advantage is that in case of
+ failure you will see the mismatched value - the information most useful for error identification. The same
+ applies to other tools supplied by the framework.
+ </p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-recommendations.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="dot-net-specific.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,283 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Unit Test Framework: User's guide</title>
+<link rel="stylesheet" href="../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../index.html" title="Boost Test Library">
+<link rel="up" href="../utf.html" title="Part IV. Boost Test Library: The Unit Test Framework">
+<link rel="prev" href="compilation/direct-include.html" title="Including the UTF directly into your test module">
+<link rel="next" href="user-guide/usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<script language="JavaScript1.2" src="../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; <b>User's guide</b><a href="testing-tools.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="user-guide/usage-variants.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="utf.user-guide"></a>Unit Test Framework: User's guide</h2></div></div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt>Usage variants</dt>
+<dl>
+<dt>Static library</dt>
+<dt>Dynamic library</dt>
+<dt>Single header</dt>
+<dt>External test runner</dt>
+</dl>
+<dt>Supplied test runners</dt>
+<dl><dt>External test runner</dt></dl>
+<dt>Test module initialization</dt>
+<dt>Test organization</dt>
+<dl>
+<dt>Nullary function based test case</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Unary function based test case</dt>
+<dt>Test case template</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+</dl>
+<dt>Test suite</dt>
+<dl>
+<dt>Manual registration</dt>
+<dt>Automated registration</dt>
+<dt>Master Test Suite</dt>
+</dl>
+<dt>Expected failures specification</dt>
+</dl>
+<dt>Fixtures</dt>
+<dl>
+<dt>Generic model</dt>
+<dt>Per test case</dt>
+<dt>Test suite shared</dt>
+<dt>Global fixture</dt>
+</dl>
+<dt>Test Output </dt>
+<dl>
+<dt>Test log</dt>
+<dl>
+<dt>BOOST_TEST_MESSAGE</dt>
+<dt>BOOST_TEST_CHECKPOINT</dt>
+<dt>BOOST_TEST_PASSPOINT</dt>
+<dt>Logging floating point type numbers</dt>
+<dt>Human readable format</dt>
+<dt>XML based log output format</dt>
+<dt>Compile time configuration</dt>
+</dl>
+<dt>Test report output</dt>
+<dt>Progress display</dt>
+</dl>
+<dt>Runtime configuration </dt>
+<dl>
+<dt>Run by name</dt>
+<dt>Parameters reference</dt>
+</dl>
+</dl>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.intro"></a>Introduction or what's your name?</h4></div></div></div>
+<p class="first-line-indented">
+ Without further ado, let's define terms regularly used by the <acronym class="acronym">UTF</acronym>.
+ </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="test-module.def"></a><span class="term"><em class="firstterm">The test module</em></span></p></td>
+<td>
+ This is a single binary that performs the test. Physically a test module consists of one or more test source files,
+ which can be built into an executable or a dynamic library. A test module that consists of a single test source
+ file is called <em class="firstterm"><a name="single-file-test-module.def"></a>single-file test module</em>. Otherwise
+ it's called <em class="firstterm"><a name="multi-file-test-module.def"></a>multi-file test module</em>. Logically a test
+ module consists of four parts: <a class="link" href="user-guide.html#test-setup.def">test setup</a> (or test initialization),
+ <a class="link" href="user-guide.html#test-body.def">test body</a>, <a class="link" href="user-guide.html#test-cleanup.def">test cleanup</a> and
+ <a class="link" href="user-guide.html#test-runner.def">test runner</a>. The test runner part is optional. If a test module is built as
+ an executable the test runner is built-in. If a test module is built as a dynamic library, it is run by an
+ external test runner.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-body.def"></a><span class="term"><em class="firstterm">The test body</em></span></p></td>
+<td>
+ This is the part of a test module that actually performs the test.
+ Logically test body is a collection of <a class="link" href="user-guide.html#test-assertion.def">test assertions</a> wrapped in
+ <a class="link" href="user-guide.html#test-case.def">test cases</a>, which are organized in a <a class="link" href="user-guide.html#test-tree.def">test tree
+ </a>.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-tree.def"></a><span class="term"><em class="firstterm">The test tree</em></span></p></td>
+<td>
+ This is a hierarchical structure of <a class="link" href="user-guide.html#test-suite.def">test suites</a> (non-leaf nodes) and
+ <a class="link" href="user-guide.html#test-case.def">test cases</a> (leaf nodes).
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-unit.def"></a><span class="term"><em class="firstterm">The test unit</em></span></p></td>
+<td>
+ This is a collective name when referred to either <a class="link" href="user-guide.html#test-suite.def">test suite</a> or
+ <a class="link" href="user-guide.html#test-case.def">test case</a>
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-assertion.def"></a><span class="term"><em class="firstterm">Test assertion</em></span></p></td>
+<td>
+<p>
+ This is a single binary condition (binary in a sense that is has two outcomes: pass and fail) checked
+ by a test module.
+ </p>
+<p>
+ There are different schools of thought on how many test assertions a test case should consist of. Two polar
+ positions are the one advocated by TDD followers - one assertion per test case; and opposite of this - all test
+ assertions within single test case - advocated by those only interested in the first error in a
+ test module. The <acronym class="acronym">UTF</acronym> supports both approaches.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><a name="test-case.def"></a><span class="term"><em class="firstterm">The test case</em></span></p></td>
+<td>
+ This is an independently monitored function within a test module that
+ consists of one or more test assertions. The term "independently monitored" in the definition above is
+ used to emphasize the fact, that all test cases are monitored independently. An uncaught exception or other normal
+ test case execution termination doesn't cause the testing to cease. Instead the error is caught by the test
+ case execution monitor, reported by the <acronym class="acronym">UTF</acronym> and testing proceeds to the next test case. Later on you are going
+ to see that this is on of the primary reasons to prefer multiple small test cases to a single big test function.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-suite.def"></a><span class="term"><em class="firstterm">The test suite</em></span></p></td>
+<td>
+<p>
+ This is a container for one or more test cases. The test suite gives you an ability to group
+ test cases into a single referable entity. There are various reasons why you may opt to do so, including:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>To group test cases per subsystems of the unit being tested.</li>
+<li>To share test case setup/cleanup code.</li>
+<li>To run selected group of test cases only.</li>
+<li>To see test report split by groups of test cases</li>
+<li>To skip groups of test cases based on the result of another test unit in a test tree.</li>
+</ul></div>
+<p>
+ A test suite can also contain other test suites, thus allowing a hierarchical test tree structure to be formed.
+ The <acronym class="acronym">UTF</acronym> requires the test tree to contain at least one test suite with at least one test case. The top level
+ test suite - root node of the test tree - is called the master test suite.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><a name="test-setup.def"></a><span class="term"><em class="firstterm">The test setup</em></span></p></td>
+<td>
+<p>
+ This is the part of a test module that is responsible for the test
+ preparation. It includes the following operations that take place prior to a start of the test:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ The <acronym class="acronym">UTF</acronym> initialization
+ </li>
+<li>
+ Test tree construction
+ </li>
+<li>
+ Global test module setup code
+ </li>
+</ul></div>
+<p>
+ Per test case" setup code, invoked for every test case it's assigned to, is also attributed to the
+ test initialization, even though it's executed as a part of the test case.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><a name="test-cleanup.def"></a><span class="term"><em class="firstterm">The test cleanup</em></span></p></td>
+<td>
+ This is the part of test module that is responsible for cleanup operations.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-fixture.def"></a><span class="term"><em class="firstterm">The test fixture</em></span></p></td>
+<td>
+ Matching setup and cleanup operations are frequently united into a single entity called test fixture.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-runner.def"></a><span class="term"><em class="firstterm">The test runner</em></span></p></td>
+<td>
+<p>
+ This is an "executive manager" that runs the show. The test runner's functionality should include
+ the following interfaces and operations:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ Entry point to a test module. This is usually either the function main() itself or single function that can be
+ invoked from it to start testing.
+ </li>
+<li>
+ Initialize the <acronym class="acronym">UTF</acronym> based on runtime parameters
+ </li>
+<li>
+ Select an output media for the test log and the test results report
+ </li>
+<li>
+ Select test cases to execute based on runtime parameters
+ </li>
+<li>
+ Execute all or selected test cases
+ </li>
+<li>
+ Produce the test results report
+ </li>
+<li>
+ Generate a test module result code.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ An advanced test runner may provide additional features, including interactive <acronym class="acronym">GUI</acronym> interfaces,
+ test coverage and profiling support.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><a name="test-log.def"></a><span class="term"><em class="firstterm">The test log</em></span></p></td>
+<td>
+ This is the record of all events that occur during the testing.
+ </td>
+</tr>
+<tr>
+<td><p><a name="test-results-report.def"></a><span class="term"><em class="firstterm">The test results report</em></span></p></td>
+<td>
+ This is the report produced by the <acronym class="acronym">UTF</acronym> after the testing is completed, that indicates which test cases/test
+ suites passed and which failed.
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compilation/direct-include.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../utf.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="user-guide/usage-variants.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/fixture.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/fixture.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Fixtures or let me repeat myself</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="test-organization/expected-failures.html" title="Expected failures specification">
+<link rel="next" href="fixture/model.html" title="Generic fixture model">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Fixtures</b><a href="test-output.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="fixture/model.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.fixture"></a>Fixtures or let me repeat myself</h4></div></div></div>
+<p class="first-line-indented">
+ In general terms a test fixture or test context is the collection of one or more of the following items, required
+ to perform the test:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>preconditions</li>
+<li>particular states of tested unites</li>
+<li>necessary cleanup procedures</li>
+</ul></div>
+<p class="first-line-indented">
+ Though these tasks are encountered in many if not all test cases, what makes a test fixture different is
+ repetition. Where a normal test case implementation does all preparatory and cleanup work itself, a test fixture
+ allows this to be implemented in a separate reusable unit.
+ </p>
+<p class="first-line-indented">
+ With introduction of extreme programming (XP), the testing style, that require test setup/cleanup repetition, is
+ becoming more and more popular. Single XP adopted test modules may contain hundreds of single assertion test cases,
+ many requiring very similar test setup/cleanup. This is the problem that the test fixture is designed to solve.
+ </p>
+<p class="first-line-indented">
+ In practice a test fixture usually is a combination of setup and teardown functions, associated with test case.
+ The former serves the purposes of test setup; the later is dedicated to the cleanup tasks. Ideally it's
+ preferable that a test module author is able to define variables used in fixtures on the stack and the same time
+ is able to refer to them directly in test case.
+ </p>
+<p class="first-line-indented">
+ It's important to understand that C++ provides a way to implement a straightforward test fixture solution
+ that almost satisfies our requirements without any extra support from the test framework. This may explain why
+ test fixtures support was introduced in the <acronym class="acronym">UTF</acronym> somewhat late in its life cycle. Here is how simple test module
+ with such a fixture may look like:
+ </p>
+<pre class="programlisting">struct MyFixture {
+ MyFixture() { i = new int; *i = 0 }
+ ~ MyFixture() { delete i; }
+
+ int* i;
+};
+
+BOOST_AUTO_TEST_CASE( test_case1 )
+{
+ MyFixture f;
+
+ // do something involving f.i
+}
+
+BOOST_AUTO_TEST_CASE( test_case2 )
+{
+ MyFixture f;
+
+ // do something involving f.i
+}
+</pre>
+<p class="first-line-indented">
+ This is a generic solution that can be used to implement any kind of shared setup or cleanup procedure. Still
+ there are several more or less minor practical issues with this pure C++ based fixtures solution:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ We need to add a fixture declaration statement into each test case manually.
+ </li>
+<li>
+ Objects defined in fixture are references with "&lt;fixture-instance-name&gt;." prefix.
+ </li>
+<li>
+ There is no place to execute a "global" fixture, which performs "global" setup/cleanup
+ procedures before and after testing.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ While there is little the <acronym class="acronym">UTF</acronym> can do to address these issues for manually registered test units, it's
+ possible to resolve them for test units that are automatically registered. To do this the <acronym class="acronym">UTF</acronym> defines a
+ <a class="link" href="fixture/model.html" title="Generic fixture model">generic fixture model</a> - fixed interfaces that both setup and
+ teardown fixture functions should comply to. Based on the generic fixture model, the <acronym class="acronym">UTF</acronym> presents solution for
+ the following tasks:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li><a class="link" href="fixture/per-test-case.html" title="Per test case fixture">per test case fixture automation</a></li>
+<li><a class="link" href="fixture/test-suite-shared.html" title="Test suite level fixture">shared test suite level fixture</a></li>
+<li><a class="link" href="fixture/global.html" title="Global fixture">"global" fixture support</a></li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-organization/expected-failures.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="fixture/model.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/fixture/global.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/fixture/global.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Global fixture</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../fixture.html" title="Fixtures or let me repeat myself">
+<link rel="prev" href="test-suite-shared.html" title="Test suite level fixture">
+<link rel="next" href="../test-output.html" title="Test Output or let's see what you got for your money">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Fixtures<a href="../test-output.html">
+ &gt;
+ </a><b>Global fixture</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../test-output.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.fixture.global"></a>Global fixture</h5></div></div></div>
+<p class="first-line-indented">
+ Any global initialization that needs to be performed every time testing begins or a global cleanup that is to be
+ performed once testing is finished is called a global fixture. The <acronym class="acronym">UTF</acronym> global fixture design is based on a
+ generic test fixture model and is supported by the utility class boost::unit_test::global_fixture. The global
+ fixture design allows any number of global fixtures to be defined in any test file that constitutes a test module.
+ Though some initialization can be implemented in the test module initialization function, there are several
+ reasons to prefer the global fixture approach:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>There is no place for cleanup/teardown operations in the initialization function.</li>
+<li>
+ Unlike the initialization function, the global fixture setup method invocation is guarded by the execution
+ monitor. That means that all uncaught errors that occur during initialization are properly.
+ </li>
+<li>
+ Any number of different global fixtures can be defined, which allows you to split initialization code by
+ category.
+ </li>
+<li>
+ The fixture allows you to place matching setup/teardown code in close vicinity in your test module code.
+ </li>
+<li>
+ If the whole test tree is constructed automatically the initialization function is empty and auto-generated by
+ the <acronym class="acronym">UTF</acronym>. To introduce the initialization function can be more work than the use of a global fixture facility,
+ while global fixture is more to the point.
+ </li>
+<li>
+ Since all fixtures follow the same generic model you can easily switch from local per test case fixtures to
+ the global one.
+ </li>
+<li>
+ If you are using the interactive test runner (non-supplied yet) global test fixtures are applied to every run,
+ while an initialization function is executed only once during a test module startup (just make sure that
+ it's what you really want).
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ To define a global test module fixture you need to implement a class that matched generic fixture model and
+ passed it as an argument to the macro BOOST_GLOBAL_FIXTURE.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_GLOBAL_FIXTURE"></a>BOOST_GLOBAL_FIXTURE(<span class="emphasis"><em>fixure_name</em></span>)</pre>
+<p class="first-line-indented">
+ The statement, that performs global fixture definition, has to reside at a test file scope.
+ </p>
+<div class="example">
+<a name="utf.user-guide.fixture.global.example20"></a><p class="title"><b>Example 25. Global fixture</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;iostream&gt;
+
+//____________________________________________________________________________//
+
+struct MyConfig {
+ MyConfig() { std::cout &lt;&lt; "global setup\n"; }
+ ~MyConfig() { std::cout &lt;&lt; "global teardown\n"; }
+};
+
+//____________________________________________________________________________//
+
+BOOST_GLOBAL_FIXTURE( MyConfig );
+
+BOOST_AUTO_TEST_CASE( test_case )
+{
+ BOOST_CHECK( true );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example20-output">&gt; example
+global setup
+Running 1 test case...
+global teardown
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-suite-shared.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fixture.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../test-output.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/fixture/model.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/fixture/model.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generic fixture model</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../fixture.html" title="Fixtures or let me repeat myself">
+<link rel="prev" href="../fixture.html" title="Fixtures or let me repeat myself">
+<link rel="next" href="per-test-case.html" title="Per test case fixture">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Fixtures<a href="../test-output.html">
+ &gt;
+ </a><b>Generic model</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="per-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.fixture.model"></a>Generic fixture model</h5></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> defines the generic fixture model as follows:
+ </p>
+<pre class="programlisting">struct &lt;fixture-name&gt;{
+ &lt;fixture-name&gt;(); // setup function
+ ~&lt;fixture-name&gt;(); // teardown function
+};</pre>
+<p class="first-line-indented">
+ In other words a fixture is expected to be implemented as a class where the class constructor serves as a setup
+ method and class destructor serves as teardown method. The <acronym class="acronym">UTF</acronym> opted to avoid explicit names in fixture
+ interface for setup and teardown methods, since is considered most natural in C++ for tasks similar to RAII and
+ coincides with the pure C++ solution discusses earlier.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The above interface prevents you to report errors in the teardown procedure using an exception. It does make
+ sense though: if somehow more than one fixture is assigned to a test unit, you want all teardown procedures to
+ run, even if some may experience problems.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../fixture.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fixture.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="per-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Per test case fixture</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../fixture.html" title="Fixtures or let me repeat myself">
+<link rel="prev" href="model.html" title="Generic fixture model">
+<link rel="next" href="test-suite-shared.html" title="Test suite level fixture">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Fixtures<a href="../test-output.html">
+ &gt;
+ </a><b>Per test case</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-suite-shared.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.fixture.per-test-case"></a>Per test case fixture</h5></div></div></div>
+<p class="first-line-indented">
+ To automate the task of assigning a fixture for the test case, for test case creation use the macro
+ BOOST_FIXTURE_TEST_CASE in place of the macro <code class="computeroutput"><a class="link" href="../test-organization/auto-nullary-test-case.html#BOOST_AUTO_TEST_CASE">BOOST_AUTO_TEST_CASE</a></code>:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_FIXTURE_TEST_CASE"></a>BOOST_FIXTURE_TEST_CASE(<span class="emphasis"><em>test_case_name</em></span>, <span class="emphasis"><em>fixure_name</em></span>)</pre>
+<p class="first-line-indented">
+ The only difference from the macro <code class="computeroutput"><a class="link" href="../test-organization/auto-nullary-test-case.html#BOOST_AUTO_TEST_CASE">BOOST_AUTO_TEST_CASE</a></code> is the presence of an extra argument
+ - fixture name. Unlike the pure C++ solution you have direct access to the public and protected members of the
+ fixture, though you still need to refer to the fixture name in every test case.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ You can't access private members of fixture, but then why would you make anything private?
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.fixture.per-test-case.example18"></a><p class="title"><b>Example 23. Per test case fixture</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ In this example only test_case1 and test_case2 have fixture F assigned. In the next section you going to see
+ what can be done if all test cases in a test suite require the same fixture.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+struct F {
+ F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
+ ~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
+
+ int i;
+};
+
+BOOST_FIXTURE_TEST_CASE( test_case1, F )
+{
+ BOOST_CHECK( i == 1 );
+ ++i;
+}
+
+BOOST_FIXTURE_TEST_CASE( test_case2, F )
+{
+ BOOST_CHECK_EQUAL( i, 1 );
+}
+
+BOOST_AUTO_TEST_CASE( test_case3 )
+{
+ BOOST_CHECK( true );
+}
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example18-output">&gt; example --log_level=message
+Running 3 test cases...
+setup fixture
+test.cpp(13): error in "test_case1": check i == 1 failed
+teardown fixture
+setup fixture
+test.cpp(19): error in "test_case2": check i == 1 failed [0 != 1]
+teardown fixture
+
+*** 2 failures detected in test suite "example"</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="model.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fixture.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-suite-shared.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test suite level fixture</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../fixture.html" title="Fixtures or let me repeat myself">
+<link rel="prev" href="per-test-case.html" title="Per test case fixture">
+<link rel="next" href="global.html" title="Global fixture">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Fixtures<a href="../test-output.html">
+ &gt;
+ </a><b>Test suite shared</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="global.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.fixture.test-suite-shared"></a>Test suite level fixture</h5></div></div></div>
+<p class="first-line-indented">
+ If all test cases in a test require the same fixture (you can group test cases in the test suite based on a
+ fixture required) you can make another step toward an automation of a test fixture assignment. To assign the
+ same shared fixture for all test cases in a test suite use the macro BOOST_FIXTURE_TEST_SUITE in place of the
+ macro <code class="computeroutput"><a class="link" href="../test-organization/auto-test-suite.html#BOOST_AUTO_TEST_SUITE">BOOST_AUTO_TEST_SUITE</a></code> for automated test suite creation and registration.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_FIXTURE_TEST_SUITE"></a>BOOST_FIXTURE_TEST_SUITE(<span class="emphasis"><em>suite_name</em></span>, <span class="emphasis"><em>fixure_name</em></span>)</pre>
+<p class="first-line-indented">
+ Once again the only difference from the macro <code class="computeroutput"><a class="link" href="../test-organization/auto-test-suite.html#BOOST_AUTO_TEST_SUITE">BOOST_AUTO_TEST_SUITE</a></code> usage is the presence of
+ an extra argument - the fixture name. And now, you not only have direct access to the public and protected members
+ of the fixture, but also do not need to refer to the fixture name in test case definition. All test cases assigned
+ the same fixture automatically.
+ </p>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../../doc/html/images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If necessary you can reset the fixture for a particular test case with the use of the macro
+ <code class="computeroutput"><a class="link" href="per-test-case.html#BOOST_FIXTURE_TEST_CASE">BOOST_FIXTURE_TEST_CASE</a></code>.
+ </p></td></tr>
+</table></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The fixture assignment is "deep". In other words unless reset by another
+ <code class="computeroutput"><a class="link" href="test-suite-shared.html#BOOST_FIXTURE_TEST_SUITE">BOOST_FIXTURE_TEST_SUITE</a></code> or <code class="computeroutput"><a class="link" href="per-test-case.html#BOOST_FIXTURE_TEST_CASE">BOOST_FIXTURE_TEST_CASE</a></code> definition the
+ same fixture is assigned to all test cases, including ones that belong to the sub test suites.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.fixture.test-suite-shared.example19"></a><p class="title"><b>Example 24. Test suite level fixture</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+struct F {
+ F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
+ ~F() { BOOST_TEST_MESSAGE( "teardown fixture" ); }
+
+ int i;
+};
+
+//____________________________________________________________________________//
+
+BOOST_FIXTURE_TEST_SUITE( s, F )
+
+BOOST_AUTO_TEST_CASE( test_case1 )
+{
+ BOOST_CHECK( i == 1 );
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_case2 )
+{
+ BOOST_CHECK_EQUAL( i, 0 );
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_SUITE_END()
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example19-output">&gt; example
+Running 2 test cases...
+test.cpp(17): error in "test_case1": check i == 1 failed
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="per-test-case.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fixture.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="global.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/initialization.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/initialization.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,159 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test module initialization or ready, set</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="usage-variants/extern-test-runner.html" title="External test runner variant of the UTF">
+<link rel="next" href="test-organization.html" title="Test organization or the house that Jack built">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Test module initialization</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-organization.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.initialization"></a>Test module initialization or ready, set </h4></div></div></div>
+<p class="first-line-indented">
+ There are two tasks that you may need to perform before actual testing can start:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ The test tree needs to be built (unless you are using automated test units registration).
+ </li>
+<li>
+ Custom test module initialization needs to be performed. This includes
+ initialization of the code under test and custom tune-up of the <acronym class="acronym">UTF</acronym> parameters (for example the test log or the
+ test results report output streams redirection).
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ The function dedicated for this purpose is called the test module initialization function. Alternatively you can
+ employ global fixtures, covered in details, including differences in two approaches, in
+ <a class="xref" href="fixture.html" title="Fixtures or let me repeat myself">the section called &#8220;Fixtures&#8221;</a>.
+ </p>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> requires you to implement the test module initialization function. The test runner supplied with the static
+ library or single-header variants of the <acronym class="acronym">UTF</acronym> requires the specific function specification. The test runner supplied
+ with the dynamic library variant of the <acronym class="acronym">UTF</acronym> requires the specific initialization function signature only.
+ </p>
+<p class="first-line-indented">
+ For many <a class="link" href="../user-guide.html#test-module.def">test modules</a> you don't need to do any custom initialization
+ and test tree construction is automated. In this case you don't really need the initialization function and
+ the <acronym class="acronym">UTF</acronym> provides a way to automatically generate an empty one for you.
+ </p>
+<p class="first-line-indented">
+ Original design of the <acronym class="acronym">UTF</acronym> supported the manual test tree construction only. Later versions introduced the
+ automated registration of test units. In later versions of the <acronym class="acronym">UTF</acronym> the original initialization function
+ specification became inconvenient and unnecessary unsafe. So the alternative initialization function specification
+ was introduced. This change is not backward compatible. The test runners supplied with the static library and
+ single-header variants of the <acronym class="acronym">UTF</acronym> by default still require original initialization function specification, but
+ support <a class="link" href="../compilation.html#utf.compilation.flags" title="Table 3. The UTF compilation flags">compilation flags</a> that switch to the alternative one. The test
+ runner supplied with dynamic library variant of the <acronym class="acronym">UTF</acronym> requires new specification and doesn't support
+ original one. The plan is to deprecate the original initialization function specification in one of the future
+ releases and ultimately to stop supporting it.
+ </p>
+<p class="first-line-indented">
+ The initialization function invocation is monitored by the <acronym class="acronym">UTF</acronym> the same way as all the test cases. An unexpected
+ exception or system error detected during initialization function invocation is treated as initialization error and
+ is reported as such.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.initialization.orig-signature"></a>Original initialization function signature and name</h5></div></div></div>
+<p class="first-line-indented">
+ The original design of the <acronym class="acronym">UTF</acronym> initialization requires you to implement the function with the following
+ specification:
+ </p>
+<pre class="programlisting"><code class="computeroutput">boost::unit_test::test_suite</code>* init_unit_test_suite( int argc, char* argv[] );</pre>
+<p class="first-line-indented">
+ In original design of the <acronym class="acronym">UTF</acronym> this function was intended to initialize and return a master test suite. The null
+ value was considered an initialization error. The current design of the <acronym class="acronym">UTF</acronym> maintains master test suite instance
+ internally and does not treat the null result value as an initialization error. In fact it's recommended to
+ return null value always and register test units in the master test suite using the regular test suite add
+ interface. The only way to indicate an initialization error is to throw the
+ <code class="computeroutput">boost::unit_test::framework::setup_error</code> exception.
+ </p>
+<p class="first-line-indented">
+ The initialization function parameters argc, argv provide the command line arguments specified during test
+ module invocation. It's guarantied that any framework-specific command line arguments are excluded. To be
+ consisted with the alternative initialization function specification it's recommended though to access the
+ command line arguments using the master test suite interface.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.initialization.alt-signature"></a>Alternative initialization function signature and name</h5></div></div></div>
+<p class="first-line-indented">
+ The alternative design of the <acronym class="acronym">UTF</acronym> initialization requires you to implement a function with the following
+ specification:
+ </p>
+<pre class="programlisting">bool init_unit_test();</pre>
+<p class="first-line-indented">
+ The result value of this function indicates whether or not initialization was successful. To register test
+ units in a master test suite use the test suite add interface. To access command line arguments use the master
+ test suite interface. It's guarantied that any framework-specific command line arguments are excluded.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.initialization.signature-typedef"></a>Initialization function signature access</h5></div></div></div>
+<p class="first-line-indented">
+ The test runner interface needs to refer to the initialization function signature. The <acronym class="acronym">UTF</acronym> provides the typedef
+ that resolves to proper signature in all configurations:
+ </p>
+<pre class="programlisting">namespace boost {
+namespace unit_test {
+#ifdef BOOST_TEST_ALTERNATIVE_INIT_API
+typedef bool (*init_unit_test_func)();
+#else
+typedef test_suite* (*init_unit_test_func)( int, char* [] );
+#endif
+}
+}</pre>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.initialization.auto-generation"></a>Automated generation of the test module initialization function</h5></div></div></div>
+<p class="first-line-indented">
+ To automatically generate an empty test module initialization function you need to define
+ <a class="xref" href="../compilation.html#utf.flag.main">BOOST_TEST_MAIN</a> before including the
+ <code class="filename">boost/test/unit_test.hpp</code> header. The value of this define is ignored.
+ Alternatively you can define the macro <a class="xref" href="../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a> to be equal to
+ any string (not necessarily in quotes). This macro causes the same result as
+ <a class="xref" href="../compilation.html#utf.flag.main">BOOST_TEST_MAIN</a>, and in addition the macro value becomes the name of the
+ master test suite.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ For a test module consisting of multiple source files you have to define these flags in a single test file only.
+ Otherwise you end up with multiple instances of the initialization function.
+ </p></td></tr>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="usage-variants/extern-test-runner.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-organization.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/runtime-config.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/runtime-config.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Runtime configuration or what are the strings I can pull?</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="test-output/test-progress.html" title="Test progress display">
+<link rel="next" href="runtime-config/run-by-name.html" title="Running specific test units selected by their name">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Runtime configuration </b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="runtime-config/run-by-name.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.runtime-config"></a>Runtime configuration or what are the strings I can pull?</h4></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> supports multiple parameters that affect test module execution. To set the parameter's value you can
+ either use a runtime configuration subsystem interface from within the test module initialization function or you can
+ specify the value at runtime during test module invocation.
+ </p>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> provides two ways to set a parameter at runtime: by specifying a command line argument and by setting an
+ environment variable. The command line argument always overrides the corresponding environment variable.
+ </p>
+<p class="first-line-indented">
+ During test module initialization the <acronym class="acronym">UTF</acronym> parses the command line and excludes all parameters that belong to it and
+ their values from the argument list. The rest of command line is forwarded to the test module initialization function
+ supplied by you. The command line argument format expected by the <acronym class="acronym">UTF</acronym> is:
+ </p>
+<p>
+ --&lt;command line argument name&gt;=&lt;argument_value&gt;.
+ </p>
+<p class="first-line-indented">
+ The command line argument name is case sensitive. It is required to match exactly the name in parameter specification.
+ There should not be any spaces between '=' and either command line argument name or argument value.
+ </p>
+<p class="first-line-indented">
+ The corresponding environment variable name is also case sensitive and is required to exactly match the name in the
+ parameter specification.
+ </p>
+<p class="first-line-indented">
+ All information about supported parameters is summarized below in the reference section.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-output/test-progress.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="runtime-config/run-by-name.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/runtime-config/reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/runtime-config/reference.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,659 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Runtime parameters reference</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../runtime-config.html" title="Runtime configuration or what are the strings I can pull?">
+<link rel="prev" href="run-by-name.html" title="Running specific test units selected by their name">
+<link rel="next" href="../../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Runtime configuration &gt; <b>Parameters reference</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../../testing-tools.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.runtime-config.reference"></a>Runtime parameters reference</h5></div></div></div>
+<p class="first-line-indented">
+ Each parameter specification includes: the full parameter name, corresponding environment variable name, command
+ line argument name, acceptable values and a long description. The default value for the parameter is bold in the
+ acceptable values list. All values are case sensitive and are required to exactly match the parameter specification.
+ </p>
+<script language="JavaScript1.2">
+ var id296286;
+ </script><table class="inline-reference"><tr>
+<td class="index" valign="top"><ul>
+<li>auto_start_dbg</li>
+<li>build_info</li>
+<li>catch_system_errors</li>
+<li>detect_memory_leak</li>
+<li>detect_fp_exceptions</li>
+<li>log_format</li>
+<li>log_level</li>
+<li>output_format</li>
+<li>random</li>
+<li>report_format</li>
+<li>report_level</li>
+<li>result_code</li>
+<li>run_test</li>
+<li>show_progress</li>
+<li>use_alt_stack</li>
+</ul></td>
+<td class="content" valign="top">
+<div class="entry" id="utf.user-guide.runtime-config.parameters.auto_start_dbg"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Automatically attach debugger in case of system failure</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_AUTO_START_DBG</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>auto_start_dbg</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>no</strong></span></td></tr>
+<tr><td>yes</td></tr>
+<tr><td>debugger identifier</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ specifies whether Boost.Test should try to attach a debugger in case if fatal system error occurs. If value is "yes"
+ the default debugger configured for the platform is going to be attempted. Alternatively the debugger identified
+ by the argument value of the parameter is used. For more details on advanced debugger support in Boost.Test check
+ section dedicated to Boost.Test debug API.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.build_info"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Print build info</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_BUILD_INFO</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>build_info</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>no</strong></span></td></tr>
+<tr><td>yes</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ makes the framework to print build information that include: platform, compiler, STL implementation in use and
+ boost version.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.catch_system_errors"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Catch system errors</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_CATCH_SYSTEM_ERRORS</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>catch_system_errors</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>yes</strong></span></td></tr>
+<tr><td>no</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ value "no" prohibits the framework from catching asynchronous system events. This could be used for test programs
+ executed within GUI or to get a coredump for stack analysis. See usage recommendations page for more details.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.detect_memory_leak"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Detect memory leaks</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_DETECT_MEMORY_LEAK</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>build_info</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td>0</td></tr>
+<tr><td><span class="bold"><strong>1</strong></span></td></tr>
+<tr><td>integer value &gt; 1</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ positive value tells the framework to detect the memory leaks (if any). Any value greater then 1 in addition
+ is treated as leak allocation number and setup runtime breakpoint. In other words setting this parameter to
+ the positive value N greater than 1 causes the framework to set a breakpoint at Nth memory allocation (don't
+ do that from the command line - only when you are under debugger). Note: if your test program produce memory
+ leaks notifications, they are combined with allocation number values you could use to set a breakpoint.
+ Currently only applies to MS family of compilers.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.detect_fp_exceptions"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>[Do not] trap floating point exceptions</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_DETECT_FP_EXCEPTIONS</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>detect_fp_exceptions</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>no</strong></span></td></tr>
+<tr><td>yes</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ enables/disable hardware traps for the floating point exception if they are supported. By default is disabled.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.log_format"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>The log format</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_LOG_FORMAT</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>log_format</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td>
+<span class="bold"><strong>HRF</strong></span> - human readable format</td></tr>
+<tr><td>XML - XML format for automated output processing</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ allows selecting the <acronym class="acronym">UTF</acronym> log format from the list of formats supplied by the framework. To specify custom log
+ format use the <a class="link" href="../test-output/log-ct-config.html#utf.user-guide.test-output.log.ct-config.log-formatter" title="Custom log format support">unit_test_log API</a>.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.log_level"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>The UTF log level</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_LOG_LEVEL</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>log_level</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">all</span> - </p></td>
+<td>report all log messages including the passed test notification</td>
+</tr>
+<tr>
+<td><p><span class="term">success</span> - </p></td>
+<td>the same as all</td>
+</tr>
+<tr>
+<td><p><span class="term">test_suite</span> - </p></td>
+<td>show test suite messages</td>
+</tr>
+<tr>
+<td><p><span class="term">message</span> - </p></td>
+<td>show user messages</td>
+</tr>
+<tr>
+<td><p><span class="term">warning</span> - </p></td>
+<td>report warnings issued by user</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="bold"><strong>error</strong></span></span> - </p></td>
+<td>report all error conditions</td>
+</tr>
+<tr>
+<td><p><span class="term">cpp_exception</span> - </p></td>
+<td>report uncaught c++ exception</td>
+</tr>
+<tr>
+<td><p><span class="term">system_error</span> - </p></td>
+<td>report system originated non-fatal errors (for example, timeout or floating point exception)</td>
+</tr>
+<tr>
+<td><p><span class="term">fatal_error</span> - </p></td>
+<td>report only user or system originated fatal errors (for example, memory access violation)</td>
+</tr>
+<tr>
+<td><p><span class="term">nothing</span> - </p></td>
+<td>do not report any information</td>
+</tr>
+</tbody>
+</table></div></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ allows setting the <acronym class="acronym">UTF</acronym> log level in a range from a
+ complete log, when all successful tests are confirmed and all test suite messages are included, to an empty
+ log when nothing is logged a test output stream. Note that log levels are accumulating, in other words each
+ log level includes also all the information reported by less restrictive ones.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.output_format"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>The output format</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_OUTPUT_FORMAT</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>output_format</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td>
+<span class="bold"><strong>HRF</strong></span> - human readable format</td></tr>
+<tr><td>XML - XML format for automated output processing</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ combines an effect of report_format and log_format parameters. Has higher priority than either one of them if
+ specified.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.random"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Random seed for random order of test cases</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_RANDOM</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>random</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>0</strong></span></td></tr>
+<tr><td>1</td></tr>
+<tr><td>integer value &gt; 1</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ positive value makes the framework to run the test cases in random order. Also if this value is greater than 1,
+ it's used as a random seed. In other case random seed is generated based on current time.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.report_format"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>The report format</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_REPORT_FORMAT</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>report</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td>
+<span class="bold"><strong>HRF</strong></span> - human readable format</td></tr>
+<tr><td>XML - XML format for automated output processing</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ allows selecting the <acronym class="acronym">UTF</acronym> report format from the list of formats supplied by the framework. To
+ specify custom report format use unit_test_report API.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.report_level"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>The results report level</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_LOG_FORMAT</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>log_format</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td>no</td></tr>
+<tr><td><span class="bold"><strong>confirm</strong></span></td></tr>
+<tr><td>short</td></tr>
+<tr><td>detailed</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ allows setting the level of detailization for the testing results report generated by the framework. Use value
+ "no" to eliminate the results report completely. See the
+ <a class="xref" href="../test-output/results-report.html" title="Test report output">the section called &#8220;Test report output&#8221;</a> for description of different report formats.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.result_code"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>[Do not] return result code</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_RESULT_CODE</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>result_code</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>yes</strong></span></td></tr>
+<tr><td>no</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ value "no" enforces the framework to always return zero result code. This could be used for test programs
+ executed within GUI. See <a class="link" href="../../usage-recommendations/dot-net-specific.html" title="Microsoft Visual Studio .NET usage recommendations">usage recommendations</a>
+ section for more details.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.run_test"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Test units to run</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TESTS_TO_RUN</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>run_test</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list"><tr><td>
+ <a class="link" href="run-by-name.html" title="Running specific test units selected by their name">specification</a> of test units to run
+ </td></tr></table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ specifies which test units to run.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.show_progress"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Show progress</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_SHOW_PROGRESS</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>show_progress</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>no</strong></span></td></tr>
+<tr><td>yes</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>makes the framework to print progress information.</p></td>
+</tr>
+</table>
+<br>
+</div></div>
+<div class="entry" id="utf.user-guide.runtime-config.parameters.use_alt_stack"><div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Parameter Name</span></nobr></strong></td>
+<td>: </td>
+<td><span class="emphasis"><em>Use alternative stack</em></span></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Environment variable name</span></nobr></strong></td>
+<td>: </td>
+<td><code class="varname">BOOST_TEST_USE_ALT_STACK</code></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Command line argument name</span></nobr></strong></td>
+<td>: </td>
+<td><em class="parameter"><code>use_alt_stack</code></em></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Acceptable Values</span></nobr></strong></td>
+<td>: </td>
+<td><table class="simplelist" border="0" summary="Simple list">
+<tr><td><span class="bold"><strong>yes</strong></span></td></tr>
+<tr><td>no</td></tr>
+</table></td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Description</span></nobr></strong></td>
+<td>: </td>
+<td><p>
+ specifies whether or not the Boost.Test Execution Monitor should employ an alternative stack for signals
+ processing on platforms where they are supported.
+ </p></td>
+</tr>
+</table>
+<br>
+</div></div>
+</td>
+</tr></table>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="run-by-name.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../runtime-config.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../testing-tools.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,253 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Running specific test units selected by their name</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../runtime-config.html" title="Runtime configuration or what are the strings I can pull?">
+<link rel="prev" href="../runtime-config.html" title="Runtime configuration or what are the strings I can pull?">
+<link rel="next" href="reference.html" title="Runtime parameters reference">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Runtime configuration &gt; <b>Run by name</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.runtime-config.run-by-name"></a>Running specific test units selected by their name</h5></div></div></div>
+<p class="first-line-indented">
+ In regular circumstances test module execution initiates testing of all test units manually or automatically
+ registered in master test suite. The <acronym class="acronym">UTF</acronym> provides an ability to run specific set of test unit as well. It can be
+ single test case, single test suite or some combination of test cases and suites. The tests units to run are
+ selected by the runtime parameter <a class="link" href="reference.html" title="Runtime parameters reference">run_test</a>. In the
+ following examples I select tests to run using command line arguments, but the same filter expression can be used as
+ an appropriate environment variable value.
+ </p>
+<p class="first-line-indented">
+ Filter expressions are specified in a form a/b/c, where a, b and c are filters for corresponding levels of test tree.
+ Symbol '*' can be used at the beginning, at the end and as the level filter itself as an asterisk. Symbol ',' is used
+ to create list of test units residing on the same level in test tree.
+ </p>
+<p class="first-line-indented">
+ Let's consider following test module consisting from several test suites and test cases.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+BOOST_AUTO_TEST_CASE( testA )
+{
+}
+
+BOOST_AUTO_TEST_CASE( testB )
+{
+}
+
+BOOST_AUTO_TEST_SUITE( s1 )
+
+BOOST_AUTO_TEST_CASE( test1 )
+{
+}
+
+BOOST_AUTO_TEST_CASE( lest2 )
+{
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_SUITE( s2 )
+
+BOOST_AUTO_TEST_CASE( test1 )
+{
+}
+
+BOOST_AUTO_TEST_CASE( test11 )
+{
+}
+
+BOOST_AUTO_TEST_SUITE( in )
+
+BOOST_AUTO_TEST_CASE( test )
+{
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_SUITE_END()
+</pre>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+<p>Run single test case by specifying it's name.</p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=testA
+Running 1 test case...
+Entering test suite "example"
+Entering test case "testA"
+Test case testA doesn't include any assertions
+Leaving test case "testA"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ Running multiple test cases residing within the same test suite by listing their names in coma separated list.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=testA,testB
+Running 2 test case...
+Entering test suite "example"
+Entering test case "testA"
+Test case testA doesn't include any assertions
+Leaving test case "testA"
+Entering test case "testB"
+Test case testA doesn't include any assertions
+Leaving test case "testB"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>Incorrect test case name may lead to no test to be run.</p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=testC
+Test setup error: no test cases matching filter</pre>
+</li>
+<li>
+<p>
+ Test unit name can refer to a test suite as well. All test units within the referred test suites are going to be
+ run.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=s1
+Running 2 test cases...
+Entering test suite "example"
+Entering test suite "s1"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Entering test case "lest2"
+Test case lest2 doesn't include any assertions
+Leaving test case "lest2"
+Leaving test suite "s1"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ Using '/' as levels separator you can refer to any test unit inside a test tree.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=s2/in/test
+Running 1 test case...
+Entering test suite "example"
+Entering test suite "s2"
+Entering test suite "in"
+Entering test case "test"
+Test case test doesn't include any assertions
+Leaving test case "test"
+Leaving test suite "in"
+Leaving test suite "s2"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ The <acronym class="acronym">UTF</acronym> supports simple regular expression-like '*' wildcard. Single '*' match any name of test unit. Accordingly
+ expression 's1/*' is equivalent to the expression 's1' and matches all test units inside test suite s1. Similarly
+ expression '*/test1' refers to all test units named test1 that reside in master test suite's direct child suites.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=*/test1
+Running 2 test cases...
+Entering test suite "example"
+Entering test suite "s1"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Leaving test suite "s1"
+Entering test suite "s2"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Leaving test suite "s2"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ The <acronym class="acronym">UTF</acronym> allows to match specific prefix in test unit names. For example, expression 's2/test*' filters out only
+ test units in test suite s2 with name that starts with 'test'. This avoids running test suite s2/in.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=s2/test*
+Running 2 test cases...
+Entering test suite "example"
+Entering test suite "s2"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Entering test case "test11"
+Test case test11 doesn't include any assertions
+Leaving test case "test11"
+Leaving test suite "s2"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ The <acronym class="acronym">UTF</acronym> allows to match specific suffix in test unit names. For example, expression '*/*1' filters out test units
+ with name that ends with '1' and reside in master test suite's direct child suites.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=*/*1
+Running 2 test cases...
+Entering test suite "example"
+Entering test suite "s2"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Entering test case "test11"
+Test case test11 doesn't include any assertions
+Leaving test case "test11"
+Leaving test suite "s2"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+<li>
+<p>
+ Finally, the <acronym class="acronym">UTF</acronym> allows to match specific substring in test unit names.
+ </p>
+<pre class="test-execution-output">&gt;example --log_level=test_suite --run_test=s1/*est*
+Running 2 test cases...
+Entering test suite "example"
+Entering test suite "s1"
+Entering test case "test1"
+Test case test1 doesn't include any assertions
+Leaving test case "test1"
+Entering test case "lest2"
+Test case lest2 doesn't include any assertions
+Leaving test case "lest2"
+Leaving test suite "s1"
+Leaving test suite "example"
+
+*** No errors detected</pre>
+</li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../runtime-config.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../runtime-config.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test organization or the house that Jack built</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="initialization.html" title="Test module initialization or ready, set">
+<link rel="next" href="test-organization/nullary-test-case.html" title="Nullary function based test case">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Test organization</b><a href="fixture.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-organization/nullary-test-case.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.test-organization"></a>Test organization or the house that Jack built</h4></div></div></div>
+<p class="first-line-indented">
+ If you look at many legacy test modules, big chance is that it's implemented as one big test function that
+ consists of a mixture of check and output statements. Is there anything wrong with it? Yes. There are various
+ disadvantages in single test function approach:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="square">
+<li style="list-style-type: square">
+ One big function tends to become really difficult to manage if the number of checks exceeds a reasonable limit
+ (true for any large function). What is tested and where - who knows?
+ </li>
+<li style="list-style-type: square">
+ Many checks require similar preparations. This results in code repetitions within the test function.
+ </li>
+<li style="list-style-type: square">
+ If a fatal error or an exception is caused by any checks within the test function the rest of tests are
+ skipped and there is no way to prevent this.
+ </li>
+<li style="list-style-type: square">
+ No way to perform only checks for a particular subsystem of the tested unit.
+ </li>
+<li style="list-style-type: square">
+ No summary of how different subsystems of the tested unit performed under in the test.
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ The above points should make it clear that it's preferable to split <a class="link" href="../user-guide.html#test-module.def">test module
+ </a> into smaller units. These units are test cases. A test case has to be constructed based on some kind of
+ function and registered in a test tree, so that the test runner knows how to invoke it. There are different
+ possible designs for the test case construction problem: inheritance from the predefined base class, specifically
+ named member function and so on. The <acronym class="acronym">UTF</acronym> opted to avoid classed altogether and to use the least intrusive "
+ generic callback" approach. The facility, the <acronym class="acronym">UTF</acronym> provides, requires specific function signature and allows
+ adopting any function or function object that matches the signature as a test case. The signatures the <acronym class="acronym">UTF</acronym>
+ supports are:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ <a class="link" href="test-organization/nullary-test-case.html" title="Nullary function based test case">Nullary function</a>
+ </li>
+<li>
+ <a class="link" href="test-organization/nullary-test-case.html" title="Nullary function based test case">Unary function</a>
+ </li>
+<li>
+ <a class="link" href="test-organization/test-case-template.html" title="Test case template">Nullary function template</a>
+ </li>
+</ul></div>
+<p class="first-line-indented">
+ To solve test tree creation problem the <acronym class="acronym">UTF</acronym> provides facilities for
+ <a class="link" href="test-organization/test-suite.html" title="Test suite">test suite creation</a>.
+ </p>
+<p class="first-line-indented">
+ Generic test case construction design used by the <acronym class="acronym">UTF</acronym> causes the test case implementation (test function body)
+ and test case creation/registration points to be remote. As a result you may forget to register the test case
+ and it's never going to be executed, even though it's present in test file. To alleviate this issue
+ the <acronym class="acronym">UTF</acronym> presents facilities for automated (in place) test case creation and registration in the test tree. These
+ facilities sacrifice some generality and work for selected test function signatures only. But the result is that
+ library users are relieved from the necessity to manually register test cases. These facilities are the most
+ user-friendly and are recommended to be used whenever possible. In addition they support automated registration
+ of test suites, thus allowing whole test tree to be created without any use of manual registration.
+ </p>
+<p class="first-line-indented">
+ The single test module may mix both automated and manual test case
+ registration. In other words, within the same test module you can have both test cases implemented remotely and
+ registered manually in the test module initialization function and test cases that are registered automatically at
+ implementation point.
+ </p>
+<p class="first-line-indented">
+ In some cases it's desirable to allow some "expected" failures in test case without failing a
+ test module. To support this request The <acronym class="acronym">UTF</acronym> allows specifying the number of
+ <a class="link" href="test-organization/expected-failures.html" title="Expected failures specification">expected failures</a> in a test case.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="initialization.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-organization/nullary-test-case.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-nullary-test-case.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-nullary-test-case.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,89 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Nullary function based test case with automated registration</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="nullary-test-case.html" title="Nullary function based test case">
+<link rel="prev" href="manual-nullary-test-case.html" title="Manually registered nullary function based test case">
+<link rel="next" href="unary-test-case.html" title="Unary function based test case">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Nullary function based test case<a href="unary-test-case.html">
+ &gt;
+ </a><b>Automated registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="unary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.auto-nullary-test-case"></a>Nullary function based test case with automated registration</h6></div></div></div>
+<p class="first-line-indented">
+ To create a nullary free function cased test case, which is registered in place of implementation, employ the
+ macro BOOST_AUTO_TEST_CASE.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_AUTO_TEST_CASE"></a>BOOST_AUTO_TEST_CASE(<span class="emphasis"><em>test_case_name</em></span>)</pre>
+<p class="first-line-indented">
+ The macro is designed to closely mimic nullary free function syntax. Changes that are required to make an
+ existing test case, implemented as a free function, registered in place are illustrated in the following
+ example (compare with <a class="xref" href="manual-nullary-test-case.html#utf.user-guide.test-organization.manual-nullary-test-case.example01" title="Example 5. Nullary free function manually registered">Example 5, &#8220;Nullary free function manually registered&#8221;</a>):
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.auto-nullary-test-case.example06"></a><p class="title"><b>Example 10. Nullary function based test case with automated registration</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( free_test_function )
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example06-output">&gt; example --log_level=test_suite
+Running 1 test case...
+Entering test suite "example"
+Entering test case "free_test_function"
+Leaving test case "free_test_function"; testing time: 16ms
+Leaving test suite "example"
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ With this macro you don't need to implement the initialization function at all. The macro creates and
+ registers the test case with the name free_test_function automatically.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="manual-nullary-test-case.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="nullary-test-case.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test case template with automated registration</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-case-template.html" title="Test case template">
+<link rel="prev" href="manual-test-case-template.html" title="Manually registered test case template">
+<link rel="next" href="test-suite.html" title="Test suite">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Test case template<a href="test-suite.html">
+ &gt;
+ </a><b>Automated registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.auto-test-case-template"></a>Test case template with automated registration</h6></div></div></div>
+<p class="first-line-indented">
+ To create a test case template registered in place of implementation, employ the macro
+ BOOST_AUTO_TEST_CASE_TEMPLATE. This facility is also called <em class="firstterm">auto test case template</em>.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_AUTO_TEST_CASE_TEMPLATE"></a>BOOST_AUTO_TEST_CASE_TEMPLATE(<span class="emphasis"><em>test_case_name</em></span>, <span class="emphasis"><em>formal_type_parameter_name</em></span>, <span class="emphasis"><em>collection_of_types</em></span>)</pre>
+<p class="first-line-indented">
+ The macro BOOST_AUTO_TEST_CASE_TEMPLATE requires three arguments:
+ </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">The test case template name</span></p></td>
+<td>
+ unique test cases template identifier
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">The name of a formal template parameter</span></p></td>
+<td>
+ name of the type the test case template is instantiated with
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">The collection of types to instantiate test case template with</span></p></td>
+<td>
+ arbitrary MPL sequence
+ </td>
+</tr>
+</tbody>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.test-organization.auto-test-case-template.example10"></a><p class="title"><b>Example 14. Test case template with automated registration</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/test_case_template.hpp&gt;
+#include &lt;boost/mpl/list.hpp&gt;
+
+//____________________________________________________________________________//
+
+typedef boost::mpl::list&lt;int,long,unsigned char&gt; test_types;
+
+BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
+{
+ BOOST_CHECK_EQUAL( sizeof(T), (unsigned)4 )
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example10-output">&gt; example
+Running 3 test cases...
+test.cpp(12): error in "my_test&lt;unsigned char&gt;": check sizeof(T) == 4 failed [1 != 4]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="manual-test-case-template.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-case-template.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,181 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test suites with automated registration</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-suite.html" title="Test suite">
+<link rel="prev" href="manual-test-suite.html" title="Manually registered test suites">
+<link rel="next" href="master-test-suite.html" title="Master Test Suite">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Test suite<a href="expected-failures.html">
+ &gt;
+ </a><b>Automated registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="master-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.auto-test-suite"></a>Test suites with automated registration</h6></div></div></div>
+<p class="first-line-indented">
+ The solution the <acronym class="acronym">UTF</acronym> presents for automated test suite creation and registration is designed to facilitate
+ multiple points of definition, arbitrary test suites depth and smooth integration with automated test case creation
+ and registration. This facility should significantly simplify a test tree construction process in comparison with
+ manual explicit registration case.
+ </p>
+<p class="first-line-indented">
+ The implementation is based on the order of file scope variables definitions within a single compilation unit.
+ The semantic of this facility is very similar to the namespace feature of C++, including support for test suite
+ extension. To start test suite use the macro BOOST_AUTO_TEST_SUITE. To end test suite use the macro
+ BOOST_AUTO_TEST_SUITE_END. The same test suite can be restarted multiple times inside the same test file or in a
+ different test files. In a result all test units will be part of the same test suite in a constructed test tree.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_AUTO_TEST_SUITE"></a>BOOST_AUTO_TEST_SUITE(<span class="emphasis"><em>test_suite_name</em></span>)
+<a name="BOOST_AUTO_TEST_SUITE_END"></a>BOOST_AUTO_TEST_SUITE_END()</pre>
+<p class="first-line-indented">
+ Test units defined in between test suite start and end declarations become members of the test suite. A test
+ unit always becomes the member of the closest test suite declared. Test units declared at a test file scope
+ become members of the master test suite. There is no limit on depth of test suite inclusion.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.auto-test-suite.example12"></a><p class="title"><b>Example 16. Test suites with automated registration</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ This example creates a test tree that matches exactly the one created in the manual test suite registration
+ example. As you can see test tree construction in this example is more straightforward and automated.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+BOOST_AUTO_TEST_SUITE( test_suite1 )
+
+BOOST_AUTO_TEST_CASE( test_case1 )
+{
+ BOOST_WARN( sizeof(int) &lt; 4 );
+}
+
+BOOST_AUTO_TEST_CASE( test_case2 )
+{
+ BOOST_REQUIRE_EQUAL( 1, 2 );
+ BOOST_FAIL( "Should never reach this line" );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE( test_suite2 )
+
+BOOST_AUTO_TEST_CASE( test_case3 )
+{
+ BOOST_CHECK( true );
+}
+
+BOOST_AUTO_TEST_CASE( test_case4 )
+{
+ BOOST_CHECK( false );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example12-output">&gt; example
+Running 4 test cases...
+test.cpp(12): fatal error in "test_case2": critical check 1 == 2 failed [1 != 2]
+test.cpp(27): error in "test_case4": check false failed
+
+*** 2 failures detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="example">
+<a name="utf.user-guide.test-organization.auto-test-suite.example53"></a><p class="title"><b>Example 17. Example of test suite extension using automated registration facility</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ In this example test suite test_suite consists of two parts. Their definition is remote and is separated by another
+ test case. In fact these parts may even reside in different test files. The resulting test tree remains the same. As
+ you can see from the output both test_case1 and test_case2 reside in the same test suite test_suite.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+BOOST_AUTO_TEST_SUITE( test_suite )
+
+BOOST_AUTO_TEST_CASE( test_case1 )
+{
+ BOOST_ERROR( "some error 1" );
+}
+
+
+BOOST_AUTO_TEST_SUITE_END()
+
+BOOST_AUTO_TEST_CASE( test_case_on_file_scope )
+{
+ BOOST_CHECK( true );
+}
+
+BOOST_AUTO_TEST_SUITE( test_suite )
+
+BOOST_AUTO_TEST_CASE( test_case2 )
+{
+ BOOST_ERROR( "some error 2" );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example53-output">&gt;example --report_level=detailed
+Running 3 test cases...
+test.cpp(8): error in "test_case1": some error 1
+test.cpp(23): error in "test_case2": some error 2
+
+Test suite "example" failed with:
+ 1 assertion out of 3 passed
+ 2 assertions out of 3 failed
+ 1 test case out of 3 passed
+ 2 test cases out of 3 failed
+
+ Test suite "test_suite" failed with:
+ 2 assertions out of 2 failed
+ 2 test cases out of 2 failed
+
+ Test case "test_case1" failed with:
+ 1 assertion out of 1 failed
+
+ Test case "test_case2" failed with:
+ 1 assertion out of 1 failed
+
+ Test case "test_case_on_file_scope" passed with:
+ 1 assertion out of 1 passed</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="manual-test-suite.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-suite.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="master-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/expected-failures.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/expected-failures.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,188 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Expected failures specification</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="prev" href="master-test-suite.html" title="Master Test Suite">
+<link rel="next" href="../fixture.html" title="Fixtures or let me repeat myself">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a><b>Expected failures specification</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../fixture.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-organization.expected-failures"></a>Expected failures specification</h5></div></div></div>
+<p class="first-line-indented">
+ While in a perfect world all test assertions should pass in order for a test module to pass, in some situations
+ it is desirable to temporarily allow particular tests to fail. For example, where a particular feature is not
+ implemented yet and one needs to prepare a library for the release or when particular test fails on some
+ platforms. To avoid a nagging red box in regression tests table, you can use the expected failures feature.
+ </p>
+<p class="first-line-indented">
+ This feature allows specifying an expected number of failed assertions per test unit. The value is specified
+ during test tree construction, and can't be updated during test execution.
+ </p>
+<p class="first-line-indented">
+ The feature is not intended to be used to check for expected functionality failures. To check that a particular
+ input is causing an exception to be thrown use <code class="computeroutput"><a class="link" href="../../testing-tools/reference.html" title="The UTF testing tools reference">BOOST_CHECK_THROW</a></code> family of testing
+ tools.
+ </p>
+<p class="first-line-indented">
+ The usage of this feature should be limited and employed only after careful consideration. In general you should
+ only use this feature when it is necessary to force a test module to pass without actually fixing the problem.
+ Obviously, an excessive usage of expected failures defeats the purpose of the unit test. In most cases it only
+ needs be applied temporarily.
+ </p>
+<p class="first-line-indented">
+ You also need to remember that the expected failure specification is per test case. This means that any failed
+ assertion within that test case can satisfy the expected failures quota. Meaning it is possible for an
+ unexpected failure to occur to satisfy this quota.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If an assertion at fault is fixed and passed, while an expected failures specification still present, the test
+ case is going to fail, since the number of failures is smaller than expected.
+ </p></td></tr>
+</table></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.manual-expected-failures"></a>Usage with manually registered test cases</h6></div></div></div>
+<p class="first-line-indented">
+ To set the value of expected failures for the manually registered test unit pass it as a second argument for the
+ test_suite::add call during test unit registration.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-expected-failures.example16"></a><p class="title"><b>Example 21. Expected failures specification for manually registered test case</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function()
+{
+ BOOST_CHECK( 2 == 1 );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int, char* [] ) {
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( &amp;free_test_function ), 2 );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example16-output">&gt; example --log_level=message
+Running 1 test case...
+test.cpp(8): error in "free_test_function": check 2 == 1 failed
+Test case has less failures then expected
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.auto-expected-failures"></a>Usage with automatically registered test cases</h6></div></div></div>
+<p class="first-line-indented">
+ To set the number of expected failures for the automatically registered test unit use the macro
+ BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES before the test case definition.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES"></a>BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(<span class="emphasis"><em>test_case_name</em></span>, <span class="emphasis"><em>number_of_expected_failures</em></span>)</pre>
+<p class="first-line-indented">
+ You can use this macro both on a file scope and inside a test suite. Moreover you can use it even if name of test
+ units coincide in different test suites. Expected failures specification applies to the test unit belonging to the same
+ test suite where BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES resides.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.auto-expected-failures.example17"></a><p class="title"><b>Example 22. Expected failures specification for automatically registered test case</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( my_test1, 1 )
+
+BOOST_AUTO_TEST_CASE( my_test1 )
+{
+ BOOST_CHECK( 2 == 1 );
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_SUITE( internal )
+
+BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( my_test1, 2 )
+
+BOOST_AUTO_TEST_CASE( my_test1 )
+{
+ BOOST_CHECK_EQUAL( sizeof(int), sizeof(char) );
+ BOOST_CHECK_EQUAL( sizeof(int*), sizeof(char) );
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_SUITE_END()</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example17-output">&gt; example --report_level=short
+Running 2 test cases...
+test.cpp(10): error in "my_test1": check 2 == 1 failed
+test.cpp(21): error in "my_test1": check sizeof(int) == sizeof(char) failed [4 != 1]
+test.cpp(22): error in "my_test1": check sizeof(int*) == sizeof(char) failed [4 != 1]
+
+Test suite "example" passed with:
+ 3 assertions out of 3 failed
+ 3 failures expected
+ 2 test cases out of 2 passed
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="master-test-suite.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-organization.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../fixture.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-nullary-test-case.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-nullary-test-case.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,331 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Manually registered nullary function based test case</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="nullary-test-case.html" title="Nullary function based test case">
+<link rel="prev" href="nullary-test-case.html" title="Nullary function based test case">
+<link rel="next" href="auto-nullary-test-case.html" title="Nullary function based test case with automated registration">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Nullary function based test case<a href="unary-test-case.html">
+ &gt;
+ </a><b>Manual registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="auto-nullary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case"></a>Manually registered nullary function based test case</h6></div></div></div>
+<p class="first-line-indented">
+ To create a test case manually, employ the macro BOOST_TEST_CASE:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_CASE"></a>BOOST_TEST_CASE(<span class="emphasis"><em>test_function</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_TEST_CASE creates an instance of the class boost::unit_test::test_case and returns a pointer to the
+ constructed instance. The test case name is deduced from the macro argument test_function. If you prefer to
+ assign a different test case name, you have to use the underlying make_test_case interface instead. To
+ register a new test case, employ the method test_suite::add. Both test case creation and registration are
+ performed in the test module initialization function.
+ </p>
+<p class="first-line-indented">
+ Here is the simplest possible manually registered test case. This example employs the original test module
+ initialization function specification. A single test case is created and registered in the master test suite.
+ Note that the free function name is passed by address to the macro BOOST_TEST_CASE.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case.example01"></a><p class="title"><b>Example 5. Nullary free function manually registered</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function()
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( &amp;free_test_function ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example01-output">&gt; example
+Running 1 test case...
+
+*** No errors detected</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ A test case can be implemented as a method of a class. In this case a pointer to the class instance has to be
+ bound to the test method to create a test case. You can use the same instance of the class for multiple test
+ cases. The <acronym class="acronym">UTF</acronym> doesn't take an ownership of the class instance and you are required to manage the class
+ instance lifetime yourself.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The class instance can't be defined in the initialization function scope, since it becomes invalid as
+ soon as the test execution exits it. It needs to be either defined statically/globally or managed using a
+ shared pointer.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case.example02"></a><p class="title"><b>Example 6. Nullary method of a class bound to global class instance and manually registered</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/bind.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+class test_class {
+public:
+ void test_method()
+ {
+ BOOST_CHECK( true /* test assertion */ );
+ }
+} tester;
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;test_class::test_method, &amp;tester )));
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example02-output">&gt; example
+Running 1 test case...
+test.cpp(11): error in "boost::bind( &amp;test_class::test_method, &amp;tester )": check false failed
+
+*** 1 failure detected in test suite "Master Test Suite"
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="example">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case.example03"></a><p class="title"><b>Example 7. Nullary method of a class bound to shared class instance and manually registered</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/bind.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+class test_class {
+public:
+ void test_method1()
+ {
+ BOOST_CHECK( true /* test assertion */ );
+ }
+ void test_method2()
+ {
+ BOOST_CHECK( false /* test assertion */ );
+ }
+};
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ boost::shared_ptr&lt;test_class&gt; tester( new test_class );
+
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;test_class::test_method1, tester )));
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;test_class::test_method2, tester )));
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example03-output">&gt; example
+Running 2 test cases...
+test.cpp(15): error in "boost::bind( &amp;test_class::test_method2, tester )": check false failed
+
+*** 1 failure detected in test suite "Master Test Suite"
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ If you do not need to reuse the test class instance and can't or do not wish to create test class
+ instance globally it may be easier and safer to create an instance on the stack of free function:
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case.example04"></a><p class="title"><b>Example 8. Nullary method of a class bound to local class instance inside free function</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include&lt;boost/test/included/unit_test.hpp&gt;
+
+using namespace boost::unit_test;
+
+class test_class {
+public:
+ void test_method()
+ {
+ BOOST_CHECK( true /* test assertion */ );
+ }
+};
+
+//____________________________________________________________________________//
+
+void free_test_function()
+{
+ test_class inst;
+
+ inst.test_method();
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ framework::master_test_suite().add( BOOST_TEST_CASE( &amp;free_test_function ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example04-output">&gt; example
+Running 1 test case...
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ If you have to perform the same set of tests with different sets of parameters you may want to base your test
+ case on a function with arguments and bind particular parameters during test case creation.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you bind parameters by reference or pointer, the referenced value can't have local storage in the
+ test module initialization function.
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-nullary-test-case.example05"></a><p class="title"><b>Example 9. Binary free function bound to set of different parameter pairs</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ This example employs the alternative test module initialization function specification.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_DYN_LINK
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/bind.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function( int i, int j )
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+bool
+init_function()
+{
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;free_test_function, 1, 1 ) ) );
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;free_test_function, 1, 2 ) ) );
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( boost::bind( &amp;free_test_function, 2, 1 ) ) );
+
+ return true;
+}
+
+//____________________________________________________________________________//
+
+int
+main( int argc, char* argv[] )
+{
+ return ::boost::unit_test::unit_test_main( &amp;init_function, argc, argv );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example05-output">&gt; example
+Running 3 test cases...
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> also presents an alternative method for parameterized test case creation, which is covered in
+ <a class="xref" href="unary-test-case.html" title="Unary function based test case">the section called &#8220;Unary function based test case&#8221;</a>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nullary-test-case.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="nullary-test-case.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auto-nullary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-case-template.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-case-template.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,173 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Manually registered test case template</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-case-template.html" title="Test case template">
+<link rel="prev" href="test-case-template.html" title="Test case template">
+<link rel="next" href="auto-test-case-template.html" title="Test case template with automated registration">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Test case template<a href="test-suite.html">
+ &gt;
+ </a><b>Manual registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="auto-test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.manual-test-case-template"></a>Manually registered test case template</h6></div></div></div>
+<p class="first-line-indented">
+ One way to perform the same set of checks for a component instantiated with different template parameters is
+ illustrated in the following example:
+ </p>
+<pre class="programlisting">template &lt;typename T&gt;
+void single_test()
+{
+ BOOST_CHECK( /* test assertion */ );
+}
+
+void combined_test()
+{
+ single_test&lt;int&gt;();
+ single_test&lt;float&gt;();
+ single_test&lt;unsigned char&gt;();
+}
+</pre>
+<p class="first-line-indented">
+ There several problems/inconveniencies with above approach, including:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc"><li>
+<p>
+ Fatal error in one of the invocation will stop whole test case and will skip invocations with different types
+ </p>
+<p>
+ You need to repeat function invocation manually for all the parameters you are interested in
+ </p>
+<p>
+ You need two functions to implement the test
+ </p>
+</li></ul></div>
+<p class="first-line-indented">
+ Ideally the test case template would be based on nullary function template (like single_test above).
+ Unfortunately function templates are neither addressable nor can be used as template parameters. To alleviate
+ the issue the manually registered test case template facility consists of two co-working macros:
+ BOOST_TEST_CASE_TEMPLATE_FUNCTION and BOOST_TEST_CASE_TEMPLATE. Former is used to define the test case
+ template body, later - to create and register test cases based on it.
+ </p>
+<p class="first-line-indented">
+ The macro BOOST_TEST_CASE_TEMPLATE_FUNCTION requires two arguments: the name of the test case template and the
+ name of the format type parameter:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_CASE_TEMPLATE_FUNCTION"></a>BOOST_TEST_CASE_TEMPLATE_FUNCTION(<span class="emphasis"><em>test_case_name</em></span>, <span class="emphasis"><em>type_name</em></span>)</pre>
+<pre class="programlisting">BOOST_TEST_CASE_TEMPLATE_FUNCTION( test_case_name, type_name )
+{
+ // test case template body
+}
+</pre>
+<p class="first-line-indented">
+ The macro BOOST_TEST_CASE_TEMPLATE_FUNCTION is intended to be used in place of nullary function template
+ signature:
+ </p>
+<pre class="programlisting">template&lt;typename type_name&gt;
+void
+test_case_name()
+{
+ // test case template body
+}
+</pre>
+<p class="first-line-indented">
+ The only difference is that the BOOST_TEST_CASE_TEMPLATE_FUNCTION makes the test case template name usable in
+ the template argument list.
+ </p>
+<p class="first-line-indented">
+ BOOST_TEST_CASE_TEMPLATE requires two arguments: the name of the test case template and Boost.MPL compatible
+ collection of types to instantiate it with. The names passed to both macros should be the same.
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_CASE_TEMPLATE"></a>BOOST_TEST_CASE_TEMPLATE(<span class="emphasis"><em>test_case_name</em></span>, <span class="emphasis"><em>collection_of_types</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_TEST_CASE_TEMPLATE creates an instance of the test case generator. When passed to the method
+ test_suite::add, the generator produces a separate sub test case for each type in the supplied collection of
+ types and registers it immediately in the test suite. Each test case is based on the test case template body
+ instantiated with a particular test type.
+ </p>
+<p class="first-line-indented">
+ Sub test case names are deduced from the macro argument test_case_name. If you prefer to assign different test
+ case names, you need to use the underlying make_test_case interface instead. Both test cases creation and
+ registration is performed in the test module initialization function.
+ </p>
+<p class="first-line-indented">
+ The test case template facility is preferable to the approach in example above, since execution of each sub
+ test case is guarded and counted separately. It produces a better test log/results report (in example above in
+ case of failure you can't say which type is at fault) and allows you to test all types even if one of
+ them causes termination of the sub test case.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-test-case-template.example09"></a><p class="title"><b>Example 13. Manually registered test case template</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/test_case_template.hpp&gt;
+#include &lt;boost/mpl/list.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+BOOST_TEST_CASE_TEMPLATE_FUNCTION( my_test, T )
+{
+ BOOST_CHECK_EQUAL( sizeof(T), 4 );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ typedef boost::mpl::list&lt;int,long,unsigned char&gt; test_types;
+
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE_TEMPLATE( my_test, test_types ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example09-output">&gt; example
+Running 3 test cases...
+test.cpp(10): error in "my_test&lt;unsigned char&gt;": check sizeof(T) == 4 failed [1 != 4]
+
+*** 1 failure detected in test suite "Master Test Suite"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-case-template.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-case-template.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auto-test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,129 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Manually registered test suites</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-suite.html" title="Test suite">
+<link rel="prev" href="test-suite.html" title="Test suite">
+<link rel="next" href="auto-test-suite.html" title="Test suites with automated registration">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Test suite<a href="expected-failures.html">
+ &gt;
+ </a><b>Manual registration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="auto-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.manual-test-suite"></a>Manually registered test suites</h6></div></div></div>
+<p class="first-line-indented">
+ To create a test suite manually, employ the macro BOOST_TEST_SUITE:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_SUITE"></a>BOOST_TEST_SUITE(<span class="emphasis"><em>test_suite_name</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_TEST_SUITE creates an instance of the class boost::unit_test::test_suite and returns a pointer to the
+ constructed instance. Alternatively you can create an instance of class boost::unit_test::test_suite yourself.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ boost::unit_test::test_suite instances have to be allocated on the heap and the compiler won't allow you
+ to create one on the stack.
+ </p></td></tr>
+</table></div>
+<p class="first-line-indented">
+ Newly created test suite has to be registered in a parent one using add interface. Both test suite creation and
+ registration is performed in the test module initialization function.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.manual-test-suite.example11"></a><p class="title"><b>Example 15. Manually registered test suites</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void test_case1() { /* : */ }
+void test_case2() { /* : */ }
+void test_case3() { /* : */ }
+void test_case4() { /* : */ }
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ test_suite* ts1 = BOOST_TEST_SUITE( "test_suite1" );
+ ts1-&gt;add( BOOST_TEST_CASE( &amp;test_case1 ) );
+ ts1-&gt;add( BOOST_TEST_CASE( &amp;test_case2 ) );
+
+ test_suite* ts2 = BOOST_TEST_SUITE( "test_suite2" );
+ ts2-&gt;add( BOOST_TEST_CASE( &amp;test_case3 ) );
+ ts2-&gt;add( BOOST_TEST_CASE( &amp;test_case4 ) );
+
+ framework::master_test_suite().add( ts1 );
+ framework::master_test_suite().add( ts2 );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example11-output">&gt; example --log_level=test_suite
+Running 4 test cases...
+Entering test suite "Master Test Suite"
+Entering test suite "test_suite1"
+Entering test case "test_case1"
+Leaving test case "test_case1"
+Entering test case "test_case2"
+Leaving test case "test_case2"
+Leaving test suite "test_suite1"
+Entering test suite "test_suite2"
+Entering test case "test_case3"
+Leaving test case "test_case3"
+Entering test case "test_case4"
+Leaving test case "test_case4"
+Leaving test suite "test_suite2"
+Leaving test suite "Master Test Suite"
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ This example creates a test tree, which can be represented by the following hierarchy:
+ </p>
+<div class="mediaobject"><img src="../../../../img/class-hier.jpg"></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-suite.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-suite.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auto-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/master-test-suite.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/master-test-suite.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,236 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Master Test Suite</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-suite.html" title="Test suite">
+<link rel="prev" href="auto-test-suite.html" title="Test suites with automated registration">
+<link rel="next" href="expected-failures.html" title="Expected failures specification">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a>Test suite<a href="expected-failures.html">
+ &gt;
+ </a><b>Master Test Suite</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="expected-failures.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.master-test-suite"></a>Master Test Suite</h6></div></div></div>
+<p class="first-line-indented">
+ As defined in introduction section the master test suite is a root node of a test tree. Each test module built
+ with the <acronym class="acronym">UTF</acronym> always has the master test suite defined. The <acronym class="acronym">UTF</acronym> maintain the master test suite instance
+ internally. All other test units are registered as direct or indirect children of the master test suite.
+ </p>
+<pre class="programlisting">namespace boost {
+namespace unit_test {
+class master_test_suite_t : public test_suite {
+public:
+ int argc;
+ char** argv;
+};
+
+} // namespace unit_test
+
+} // namespace boost</pre>
+<p class="first-line-indented">
+ To access single instance of the master test suite use the following interface:
+ </p>
+<pre class="programlisting">namespace boost {
+namespace unit_test {
+namespace framework {
+
+master_test_suite_t&amp; master_test_suite();
+
+} // namespace framework
+} // namespace unit_test
+} // namespace boost</pre>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.cla-access"></a>Command line arguments access interface</h6></div></div></div>
+<p class="first-line-indented">
+ Master test suite implemented as an extension to the regular test suite, since it maintains references to the
+ command line arguments passed to the test module. To access the command line arguments use
+ </p>
+<pre class="programlisting">boost::unit_test::framework::master_test_suite().argc
+boost::unit_test::framework::master_test_suite().argv</pre>
+<p class="first-line-indented">
+ In below example references to the command line arguments are accessible either as an initialization function
+ parameters or as members of the master test suite. Both references point to the same values. A test module that
+ uses the alternative initialization function specification can only access command line arguments through the
+ master test suite.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This interface for runtime parameter access is temporary. It's planned to be updated once runtime
+ parameters support is redesigned.
+ </p></td></tr>
+</table></div>
+<p class="first-line-indented">
+ Returning to the free function example, let's modify initialization function to check for absence of any
+ test module arguments.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.cla-access.example13"></a><p class="title"><b>Example 18. Command line access in initialization function</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function()
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ if( framework::master_test_suite().argc &gt; 1 )
+ return 0;
+
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( &amp;free_test_function ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example13-output">&gt; example 1
+Test setup error: test tree is empty</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.master-test-suite-name"></a>Naming</h6></div></div></div>
+<p class="first-line-indented">
+ The master test suite is created with default name "Master Test Suite". There are two methods two
+ reset the name to a different value: using the macro <a class="xref" href="../../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a>
+ and from within the test module initialization function. Former is used for test modules that don't have the
+ manually implemented initialization function. Following examples illustrate these methods.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.master-test-suite-name.example14"></a><p class="title"><b>Example 19. Naming master test suite using the macro <a class="xref" href="../../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a></b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ If the macro <a class="xref" href="../../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a> is defined, the test module initialization
+ function is <a class="link" href="../initialization.html#utf.user-guide.initialization.auto-generation" title="Automated generation of the test module initialization function">automatically generated</a> and the
+ macro value becomes the name of the master test suite. The name may include spaces.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE my master test suite name
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( free_test_function )
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example14-output">&gt; example --log_level=test_suite
+Running 1 test case...
+Entering test suite "my master test suite name"
+Entering test case "free_test_function"
+Leaving test case "free_test_function"; testing time: 1ms
+Leaving test suite "my master test suite name"
+
+*** No errors detected
+
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="example">
+<a name="utf.user-guide.test-organization.master-test-suite-name.example15"></a><p class="title"><b>Example 20. Naming master test suite explicitly in the test module initialization function</b></p>
+<div class="example-contents">
+<p class="first-line-indented">
+ Without the <a class="xref" href="../../compilation.html#utf.flag.main">BOOST_TEST_MAIN</a> and the <a class="xref" href="../../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a> flags defined, the test module initialization function has to be manually implemented.
+ The master test suite name can be reset at any point within this function.
+ </p>
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( free_test_function )
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ framework::master_test_suite().p_name.value = "my master test suite name";
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example15-output">&gt; example --log_level=test_suite
+Running 1 test case...
+Entering test suite "my master test suite name"
+Entering test case "free_test_function"
+Leaving test case "free_test_function"; testing time: 1ms
+Leaving test suite "my master test suite name"
+
+*** No errors detected
+
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auto-test-suite.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-suite.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="expected-failures.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/nullary-test-case.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/nullary-test-case.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Nullary function based test case</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="prev" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="next" href="manual-nullary-test-case.html" title="Manually registered nullary function based test case">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a><b>Nullary function based test case</b><a href="unary-test-case.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="manual-nullary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-organization.nullary-test-case"></a>Nullary function based test case</h5></div></div></div>
+<p class="first-line-indented">
+ The most widely used are test cases based on a nullary function. These include nullary free functions, nullary
+ function objects created with <code class="computeroutput">boost::bind</code> and nullary <code class="computeroutput">boost::function</code>
+ instances. The simplest is a free function and the <acronym class="acronym">UTF</acronym> provides facilities to create a free function based test
+ case that is automatically registered. Here are the two construction interfaces:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ <a class="link" href="manual-nullary-test-case.html" title="Manually registered nullary function based test case">Manually registered test case</a>
+ </li>
+<li>
+ <a class="link" href="auto-nullary-test-case.html" title="Nullary function based test case with automated registration">Test case with automated registration</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../test-organization.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-organization.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="manual-nullary-test-case.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/test-case-template.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/test-case-template.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test case template</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="prev" href="unary-test-case.html" title="Unary function based test case">
+<link rel="next" href="manual-test-case-template.html" title="Manually registered test case template">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a><b>Test case template</b><a href="test-suite.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="manual-test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-organization.test-case-template"></a>Test case template</h5></div></div></div>
+<p class="first-line-indented">
+ To test a template based component it's frequently necessary to perform the same set of checks for a
+ component instantiated with different template parameters. The <acronym class="acronym">UTF</acronym> provides the ability to create a series of
+ test cases based on a list of desired types and function similar to nullary function template. This facility is
+ called test case template. Here are the two construction interfaces:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ <a class="link" href="manual-test-case-template.html" title="Manually registered test case template">Manually registered test case
+ template</a>
+ </li>
+<li>
+ <a class="link" href="auto-test-case-template.html" title="Test case template with automated registration">Test case template with automated
+ registration</a>
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unary-test-case.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-organization.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="manual-test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/test-suite.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/test-suite.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test suite</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="prev" href="auto-test-case-template.html" title="Test case template with automated registration">
+<link rel="next" href="manual-test-suite.html" title="Manually registered test suites">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a><b>Test suite</b><a href="expected-failures.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="manual-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-organization.test-suite"></a>Test suite</h5></div></div></div>
+<p class="first-line-indented">
+ If you consider test cases as leaves on the test tree, the test suite can be considered as branch and the master
+ test suite as a trunk. Unlike real trees though, our tree in many cases consists only of leaves attached
+ directly to the trunk. This is common for all test cases to reside directly in the master test suite. If you do
+ want to construct a hierarchical test suite structure the <acronym class="acronym">UTF</acronym> provides both manual and automated
+ test suite creation and registration facilities:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+ <a class="link" href="manual-test-suite.html" title="Manually registered test suites">Manually registered test suite</a>
+ </li>
+<li>
+ <a class="link" href="auto-test-suite.html" title="Test suites with automated registration">Test suite with automated registration</a>
+ </li>
+</ul></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-organization.test-suite-registration-interface"></a>Test unit registration interface</h6></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> models the notion of test case container - test suite - using class boost::unit_test::test_suite. For
+ complete class interface reference check advanced section of this documentation. Here you should only be
+ interested in a single test unit registration interface:
+ </p>
+<pre class="programlisting">void test_suite::add( test_unit* tc, counter_t expected_failures = 0, int timeout = 0 );</pre>
+<p class="first-line-indented">
+ The first parameter is a pointer to a newly created test unit. The second optional parameter -
+ expected_failures - defines the number of test assertions that are expected to fail within the test unit. By
+ default no errors are expected.
+ </p>
+<div class="caution"><table border="0" summary="Caution">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../../doc/html/images/caution.png"></td>
+<th align="left">Caution</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Be careful when supplying a number of expected failures for test suites. By default the <acronym class="acronym">UTF</acronym> calculates the
+ number of expected failures in test suite as the sum of appropriate values in all test units that constitute
+ it. And it rarely makes sense to change this.
+ </p></td></tr>
+</table></div>
+<p class="first-line-indented">
+ The third optional parameter - timeout - defines the timeout value for the test unit. As of now the <acronym class="acronym">UTF</acronym>
+ isn't able to set a timeout for the test suite execution, so this parameter makes sense only for test case
+ registration. By default no timeout is set. See the method
+ <code class="computeroutput"><a class="link" href="../../../execution-monitor/reference.html#id270361-bb">boost::execution_monitor::execute</a></code> for more details about the timeout value.
+ </p>
+<p class="first-line-indented">
+ To register group of test units in one function call the boost::unit_test::test_suite provides another add
+ interface covered in the advanced section of this documentation.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auto-test-case-template.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-organization.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="manual-test-suite.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-organization/unary-test-case.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-organization/unary-test-case.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,195 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Unary function based test case</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-organization.html" title="Test organization or the house that Jack built">
+<link rel="prev" href="auto-nullary-test-case.html" title="Nullary function based test case with automated registration">
+<link rel="next" href="test-case-template.html" title="Test case template">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test organization<a href="../fixture.html">
+ &gt;
+ </a><b>Unary function based test case</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-organization.unary-test-case"></a>Unary function based test case</h5></div></div></div>
+<p class="first-line-indented">
+ Some tests are required to be repeated for a series of different input parameters. One way to achieve this is
+ manually register a test case for each parameter as in example above. You can also invoke a test function with
+ all parameters manually from within your test case, like this:
+ </p>
+<pre class="programlisting">void single_test( int i )
+{
+ BOOST_CHECK( /* test assertion */ );
+}
+
+void combined_test()
+{
+ int params[] = { 1, 2, 3, 4, 5 };
+
+ std::for_each( params, params+5, &amp;single_test );
+}
+</pre>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> presents a better solution for this problem: the unary function based test case, also referred as
+ parameterized test case. The unary test function can be a free function, unary functor (for example created
+ with boost::bind) or unary method of a class with bound test class instance). The test function is converted
+ into test case using the macro BOOST_PARAM_TEST_CASE. The macro expects a collection of parameters (passed as
+ two input iterators) and an unary test function:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_PARAM_TEST_CASE"></a>BOOST_PARAM_TEST_CASE(<span class="emphasis"><em>test_function</em></span>, <span class="emphasis"><em>params_begin</em></span>, <span class="emphasis"><em>params_end</em></span>)</pre>
+<p class="first-line-indented">
+ BOOST_PARAM_TEST_CASE creates an instance of the test case generator. When passed to the method test_suite::add,
+ the generator produces a separate sub test case for each parameter in the parameters collection and registers
+ it immediately in a test suite. Each test case is based on a test function with the parameter bound by value,
+ even if the test function expects a parameter by reference. The fact that parameter value is stored along with
+ bound test function releases you from necessity to manage parameters lifetime. For example, they can be defined
+ in the test module initialization function scope.
+ </p>
+<p class="first-line-indented">
+ All sub test case names are deduced from the macro argument test_function. If you prefer to assign different
+ names, you have to use the underlying make_test_case interface instead. Both test cases creation and
+ registration are performed in the test module initialization function.
+ </p>
+<p class="first-line-indented">
+ The parameterized test case facility is preferable to the approach in the example above, since execution of
+ each sub test case is guarded and counted independently. It produces a better test log/results report (in
+ example above in case of failure you can't say which parameter is at fault) and allows you to test against
+ all parameters even if one of them causes termination a particular sub test case.
+ </p>
+<p class="first-line-indented">
+ In comparison with a manual test case registration for each parameter approach the parameterized test case
+ facility is more concise and easily extendible.
+ </p>
+<p class="first-line-indented">
+ In following simple example the same test, implemented in <code class="computeroutput">free_test_function</code>, is
+ performed for 5 different parameters. The parameters are defined in the test module initialization function
+ scope. The master test suite contains 5 independent test cases.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.unary-test-case.example07"></a><p class="title"><b>Example 11. Unary free function based test case</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/parameterized_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function( int i )
+{
+ BOOST_CHECK( i &lt; 4 /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ int params[] = { 1, 2, 3, 4, 5 };
+
+ framework::master_test_suite().
+ add( BOOST_PARAM_TEST_CASE( &amp;free_test_function, params, params+5 ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example07-output">&gt; example
+Running 5 test cases...
+test.cpp(9): error in "free_test_function": check i &lt; 4 failed
+test.cpp(9): error in "free_test_function": check i &lt; 4 failed
+
+*** 2 failures detected in test suite "Master Test Suite"
+</pre>
+</div>
+</div>
+<br class="example-break"><p class="first-line-indented">
+ Next example is similar, but instead of a free function it uses a method of a class. Even though parameters are
+ passed into test method by reference you can still define them in the test module initialization function scope.
+ This example employs the alternative test module initialization function specification.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-organization.unary-test-case.example08"></a><p class="title"><b>Example 12. Unary class method based test case</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_ALTERNATIVE_INIT_API
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/floating_point_comparison.hpp&gt;
+#include &lt;boost/test/parameterized_test.hpp&gt;
+#include &lt;boost/bind.hpp&gt;
+using namespace boost::unit_test;
+using namespace boost;
+
+//____________________________________________________________________________//
+
+class test_class {
+public:
+ void test_method( double const&amp; d )
+ {
+ BOOST_CHECK_CLOSE( d * 100, (double)(int)(d*100), 0.01 );
+ }
+} tester;
+
+//____________________________________________________________________________//
+
+bool init_unit_test()
+{
+ double params[] = { 1., 1.1, 1.01, 1.001, 1.0001 };
+
+ callback1&lt;double&gt; tm = bind( &amp;test_class::test_method, &amp;tester, _1);
+
+ framework::master_test_suite().
+ add( BOOST_PARAM_TEST_CASE( tm, params, params+5 ) );
+
+ return true;
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example08-output">&gt; example
+Running 5 test cases...
+test.cpp(14): error in "tm": difference between d * 100{100.1} and (double)(int)(d*100){100} exceeds 0.01%
+test.cpp(14): error in "tm": difference between d * 100{100.01} and (double)(int)(d*100){100} exceeds 0.01%
+
+*** 2 failures detected in test suite "Master Test Suite"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auto-nullary-test-case.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-organization.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-case-template.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test Output or let's see what you got for your money</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="fixture/global.html" title="Global fixture">
+<link rel="next" href="test-output/test-log.html" title="Test log output">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Test Output </b><a href="runtime-config.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-output/test-log.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.test-output"></a>Test Output or let's see what you got for your money</h4></div></div></div>
+<p class="first-line-indented">
+ The output produced by a test module is one of the major assets the <acronym class="acronym">UTF</acronym> brings to users. In comparison with any
+ kind of manual/assert based solution the <acronym class="acronym">UTF</acronym> provide following services:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+<p>All test errors are reported uniformly</p>
+<p>
+ The test execution monitor along with standardized output from all included
+ <a class="link" href="../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">testing tools</a> provides uniform reporting for all errors including fatal
+ errors, like memory assess violation and uncaught exceptions.
+ </p>
+</li>
+<li>
+<p>Detailed information on the source of an error</p>
+<p>
+ The <acronym class="acronym">UTF</acronym> test tool's based assertion provides as much information as possible about cause of error,
+ usually allowing you to deduce what is wrong without entering the debugger or core analysis.
+ </p>
+</li>
+<li>
+<p>
+ Separation of the test errors description (test log) from the results report summary (test results report)
+ </p>
+<p>
+ The information produced during test execution, including all error, warning and info messages from the test
+ tools, executed test units notification constitute the test log. By default all entries in the test log are
+ directed to the standard output. Once testing is completed the <acronym class="acronym">UTF</acronym> may produce a summary test report with
+ different levels of detail. The test report is by default directed to the standard error output.
+ </p>
+</li>
+<li>
+<p>Flexibility in what is shown in the output</p>
+<p>
+ The <acronym class="acronym">UTF</acronym> provides the ability to configure what if shown in both the test log and the test report. The
+ configuration is supported both at runtime, during test module invocation and at compile time from within a
+ test module.
+ </p>
+</li>
+<li>
+<p>Flexibility in how output is formatted</p>
+<p>
+ The <acronym class="acronym">UTF</acronym> provides the ability to configure the format of the test module output. At the moment only 2 formats
+ are supported by the <acronym class="acronym">UTF</acronym> itself, the well defined public interface allows you to customize an output for
+ your purposes almost any way you want.
+ </p>
+</li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fixture/global.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-output/test-log.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_CHECKPOINT.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_CHECKPOINT.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>BOOST_TEST_CHECKPOINT</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="BOOST_TEST_MESSAGE.html" title="BOOST_TEST_MESSAGE">
+<link rel="next" href="BOOST_TEST_PASSPOINT.html" title="BOOST_TEST_PASSPOINT">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>BOOST_TEST_CHECKPOINT</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="BOOST_TEST_PASSPOINT.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.BOOST_TEST_CHECKPOINT"></a>BOOST_TEST_CHECKPOINT</h6></div></div></div>
+<p class="first-line-indented">
+ The macro BOOST_TEST_CHECKPOINT is intended to be used to inject "named" checkpoint position. The
+ macro signature is as follows:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_CHECKPOINT"></a>BOOST_TEST_CHECKPOINT(<span class="emphasis"><em>checkoint_message</em></span>)</pre>
+<p class="first-line-indented">
+ The message formatted at the checkpoint position is saved and reported by the exception logging functions (if any
+ occurs). Similarly to the <code class="computeroutput"><a class="link" href="BOOST_TEST_MESSAGE.html#BOOST_TEST_MESSAGE">BOOST_TEST_MESSAGE</a></code> the message can be formatted from any standard
+ output stream compliant components.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-output.log.BOOST_TEST_CHECKPOINT.example22"></a><p class="title"><b>Example 28. BOOST_TEST_CHECKPOINT usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+extern void foo( int i );
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_external_interface )
+{
+ for( int i = 3; i &gt;=0; i-- ) {
+ BOOST_TEST_CHECKPOINT( "Calling foo with i=" &lt;&lt; i );
+ foo( i );
+ }
+}
+
+//____________________________________________________________________________//
+
+void foo( int i )
+{
+ int j = 2/(i-1);
+}
+
+//____________________________________________________________________________//</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example22-output">&gt; example
+Running 1 test case...
+unknown location(0): fatal error in "test_external_interface": signal: integer divide by zero; address of failing instruction: 0x00048090
+test.cpp(13): last checkpoint: Calling foo with i=1
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_TEST_MESSAGE.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TEST_PASSPOINT.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>BOOST_TEST_MESSAGE</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="test-log.html" title="Test log output">
+<link rel="next" href="BOOST_TEST_CHECKPOINT.html" title="BOOST_TEST_CHECKPOINT">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>BOOST_TEST_MESSAGE</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="BOOST_TEST_CHECKPOINT.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.BOOST_TEST_MESSAGE"></a>BOOST_TEST_MESSAGE</h6></div></div></div>
+<p class="first-line-indented">
+ The macro BOOST_TEST_MESSAGE is intended to be used for the purpose of injecting an additional message into the
+ <acronym class="acronym">UTF</acronym> test log. These messages are not intended to indicate any error or warning conditions, but rather as
+ information/status notifications. The macro signature is as follows:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_MESSAGE"></a>BOOST_TEST_MESSAGE(<span class="emphasis"><em>test_message</em></span>)</pre>
+<p class="first-line-indented">
+ The test_message argument can be as simple as C string literal or any custom expression that you can produce
+ with in a manner similar to standard iostream operation.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Messages generated by this tool do not appear in test log output with default value of the active log level
+ threshold. For these messages to appear the active log level threshold has to be set to a value below or equal
+ to "message".
+ </p></td></tr>
+</table></div>
+<div class="example">
+<a name="utf.user-guide.test-output.log.BOOST_TEST_MESSAGE.example21"></a><p class="title"><b>Example 27. BOOST_TEST_MESSAGE usage</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_init )
+{
+ int current_time = 0; // real call is required here
+
+ BOOST_TEST_MESSAGE( "Testing initialization :" );
+ BOOST_TEST_MESSAGE( "Current time:" &lt;&lt; current_time );
+}
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_update )
+{
+ std::string field_name = "Volume";
+ int value = 100;
+
+ BOOST_TEST_MESSAGE( "Testing update :" );
+ BOOST_TEST_MESSAGE( "Update " &lt;&lt; field_name &lt;&lt; " with " &lt;&lt; value );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example21-output">&gt; example --log_level=message
+Running 2 test cases...
+Testing initialization :
+Current time:0
+Testing update :
+Update Volume with 100
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="test-log.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TEST_CHECKPOINT.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_PASSPOINT.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_PASSPOINT.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Logging floating point type numbers</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="BOOST_TEST_PASSPOINT.html" title="BOOST_TEST_PASSPOINT">
+<link rel="next" href="log-hr-format.html" title="Human readable log output format">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>Logging floating point type numbers</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="log-hr-format.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.FPT"></a>Logging floating point type numbers</h6></div></div></div>
+<p class="first-line-indented">
+ It may appear that floating-point numbers are displayed by the <acronym class="acronym">UTF</acronym> with an excessive number of decimal digits.
+ However the number of digits shown is chosen to avoid apparently nonsensical displays like <code class="computeroutput">[1.00000 != 1.00000]</code>
+ when comparing exactly unity against a value which is increased by just one least significant binary digit using
+ the default precision for float of just 6 decimal digits, given by
+ <code class="computeroutput">std::numeric_limits</code>&lt;float&gt;::digits10. The function used for the number of decimal
+ digits displayed is that proposed for a future C++ Standard,
+ <a href="http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf" target="_top">A Proposal to add a max
+ significant decimal digits value</a>, to be called <code class="computeroutput">std::numeric_limits</code>::max_digits10();.
+ For 32-bit floats, 9 decimal digits are needed to ensure a single bit change produces a different decimal digit
+ string.
+ </p>
+<p class="first-line-indented">
+ So a much more helpful display using 9 decimal digits is thus:
+ <code class="computeroutput">[1.00000000 != 1.00000012]</code> showing that the two values are in fact different.
+ </p>
+<p class="first-line-indented">
+ For <acronym class="acronym">IEEE754</acronym> 32-bit float values - 9 decimal digits are shown. For 64-bit <acronym class="acronym">IEEE754</acronym> double - 17 decimal digits. For
+ <acronym class="acronym">IEEE754</acronym> extended long double using 80-bit - 21 decimal digits. For <acronym class="acronym">IEEE754</acronym> quadruple long double 128-bit, and Sparc
+ extended long double 128-bit - 36 decimal digits. For floating-point types, a convenient formula to calculate
+ max_digits10 is: 2 + <code class="computeroutput">std::numeric_limits</code>&lt;FPT&gt;::digits * 3010/10000;
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Note that a user defined floating point type UDFPT must define
+ <code class="computeroutput">std::numeric_limits</code>&lt;UDFPT&gt;::is_specialized = true and provide an appropriate value
+ for <code class="computeroutput">std::numeric_limits</code>&lt;UDFPT&gt;::digits, the number of bits used for the significand
+ or mantissa. For example, for the Sparc extended long double 128, 113 bits are used for the significand (one of
+ which is implicit).
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_TEST_PASSPOINT.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="log-hr-format.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/log-ct-config.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/log-ct-config.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,202 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Compile time configuration</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="log-xml-format.html" title="XML based log output format">
+<link rel="next" href="results-report.html" title="Test report output">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>Compile time configuration</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="results-report.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.ct-config"></a>Compile time configuration</h6></div></div></div>
+<p class="first-line-indented">
+ While many test log configuration tasks can be performed at runtime using predefined framework parameters, the
+ <acronym class="acronym">UTF</acronym> provides a compile time interface as well. The interface gives you full power over what, where and how to
+ log. The interface is provided by singleton class <code class="computeroutput">boost::unit_test::unit_test_log_t</code> and is
+ accessible through local file scope reference to single instance of this class: boost::unit_test::unit_test_log.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.ct-config.output-stream"></a>Log output stream redirection</h6></div></div></div>
+<p class="first-line-indented">
+ If you want to redirect the test log output stream into something different from std::cout use the following
+ interface:
+ </p>
+<pre class="programlisting">boost::unit_test::unit_test_log.set_stream( std::ostream&amp; str );</pre>
+<p class="first-line-indented">
+ You can reset the output stream at any time both during the test module initialization and from within test
+ cases. There are no limitations on number of output stream resets either.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-output.log.ct-config.output-stream.example50"></a><p class="title"><b>Example 30. Test log output redirection</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;fstream&gt;
+
+//____________________________________________________________________________//
+
+struct MyConfig {
+ MyConfig() : test_log( "example.log" ) { boost::unit_test::unit_test_log.set_stream( test_log ); }
+ ~MyConfig() { boost::unit_test::unit_test_log.set_stream( std::cout ); }
+
+ std::ofstream test_log;
+};
+
+//____________________________________________________________________________//
+
+BOOST_GLOBAL_FIXTURE( MyConfig );
+
+BOOST_AUTO_TEST_CASE( test_case )
+{
+ BOOST_CHECK( false );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example50-output">&gt; example
+
+*** 1 failure detected in test suite "example"
+&gt; cat example.log
+Running 1 test case...
+test.cpp(20): error in "test_case": check false failed
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.ct-config.log-level"></a>Log level configuration</h6></div></div></div>
+<p class="first-line-indented">
+ If you need to enforce specific log level from within your test module use the following interface:
+ </p>
+<pre class="programlisting">boost::unit_test::unit_test_log.set_threshold_level( boost::unit_test::log_level );</pre>
+<p class="first-line-indented">
+ In regular circumstances you shouldn't use this interface, since you not only override default log level, but also
+ the one supplied at test execution time. Prefer to use runtime parameters for log level selection.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-output.log.ct-config.log-level.example51"></a><p class="title"><b>Example 31. Compile time log level configuration</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;boost/test/detail/unit_test_parameters.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+BOOST_AUTO_TEST_CASE( test_case0 )
+{
+ if( runtime_config::log_level() &lt; log_warnings )
+ unit_test_log.set_threshold_level( log_warnings );
+
+ BOOST_WARN( sizeof(int) &gt; 4 );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example51-output">&gt; example
+Running 1 test case...
+test.cpp(13): warning in "test_case0": condition sizeof(int) &gt; 4 is not satisfied
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.ct-config.log-format"></a>Predefined log format selection</h6></div></div></div>
+<p class="first-line-indented">
+ The select at compile time the log format from the list of the formats supplied by the <acronym class="acronym">UTF</acronym>
+ </p>
+<pre class="programlisting">boost::unit_test::unit_test_log.set_format( boost::unit_test::output_format );</pre>
+<p class="first-line-indented">
+ In regular circumstances you shouldn't use this interface. Prefer to use runtime parameters for predefined log
+ format selection.
+ </p>
+<div class="example">
+<a name="utf.user-guide.test-output.log.ct-config.log-format.example52"></a><p class="title"><b>Example 32. Compile time log format selection</b></p>
+<div class="example-contents">
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+struct MyConfig {
+ MyConfig() { unit_test_log.set_format( XML ); }
+ ~MyConfig() {}
+};
+
+//____________________________________________________________________________//
+
+BOOST_GLOBAL_FIXTURE( MyConfig );
+
+BOOST_AUTO_TEST_CASE( test_case0 )
+{
+ BOOST_CHECK( false );
+}
+
+//____________________________________________________________________________//
+
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example52-output">&gt; example --report_level=no
+&lt;TestLog&gt;&lt;Error file="test.cpp" line="18"&gt;check false failed&lt;/Error&gt;&lt;/TestLog&gt;
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.ct-config.log-formatter"></a>Custom log format support</h6></div></div></div></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="log-xml-format.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="results-report.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/log-hr-format.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/log-hr-format.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,330 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Human readable log output format</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="BOOST_TEST_PASSPOINT.html" title="Logging floating point type numbers">
+<link rel="next" href="log-xml-format.html" title="XML based log output format">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>Human readable format</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="log-xml-format.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.human-readabe-format"></a>Human readable log output format</h6></div></div></div>
+<p class="first-line-indented">
+ The human readable log format is designed to closely match an errors description produced by the Microsoft family
+ of C++ compilers. This format allows jumping to the error location, if test module output is redirected into IDE
+ output window. The rest of the log messages are designed to produce the most human friendly description of the
+ events occurring in test module. This is a default format generated by test modules.
+ </p>
+<p class="first-line-indented">
+ Here the list of events along with corresponding message and the condition that has to be satisfied for it to appear
+ in the output.
+ </p>
+<div class="segmentedlist">
+<table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On testing start</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold != log_nothing</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Running <span class="userinput">&lt;total number of test cases&gt;</span> test case(s) </p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On testing start</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold != log_nothing and show_build_info is set</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Platform: $BOOST_PLATFORM<br>
+Compiler: $BOOST_COMPILER<br>
+STL     : $BOOST_STDLIB<br>
+Boost   : $BOOST_VERSION</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On abnormal testing termination</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_messages</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Test is aborted</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On test unit start</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_test_units</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Entering test <span class="userinput">&lt;test unit type&gt;</span> <span class="userinput">&lt;test unit name&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On test unit end</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_test_units; testing time is reported only if elapsed time is more than 1 mks.</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Leaving test <span class="userinput">&lt;test unit type&gt;</span> <span class="userinput">&lt;test unit name&gt;</span>; testing time <span class="userinput">&lt;value&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On skipped test unit</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_test_units</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>Test <span class="userinput">&lt;test unit type&gt;</span> <span class="userinput">&lt;test unit name&gt;</span> is skipped</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On uncaught C++ exception</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_cpp_exception_errors. Checkpoint message is reported only if provided</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>unknown location(0): fatal error in <span class="userinput">&lt;test case name&gt;</span>: <span class="userinput">&lt;explanation&gt;</span><br>
+<span class="userinput">&lt;last checkpoint location&gt;</span>: last checkpoint: <span class="userinput">&lt;checkpoint message&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On resumable system error</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_system_errors. Checkpoint message is reported only if provided</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>unknown location(0): fatal error in <span class="userinput">&lt;test case name&gt;</span>: <span class="userinput">&lt;explanation&gt;</span><br>
+<span class="userinput">&lt;last checkpoint location&gt;</span>: last checkpoint: <span class="userinput">&lt;checkpoint message&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On fatal system error</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_fatal_errors. Checkpoint message is reported only if provided</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p>unknown location(0): fatal error in <span class="userinput">&lt;test case name&gt;</span>: <span class="userinput">&lt;explanation&gt;</span><br>
+<span class="userinput">&lt;last checkpoint location&gt;</span>: last checkpoint: <span class="userinput">&lt;checkpoint message&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On passed test assertion</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_successful_tests</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p><span class="userinput">&lt;assertion location&gt;</span>: info: check<span class="userinput">&lt;assertion expression&gt;</span> passed</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On failed WARNING level test assertion</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_warnings</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p><span class="userinput">&lt;assertion location&gt;</span>: warning in <span class="userinput">&lt;test case name&gt;</span>: condition <span class="userinput">&lt;assertion description&gt;</span> is not satisfied</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On failed CHECK level test assertion</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_all_errors</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p><span class="userinput">&lt;assertion location&gt;</span>: error in <span class="userinput">&lt;test case name&gt;</span>: check <span class="userinput">&lt;assertion description&gt;</span> failed</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On failed REQUIRE level test assertion</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_fatal_errors</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p><span class="userinput">&lt;assertion location&gt;</span>: fatal error in <span class="userinput">&lt;test case name&gt;</span>: critical check <span class="userinput">&lt;assertion description&gt;</span> failed</p></div></code>
+ </td>
+</tr>
+</table>
+<br><table class="seglistitem">
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Event</span></nobr></strong></td>
+<td>: </td>
+<td>On test log message</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Condition</span></nobr></strong></td>
+<td>: </td>
+<td>threshold &lt;= log_messages</td>
+</tr>
+<tr class="seg">
+<td><strong><nobr><span class="segtitle">Output</span></nobr></strong></td>
+<td>: </td>
+<td>
+ <code class="computeroutput"><div class="literallayout"><p><span class="userinput">&lt;Message content&gt;</span></p></div></code>
+ </td>
+</tr>
+</table>
+<br>
+</div>
+<p class="first-line-indented">
+ Advanced <a class="link" href="../../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">testing tools</a> may produce more complicated error messages.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="BOOST_TEST_PASSPOINT.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="log-xml-format.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/log-xml-format.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/log-xml-format.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>XML based log output format</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="test-log.html" title="Test log output">
+<link rel="prev" href="log-hr-format.html" title="Human readable log output format">
+<link rel="next" href="log-ct-config.html" title="Compile time configuration">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a>Test log<a href="results-report.html">
+ &gt;
+ </a><b>XML based log output format</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="log-ct-config.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.xml-format"></a>XML based log output format</h6></div></div></div>
+<p class="first-line-indented">
+ This log format is designed for automated test results processing. The test log output XML schema depends on the
+ active log level threshold.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="log-hr-format.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="test-log.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="log-ct-config.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/results-report.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/results-report.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test report output</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-output.html" title="Test Output or let's see what you got for your money">
+<link rel="prev" href="log-ct-config.html" title="Compile time configuration">
+<link rel="next" href="test-progress.html" title="Test progress display">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a><b>Test report output</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="test-progress.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-output.results-report"></a>Test report output</h5></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.runtime-config"></a>Runtime configuration</h6></div></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.ct-config"></a>Compile time configuration</h6></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.ct-config.output-stream"></a>Report output stream redirection and access</h6></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.ct-config.report-level"></a>Report level configuration</h6></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.ct-config.report-format"></a>Predefined report format selection</h6></div></div></div></div>
+<div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.results-report.ct-config.report-formatter"></a>Custom report format support</h6></div></div></div></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="log-ct-config.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-output.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="test-progress.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/test-log.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/test-log.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,213 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test log output</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-output.html" title="Test Output or let's see what you got for your money">
+<link rel="prev" href="../test-output.html" title="Test Output or let's see what you got for your money">
+<link rel="next" href="BOOST_TEST_MESSAGE.html" title="BOOST_TEST_MESSAGE">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a><b>Test log</b><a href="results-report.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="BOOST_TEST_MESSAGE.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-output.log"></a>Test log output</h5></div></div></div>
+<p class="first-line-indented">
+ The test log is produced during the test execution. All entries in the test log are assigned a particular log
+ level. Only the entries with level that exceeds the <em class="firstterm">active log level threshold</em> actually
+ appear in the test log output. Log levels are arranged by the "importance" of the log entries. Here is
+ the list of all levels in order of increasing "importance":
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+<p>Success information messages</p>
+<p>
+ This category includes messages that provide information on successfully passed assertions
+ </p>
+</li>
+<li>
+<p>Test tree traversal notifications</p>
+<p>
+ This category includes messages that are produced by the <acronym class="acronym">UTF</acronym> core and indicate which test suites/cases are
+ currently being executed or skipped
+ </p>
+</li>
+<li>
+<p>General information messages</p>
+<p>
+ This category includes general information massages produced in most cases by a test module author using the
+ macro <code class="computeroutput"><a class="link" href="BOOST_TEST_MESSAGE.html#BOOST_TEST_MESSAGE">BOOST_TEST_MESSAGE</a></code>.
+ </p>
+</li>
+<li>
+<p>Warning messages</p>
+<p>
+ This category includes messages produced by failed warning level assertions.
+ </p>
+</li>
+<li>
+<p>Non fatal error messages</p>
+<p>
+ This category includes messages produced by failed check level assertions
+ </p>
+</li>
+<li>
+<p>Uncaught C++ exceptions notifications</p>
+<p>
+ This category includes messages that are produced by the <acronym class="acronym">UTF</acronym> and provide detailed information on the C++
+ exceptions uncaught by the test case body.
+ </p>
+</li>
+<li>
+<p>Non-fatal system error</p>
+<p>
+ This category includes messages that are produced by the <acronym class="acronym">UTF</acronym> itself and provides information about caught
+ non-fatal system error. For example it includes messages produced in the case of test case timeout or if
+ floating point values calculation errors are caught.
+ </p>
+</li>
+<li>
+<p>Fatal system error</p>
+<p>
+ This category includes messages produced by failed require level assertions and by the <acronym class="acronym">UTF</acronym> itself in case of
+ abnormal test case termination.
+ </p>
+</li>
+</ul></div>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The active log level works namely as threshold, not as selector. For the given active log level threshold, all
+ test log entries with "importance" higher than threshold are enabled and all test log entries with
+ "importance" below threshold are disabled.
+ </p></td></tr>
+</table></div>
+<p class="first-line-indented">
+ In addition to the levels described above the test log defines two special log levels. The current log level can
+ be set to:
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li>
+<p>All messages</p>
+<p>
+ If active log level threshold is set to this value, all test log entries appear in the output. In practice
+ this is equivalent to setting the active log level threshold to "success information messages"
+ </p>
+</li>
+<li>
+<p>Nothing</p>
+<p>
+ If the active log level threshold is set to this value, none of test log entries appear in the output. This log level
+ is used to execute a "silent" test that doesn't produce any test log and only generates a result code indicating whether test failed or passed.
+ </p>
+</li>
+</ul></div>
+<p class="first-line-indented">
+ By default the active log level threshold is set to "non fatal error messages" and the test log output
+ is generated in the human readable format. The active log level threshold and the output format can be configured
+ at runtime during a test module invocation and at compile time from within a test module using the test log
+ public interfaces. For example, for automated test module output processing it might be more convenient to use
+ the XML based format.
+ </p>
+<p class="first-line-indented">
+ In most cases The <acronym class="acronym">UTF</acronym> can't provide an exact location, where system error occurs or uncaught C++ exception
+ is thrown from. To be able to pinpoint it as close as possible the <acronym class="acronym">UTF</acronym> keeps track of checkpoints - the
+ location a test module passed through. A test case entrance and exit points, a test tool invocation point the
+ <acronym class="acronym">UTF</acronym> tracks automatically. Any other checkpoints should be entered by you manually. The test log provides two
+ macros for this purpose: <code class="computeroutput"><a class="link" href="BOOST_TEST_CHECKPOINT.html#BOOST_TEST_CHECKPOINT">BOOST_TEST_CHECKPOINT</a></code> - to specify a "named" checkpoint
+ and <code class="computeroutput"><a class="link" href="BOOST_TEST_PASSPOINT.html#BOOST_TEST_PASSPOINT">BOOST_TEST_PASSPOINT</a></code> - to specify an "unnamed" checkpoint.
+ </p>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.testing-tool-args"></a>Logging tool arguments</h6></div></div></div>
+<p class="first-line-indented">
+ Most of the <a class="link" href="../../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">testing tools</a> print values of their arguments to the output
+ stream in some form of log statement. If arguments type does not support <code class="computeroutput">operator&lt;&lt;(std::ostream&amp;,
+ ArgumentType const&amp;)</code> interface you will get a compilation error. You can either implement above
+ interface or prohibit the <a class="link" href="../../testing-tools.html" title="The UTF testing tools or tester's toolbox for all occasions">testing tools</a> from logging argument values for
+ specified type. To do so use following statement on file level before first test case that includes statement
+ failing to compile:
+ </p>
+<pre class="inline-synopsis">
+<a name="BOOST_TEST_DONT_PRINT_LOG_VALUE"></a>BOOST_TEST_DONT_PRINT_LOG_VALUE(<span class="emphasis"><em>ArgumentType</em></span>)</pre>
+<div class="example">
+<a name="utf.user-guide.test-output.log.testing-tool-args.example32"></a><p class="title"><b>Example 26. BOOST_TEST_DONT_PRINT_LOG_VALUE usage</b></p>
+<div class="example-contents">
+<p>
+ Try to comment out BOOST_TEST_DONT_PRINT_LOG_VALUE statement and you end up with compile time error.
+ </p>
+<pre class="programlisting">#define BOOST_TEST_MODULE example
+#include &lt;boost/test/included/unit_test.hpp&gt;
+#include &lt;utility&gt;
+
+//____________________________________________________________________________//
+
+typedef std::pair&lt;int,float&gt; pair_type;
+
+BOOST_TEST_DONT_PRINT_LOG_VALUE( pair_type );
+
+BOOST_AUTO_TEST_CASE( test_list )
+{
+ pair_type p1( 2, 5.5 );
+ pair_type p2( 2, 5.501 );
+
+ BOOST_CHECK_EQUAL( p1, p2 );
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example32-output">Running 1 test case...
+test.cpp(16): error in "test_list": check p1 == p2 failed [ != ]
+
+*** 1 failure detected in test suite "example"
+</pre>
+</div>
+</div>
+<br class="example-break">
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h6 class="title">
+<a name="utf.user-guide.test-output.log.runtime-config"></a>Runtime configuration</h6></div></div></div>
+<p class="first-line-indented">
+ The active log level threshold can be configured at runtime using the parameter
+ <a class="link" href="../runtime-config/reference.html" title="Runtime parameters reference">log_level</a>. The test log output format can be
+ selected using either parameter <a class="link" href="../runtime-config/reference.html" title="Runtime parameters reference">log_format</a> or the
+ parameter <a class="link" href="../runtime-config/reference.html" title="Runtime parameters reference">output_format</a>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../test-output.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-output.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TEST_MESSAGE.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-output/test-progress.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-output/test-progress.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Test progress display</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-output.html" title="Test Output or let's see what you got for your money">
+<link rel="prev" href="results-report.html" title="Test report output">
+<link rel="next" href="../runtime-config.html" title="Runtime configuration or what are the strings I can pull?">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Test Output <a href="../runtime-config.html">
+ &gt;
+ </a><b>Progress display</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../runtime-config.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.test-output.progress"></a>Test progress display</h5></div></div></div>
+<p class="first-line-indented">
+ In case if the test module involves lengthy computation split among multiple test cases you may be interested in
+ progress monitor. The test runners supplied with the <acronym class="acronym">UTF</acronym> support simple text progress display, implemented based
+ on <code class="computeroutput">boost::progress_display</code><sup>[<a name="id655789" href="#ftn.id655789" class="footnote">5</a>]</sup>. The progress display output
+ is enabled using the <acronym class="acronym">UTF</acronym> parameter <a class="link" href="../runtime-config/reference.html#utf.user-guide.runtime-config.parameters">show_progress</a>.
+ </p>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> has no ability to estimate how long the test case execution is going to take and the manual test
+ progress update is not supported at this point. The <acronym class="acronym">UTF</acronym> tracks the progress on test case level. If you want to
+ see more frequent progress update, you need to split the test into multiple test cases.
+ </p>
+<p class="first-line-indented">
+ In default configuration both test log and test progress outputs are directed into standard output stream. Any test
+ log messages are going to interfere with test progress display. To prevent this you can either set log level to
+ lower level or redirect either test log or test progress output into different stream during test module
+ initialization. Use following interface to redirect test progress output:
+ </p>
+<pre class="programlisting">boost::unit_test::progress_monitor.set_stream( std::ostream&amp; )</pre>
+<div class="example">
+<a name="utf.user-guide.test-output.progress.example49"></a><p class="title"><b>Example 33. Progress report for the test module with large amount of test cases</b></p>
+<div class="example-contents">
+<pre class="programlisting">#include &lt;boost/test/included/unit_test.hpp&gt;
+using namespace boost::unit_test;
+
+//____________________________________________________________________________//
+
+void free_test_function()
+{
+ BOOST_CHECK( true /* test assertion */ );
+}
+
+//____________________________________________________________________________//
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+ for( int i=0; i &lt; 10000; i++ )
+ framework::master_test_suite().
+ add( BOOST_TEST_CASE( &amp;free_test_function ) );
+
+ return 0;
+}
+
+//____________________________________________________________________________//
+</pre>
+<table class="simplelist" border="0" summary="Simple list"><tr>
+<td><code class="literal">Source code</code></td>
+<td> | </td>
+<td><code class="literal">Show output</code></td>
+</tr></table>
+<pre class="example-output" id="example49-output">&gt; example --show_progress=yes --log_level=nothing
+
+0% 10 20 30 40 50 60 70 80 90 100%
+|----|----|----|----|----|----|----|----|----|----|
+***************************************************
+
+*** No errors detected
+</pre>
+</div>
+</div>
+<br class="example-break"><div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><acronym class="acronym"><sup>[<a name="ftn.id655789" href="#id655789" class="acronym">5</a>] </sup>UTF</acronym></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="results-report.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-output.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../runtime-config.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/test-runners.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/test-runners.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,168 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The supplied test runners or where is the entrance?</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="usage-variants/extern-test-runner-variant.html" title="The external test runner variant of the UTF">
+<link rel="next" href="usage-variants/extern-test-runner.html" title="External test runner variant of the UTF">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Supplied test runners</b><a href="initialization.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="usage-variants/extern-test-runner.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.test-runners"></a>The supplied test runners or where is the entrance?</h4></div></div></div>
+<p class="first-line-indented">
+ All usage variants of the <acronym class="acronym">UTF</acronym>, excluding the
+ <a class="link" href="usage-variants/extern-test-runner.html" title="External test runner variant of the UTF">external test runner</a>, supply the test runner in a form of
+ free function named unit_test_main with the following signature:
+ </p>
+<pre class="programlisting">int unit_test_main( init_unit_test_func init_func, int argc, char* argv[] );</pre>
+<p class="first-line-indented">
+ To invoke the test runner you are required to supply the pointer to the <a class="link" href="../user-guide.html#test-module.def">test module</a>
+ initialization function as the first argument to the test runner function. In majority of the cases this function is
+ invoked directly from test executable entry point - function main(). In most usage variants the <acronym class="acronym">UTF</acronym> can
+ automatically generate default function main() implementation as either part of the library or test module itself.
+ Since the function main needs to refer to the initialization function by name, it is predefined by the default
+ implementation and you are required to match both specific signature and name, when implementing initialization
+ function. If you for any reason prefer more flexibility you can opt to implement the function main() yourself, in
+ which case it's going to be your responsibility to invoke the test runner, but the initialization function name is
+ not enforces the <acronym class="acronym">UTF</acronym>. See below for flags that needs to be defined/undefined in each usage variant to enable this.
+ </p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In spite syntactic similarity the signatures of the test runner function in fact are different for different usage
+ variants. The cause is different signature of the test module initialization function referred by the
+ <a class="link" href="initialization.html#utf.user-guide.initialization.signature-typedef" title="Initialization function signature access">typedef init_unit_test_func</a>. This makes static
+ and dynamic library usage variants incompatible and they can't be easily switched on a fly.
+ </p></td></tr>
+</table></div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.static-lib-runner"></a>Static library variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ By default this variant supplies the function main() as part of static library. If this is for any reason undesirable
+ you need to define the flag <a class="xref" href="../compilation.html#utf.flag.no-main">BOOST_TEST_NO_MAIN</a> during the library
+ compilation and the function main() implementation won't be generated.
+ </p>
+<p class="first-line-indented">
+ In addition to the <a class="link" href="usage-variants/static-lib-variant.html" title="The static library variant of the UTF">initialization function signature requirement</a>
+ default function main() implementation assumes the name of initialization function is init_unit_test_suite
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.dynamic-lib-runner"></a>Dynamic library variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ Unlike the static library variant function main() can't reside in the dynamic library body. Instead this variant
+ supplies default function main() implementation as part of the header
+ <code class="filename">boost/test/unit_test.hpp</code> to be generated as part of your test file body.
+ The function main() is generated only if either the <a class="xref" href="../compilation.html#utf.flag.main">BOOST_TEST_MAIN</a> or
+ the <a class="xref" href="../compilation.html#utf.flag.module">BOOST_TEST_MODULE</a> flags are defined during a test module compilation.
+ For <a class="link" href="../user-guide.html#single-file-test-module.def">single-file test module</a> flags can be defined either in a
+ test module's makefile or before the header <code class="filename">boost/test/unit_test.hpp</code>
+ inclusion. For a <a class="xref" href="../user-guide.html#multi-file-test-module.def">multi-file test module</a> flags can't
+ be defined in makefile and have to be defined in only one of the test files to avoid duplicate copies of the
+ function main().
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The same flags also govern generation of an empty
+ <a class="link" href="initialization.html" title="Test module initialization or ready, set">test module initialization function</a>. This means that if you
+ need to implement either function main() or initialization function manually, you can't define the above flags
+ and are required to manually implement both of them.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.single-header-runner"></a>Single-header variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ By default this variant supplies function main() as part of the header
+ <code class="filename">boost/test/included/unit_test.hpp</code> to be generated as part of your test file
+ body. If this is for any reason undesirable you need to define the flag
+ <a class="xref" href="../compilation.html#utf.flag.no-main">BOOST_TEST_NO_MAIN</a> during test module compilation and the function main()
+ implementation won't be generated.
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.runners-exit-status"></a>Generated exit status values</h5></div></div></div>
+<p class="first-line-indented">
+ Once testing is finished, all supplied test runners report the results and returns an exit status value. Here are
+ the summary of all possible generated values:
+ </p>
+<div class="table">
+<a name="utf.user-guide.runners-exit-status-summary"></a><p class="title"><b>Table 4. Generated exit status values</b></p>
+<div class="table-contents"><table class="table" summary="Generated exit status values">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>Value</th>
+<th>Meaning</th>
+</tr></thead>
+<tbody>
+<tr>
+<td>boost::exit_success</td>
+<td>
+ No errors occurred during the test or the success result code was explicitly requested with the no_result_code
+ parameter.
+ </td>
+</tr>
+<tr>
+<td>boost::exit_test_failure</td>
+<td>
+ Non-fatal errors detected and no uncaught exceptions were thrown during testing or the <acronym class="acronym">UTF</acronym> fails during
+ initialization.
+ </td>
+</tr>
+<tr>
+<td>boost::exit_exception_failure</td>
+<td>
+ Fatal errors were detected or uncaught exceptions thrown during testing.
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="usage-variants/extern-test-runner-variant.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage-variants/extern-test-runner.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The UTF usage variants or the Buridan's donkey parable</title>
+<link rel="stylesheet" href="../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../index.html" title="Boost Test Library">
+<link rel="up" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="prev" href="../user-guide.html" title="Unit Test Framework: User's guide">
+<link rel="next" href="usage-variants/static-lib-variant.html" title="The static library variant of the UTF">
+<script language="JavaScript1.2" src="../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../testing-tools.html">
+ &gt;
+ </a><b>Usage variants</b><a href="test-runners.html">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="usage-variants/static-lib-variant.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="utf.user-guide.usage-variants"></a>The <acronym class="acronym">UTF</acronym> usage variants or the Buridan's donkey parable</h4></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> presents you with 4 different variants how it can be used.
+ </p>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="itemizedlist"><ul type="disc">
+<li><a class="link" href="usage-variants/static-lib-variant.html" title="The static library variant of the UTF">The static library variant</a></li>
+<li><a class="link" href="usage-variants/dynamic-lib-variant.html" title="The dynamic library variant of the UTF">The dynamic library variant</a></li>
+<li><a class="link" href="usage-variants/single-header-variant.html" title="The single-header variant of the UTF">The single-header variant</a></li>
+<li><a class="link" href="usage-variants/extern-test-runner-variant.html" title="The external test runner variant of the UTF">The external test runner variant</a></li>
+</ul></div>
+<p class="first-line-indented">
+ Unlike the Buridan's donkey though, you shouldn't have problems deciding which one to use, since there are
+ clear reasons why would you prefer each one.
+ </p>
+<p class="first-line-indented">
+ In most cases to compile a test module based on the <acronym class="acronym">UTF</acronym> all you need to include is just the single header
+ <code class="filename">boost/test/unit_test.hpp</code>. This header includes internally most of the other
+ headers that contains the <acronym class="acronym">UTF</acronym> definitions. Some advanced features, like the floating point comparison or the
+ logged expectations testing, are defined in independent headers and need to be included explicitly.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../user-guide.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../user-guide.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="usage-variants/static-lib-variant.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants/dynamic-lib-variant.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants/dynamic-lib-variant.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The dynamic library variant of the UTF</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<link rel="prev" href="static-lib-variant.html" title="The static library variant of the UTF">
+<link rel="next" href="single-header-variant.html" title="The single-header variant of the UTF">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Usage variants<a href="../test-runners.html">
+ &gt;
+ </a><b>Dynamic library</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="single-header-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.dynamic-lib-variant"></a>The dynamic library variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ In the project with large number of test modules <a class="link" href="dynamic-lib-variant.html" title="The dynamic library variant of the UTF">the static
+ library</a> variant of the <acronym class="acronym">UTF</acronym> may cause you to waste a lot of disk space, since the <acronym class="acronym">UTF</acronym> is linked
+ statically with every test module. The solution is to link with the <acronym class="acronym">UTF</acronym> built into a dynamic library. If you opt
+ to link a test module with the prebuilt dynamic library, this usage is called the dynamic library variant of the
+ <acronym class="acronym">UTF</acronym>. This variant requires you to define the flag <a class="xref" href="../../compilation.html#utf.flag.dyn-link">BOOST_TEST_DYN_LINK</a>
+ either in a makefile or before the header <code class="filename">boost/test/unit_test.hpp</code>
+ inclusion.
+ </p>
+<p class="first-line-indented">
+ The test runner supplied with this variant requires you to implement the <a class="link" href="../../user-guide.html#test-module.def">test
+ module</a> initialization function that matches the alternative initialization function signature. The <acronym class="acronym">UTF</acronym>
+ provides an ability to <a class="link" href="../initialization.html#utf.user-guide.initialization.auto-generation" title="Automated generation of the test module initialization function">automatically generate</a>
+ an empty test module initialization function with correct signature if no custom initialization is required by a
+ test module.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The name of the test module initialization function is not enforced, since the function is passed as an argument
+ to the test runner.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="static-lib-variant.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-variants.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="single-header-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner-variant.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner-variant.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The external test runner variant of the UTF</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<link rel="prev" href="single-header-variant.html" title="The single-header variant of the UTF">
+<link rel="next" href="../test-runners.html" title="The supplied test runners or where is the entrance?">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Usage variants<a href="../test-runners.html">
+ &gt;
+ </a><b>External test runner</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../test-runners.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.extern-test-runner-variant"></a>The external test runner variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ All other usage variants employ the build-in test runners. If you plan to use an external test runner with your
+ test module you need to build it as a dynamic library. This usage of the <acronym class="acronym">UTF</acronym> is called the external test runner
+ variant of the <acronym class="acronym">UTF</acronym>. The variant requires you to define the flag
+ <a class="xref" href="../../compilation.html#utf.flag.dyn-link">BOOST_TEST_DYN_LINK</a> either in a makefile or before the header
+ <code class="filename">boost/test/unit_test.hpp</code> inclusion. An external test runner utility is
+ required to link with dynamic library.
+ </p>
+<p class="first-line-indented">
+ If an external test runner is based on the test runner built in to the dynamic library (like the standalone
+ boost_test_runner utility supplied by the <acronym class="acronym">UTF</acronym>), it requires you to implement the <a class="link" href="../../user-guide.html#test-module.def">
+ test module</a> initialization function that matches the alternative initialization function signature. The
+ <acronym class="acronym">UTF</acronym> provides an ability to <a class="link" href="../initialization.html#utf.user-guide.initialization.auto-generation" title="Automated generation of the test module initialization function">automatically generate
+ </a> an empty test module initialization function with correct signature if no custom initialization is required
+ by a test module.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ An advanced test runner doesn't have to be based on the build-in one and may require a different
+ test module initialization function signature and/or name.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="single-header-variant.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-variants.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../test-runners.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>External test runner variant of the UTF</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../test-runners.html" title="The supplied test runners or where is the entrance?">
+<link rel="prev" href="../test-runners.html" title="The supplied test runners or where is the entrance?">
+<link rel="next" href="../initialization.html" title="Test module initialization or ready, set">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Supplied test runners<a href="../initialization.html">
+ &gt;
+ </a><b>External test runner</b><a href="../test-runners.html#utf.user-guide.runners-exit-status">
+ &gt;
+ </a>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="../initialization.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.external-test-runner"></a>External test runner variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ The external test runner variant of the <acronym class="acronym">UTF</acronym> supplies the test runner in a form of standalone utility
+ boost_test_runner. You are free to implement different, more advanced, test runners that can be used with this
+ variant.
+ </p>
+<p>
+
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../test-runners.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../test-runners.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../initialization.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The single-header variant of the UTF</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<link rel="prev" href="dynamic-lib-variant.html" title="The dynamic library variant of the UTF">
+<link rel="next" href="extern-test-runner-variant.html" title="The external test runner variant of the UTF">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Usage variants<a href="../test-runners.html">
+ &gt;
+ </a><b>Single header</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="extern-test-runner-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.single-header-variant"></a>The single-header variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ If you prefer to avoid the <a class="link" href="../../compilation/standalone.html" title="Standalone library compilation">standalone library compilation</a>, you
+ should use the single-header variant of the <acronym class="acronym">UTF</acronym>. This variant is implemented, as it follows from its name, in
+ the single header <code class="filename">boost/test/included/unit_test.hpp</code>. An inclusion of
+ the header causes the complete implementation of the <acronym class="acronym">UTF</acronym> to be included as a part of a test module's
+ source file. The header <code class="filename">boost/test/unit_test.hpp</code> doesn't have to be
+ included anymore. You don't have to worry about disabling <a class="link" href="../../compilation/auto-linking.html" title="Support of the auto-linking feature">
+ auto-linking</a> feature either. It's done in the implementation header already. This variant
+ can't be used with the <a class="xref" href="../../user-guide.html#multi-file-test-module.def">multi-file test module</a>.
+ Otherwise it's almost identical from the usage prospective to the static library variant of the <acronym class="acronym">UTF</acronym>.
+ In fact the only difference is the name of the include file:
+ <code class="filename">boost/test/included/unit_test.hpp</code> instead of
+ <code class="filename">boost/test/unit_test.hpp</code>.
+ </p>
+<p class="first-line-indented">
+ The test runner supplied with this variant requires you to implement the <a class="link" href="../../user-guide.html#test-module.def">test
+ module</a> initialization function that matches one of the two specifications depending on the compilation flag
+ <a class="xref" href="../../compilation.html#utf.flag.alt-init-api">BOOST_TEST_ALTERNATIVE_INIT_API</a>. If flag isn't defined you are required to
+ match the original specification. If you define the flag
+ <a class="xref" href="../../compilation.html#utf.flag.alt-init-api">BOOST_TEST_ALTERNATIVE_INIT_API</a> during a test module compilation you are
+ required to use the alternative initialization function specification. The <acronym class="acronym">UTF</acronym> provides an ability to
+ <a class="link" href="../initialization.html#utf.user-guide.initialization.auto-generation" title="Automated generation of the test module initialization function">automatically generate</a> an empty test module
+ initialization function with correct specification if no custom initialization is required by a test module.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="dynamic-lib-variant.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-variants.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="extern-test-runner-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/test/doc/html/utf/user-guide/usage-variants/static-lib-variant.html
==============================================================================
--- (empty file)
+++ trunk/libs/test/doc/html/utf/user-guide/usage-variants/static-lib-variant.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The static library variant of the UTF</title>
+<link rel="stylesheet" href="../../../../style/style.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
+<link rel="home" href="../../../index.html" title="Boost Test Library">
+<link rel="up" href="../usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<link rel="prev" href="../usage-variants.html" title="The UTF usage variants or the Buridan's donkey parable">
+<link rel="next" href="dynamic-lib-variant.html" title="The dynamic library variant of the UTF">
+<script language="JavaScript1.2" src="../../../../js/boost-test.js"></script>
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table width="100%"><tr>
+<td width="10%">Home</td>
+<td valign="middle" align="left"> &gt; The Unit Test Framework &gt; User's guide<a href="../../testing-tools.html">
+ &gt;
+ </a>Usage variants<a href="../test-runners.html">
+ &gt;
+ </a><b>Static library</b>
+</td>
+<td><div class="spirit-nav">
+Prev<a href="dynamic-lib-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div></td>
+</tr></table>
+<hr>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="utf.user-guide.static-lib-variant"></a>The static library variant of the <acronym class="acronym">UTF</acronym>
+</h5></div></div></div>
+<p class="first-line-indented">
+ The <acronym class="acronym">UTF</acronym> can be built into a static library. If you opt to link a test module with the
+ <a class="link" href="../../compilation/standalone.html" title="Standalone library compilation">standalone static library</a>, this usage is called the static library
+ variant of the <acronym class="acronym">UTF</acronym>.
+ </p>
+<p class="first-line-indented">
+ The test runner supplied with this variant requires you to implement the <a class="link" href="../../user-guide.html#test-module.def">test
+ module</a> initialization function that matches one of the two specifications depending on the compilation flag
+ <a class="xref" href="../../compilation.html#utf.flag.alt-init-api">BOOST_TEST_ALTERNATIVE_INIT_API</a>. If flag isn't defined you are required
+ to match the original specification. If you define the flag <a class="xref" href="../../compilation.html#utf.flag.alt-init-api">BOOST_TEST_ALTERNATIVE_INIT_API</a> during a test module compilation you are required to use the alternative
+ initialization function specification. The <acronym class="acronym">UTF</acronym> provides an ability to
+ <a class="link" href="../initialization.html#utf.user-guide.initialization.auto-generation" title="Automated generation of the test module initialization function">automatically generate</a> an empty test module
+ initialization function with correct specification if no custom initialization is required by a test module.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ If you opted to use an alternative initialization API, for a test module to be able to link with prebuilt library,
+ the flag <a class="xref" href="../../compilation.html#utf.flag.alt-init-api">BOOST_TEST_ALTERNATIVE_INIT_API</a> has to be defined both during
+ library and a test module compilation.
+ </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Gennadiy Rozental</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../usage-variants.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../usage-variants.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="dynamic-lib-variant.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/test/index.html
==============================================================================
--- trunk/libs/test/index.html (original)
+++ trunk/libs/test/index.html 2008-07-27 02:50:39 EDT (Sun, 27 Jul 2008)
@@ -1,10 +1,10 @@
 <HTML>
 <HEAD>
-<META http-equiv="refresh" content="0; URL=doc/index.html">
+<META http-equiv="refresh" content="0; URL=doc/html/index.html">
 </HEAD>
 <BODY>
 Automatic redirection failed, please go to
-doc/index.html.
+doc/index.html.
 </BODY>
 </HTML>
 <!-- Copyright Gennadiy Rozental 2001-2004.


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk