2
0
mirror of https://github.com/boostorg/test.git synced 2026-02-01 09:02:08 +00:00
Files
test/doc/components/test_tools/reference/BOOST_CHECK_EXCEPTION.html
Gennadiy Rozental 2dd5c916e4 Mostly test tools docs update
[SVN r29977]
2005-07-11 07:12:18 +00:00

66 lines
3.3 KiB
HTML

<HTML>
<HEAD>
<TITLE>The Test Tools</TITLE>
<LINK rel="stylesheet" type="text/css" href="../../../style/btl.css" media="screen">
<LINK rel="stylesheet" type="text/css" href="../../../style/btl-print.css" media="print">
<META http-equiv="Content-Language" content="en-us">
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<STYLE type="text/css">
H4
{
margin: 0px;
}
</STYLE>
</HEAD>
<BODY>
<DIV class="body">
<H3>BOOST_WARN_EXCEPTION( statement, exception, predicate )<BR>
BOOST_CHECK_EXCEPTION( statement, exception, predicate )<BR>
BOOST_REQUIRE_EXCEPTION( statement, exception, predicate )</H3>
<P class="first-line-indented">These tools are used to perform an exception
detection and validation check. Tools execute the supplied statement
and check that it throw the supplied exception or it's child and that exception
comply to the supplied predicate. If the statement throw any other unrelated
exception, doesn't throw at all or predicate evaluates to <I>false</I> with
caught exception, check fails. In comparison with BOOST_&lt;level&gt;_THROW these
tools allow to perform more fine grained checks, for example that expected
exception has specific error message etc.</P>
<P class="first-line-indented">If check is successful, tools produce a confirmation
message. In case if no exception thrown it produces an
error message in a form &quot;error in &lt;test case name&gt;: exception
&lt;<I>exception</I>&gt; expected. In case if exception does not comply to
specified predicate the tool produces an error message in a form &quot;error
in &lt;test case name&gt;: incorrect exception
&lt;<I>exception</I>&gt; is caught.</P>
<P class="first-line-indented">The first parameter is the statement to execute
while checking for exception. Use block statement if you want to execute
more than one statement. The second parameter is an expected exception.
The last third parameter is a predicate function used to validate caught
exception.</P>
<H4>Example: test.cpp</H4>
<PRE class="code"><SPAN class="reserv-word">struct</SPAN> my_exception {
<SPAN class="reserv-word">explicit</SPAN> my_exception( <SPAN class="cpp-type">int</SPAN> ec = <SPAN class="literal">0</SPAN> ) : m_error_code( EC ) {}
<SPAN class="cpp-type">int</SPAN> m_error_code;
};
<SPAN class="cpp-type">bool</SPAN> is_critical( my_exception <SPAN class="reserv-word">const</SPAN>& ex ) { <SPAN class="reserv-word">return </SPAN>ex.m_error_code < <SPAN class="literal">0</SPAN>; }
<SPAN class="reserv-word">
</SPAN><SPAN class="cpp-type">int</SPAN> test_main( <SPAN class="cpp-type">int</SPAN>, <SPAN class="cpp-type">char</SPAN>* [] ) {
BOOST_CHECK_EXCEPTION( throw my_exception( 1 ), my_exception, is_critical );
<SPAN class="reserv-word">return</SPAN> <SPAN class="literal">0</SPAN>;
}</PRE>
<H4>Output:</H4>
<P class="test-output">test.cpp(9) : error in test_main: incorrect exception my_exception is caught</P>
<DIV class="see_also">
<H4>See Also</H4>
<P class="see-also-content"><A href="BOOST_CHECK_THROW.html" target="descr">BOOST_CHECK_THROW</A></P>
</DIV>
</DIV>
</BODY>
</HTML>
<!-- Copyright Gennadiy Rozental 2001-2005.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt) -->