File: BOOST_CHECK_EXCEPTION.html

package info (click to toggle)
boost 1.34.1-14
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 116,412 kB
  • ctags: 259,566
  • sloc: cpp: 642,395; xml: 56,450; python: 17,612; ansic: 14,520; sh: 2,265; yacc: 858; perl: 481; makefile: 478; lex: 94; sql: 74; csh: 6
file content (70 lines) | stat: -rw-r--r-- 3,624 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<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 one inherited from it)
    and that the exception object 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
    tools these tools allow to perform more fine grained checks, for example
    that an 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.
    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">define</SPAN> BOOST_TEST_MAIN<BR>#<SPAN class="reserv-word">include</SPAN> &lt;<SPAN class="literal">boost/test/unit_test.hpp</SPAN>&gt;<BR>
<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>&amp; ex ) { <SPAN class="reserv-word">return </SPAN>ex.m_error_code &lt; <SPAN class="literal">0</SPAN>; }
<SPAN class="reserv-word">
</SPAN>BOOST_AUTO_TEST_CASE( test )
{
    BOOST_CHECK_EXCEPTION( throw my_exception( 1 ), my_exception, is_critical );
}</PRE>
  <H4>Output:</H4>
  <P class="test-output">Running 1 test case...<BR>
    test.cpp(14): error in &quot;test&quot;: incorrect exception my_exception
  is caught<BR>
  <BR>
  *** 1 failure detected in test suite &quot;Master Test Suite&quot;</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-2006. 
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) -->