File: BOOST_CHECK_PREDICATE.html

package info (click to toggle)
boost 1.33.1-10
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 100,948 kB
  • ctags: 145,103
  • sloc: cpp: 573,492; xml: 49,055; python: 15,626; ansic: 13,588; sh: 2,099; yacc: 858; makefile: 660; perl: 427; lex: 111; csh: 6
file content (69 lines) | stat: -rw-r--r-- 3,371 bytes parent folder | download
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
<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_PREDICATE( predicate, arguments_list )<BR>
  BOOST_CHECK_PREDICATE( predicate, arguments_list )<BR>
  BOOST_REQUIRE_PREDICATE( predicate, arguments_list )</H3>
  <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 BOOST_TEST_MAX_PREDICATE_ARITY).
    To validate zero arity predicate use <A href="BOOST_CHECK.html" target="descr">BOOST_&lt;level&gt;</A> tools.
    In other cases prefer theses tools. The advantage of these tools is that
    they show arguments runtime values in case of predicate failure.</P>
  <P class="first-line-indented">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>
  <H4>Example: test.cpp</H4>
<PRE class="code"><SPAN class="cpp-type">bool</SPAN> moo( <SPAN class="cpp-type">int</SPAN> arg1, <SPAN class="cpp-type">int</SPAN> arg2, <SPAN class="cpp-type">int</SPAN> mod ) { <SPAN class="reserv-word">return</SPAN> ((arg1+arg2) % mod) == 0; }

<SPAN class="cpp-type">int</SPAN> test_main( <SPAN class="cpp-type">int</SPAN>, <SPAN class="cpp-type">char</SPAN>* [] ) {
    <SPAN class="cpp-type">int</SPAN> i = <SPAN class="literal">17</SPAN>;
    <SPAN class="cpp-type">int</SPAN> j = <SPAN class="literal">15</SPAN>;
    unit_test_log.set_threshold_level( log_warnings );
    BOOST_WARN( moo( 12,i,j ) );
    BOOST_WARN_PREDICATE( moo, (12)(i)(j) );

    <SPAN class="reserv-word">return</SPAN> <SPAN class="literal">0</SPAN>;
}
</PRE>
  <H4>Output:</H4>
  <P class="test-output">test.cpp(7) : warning in &quot;test_main&quot;: condition
    moo( 12, i, j ) is not satisfied<BR>
    test.cpp(8) : warning in &quot;test_main&quot;:
  condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 )</P>
  <H4>Example: test.cpp</H4>
  <PRE class="code"><SPAN class="cpp-type">int</SPAN> test.cpp( <SPAN class="cpp-type">int</SPAN>, <SPAN class="cpp-type">char</SPAN>* [] ) {
    <SPAN class="cpp-type">int</SPAN> i = <SPAN class="literal">17</SPAN>;

    BOOST_CHECK_PREDICATE( std::not_equal_to&lt;<SPAN class="cpp-type">int</SPAN>&gt;(), <SPAN class="literal">2</SPAN>, (i,<SPAN class="literal">17</SPAN>) );

    <SPAN class="reserv-word">return</SPAN> <SPAN class="literal">0</SPAN>;
}
</PRE>
  <H4>Output:</H4>
  <P class="test-output">test.cpp(3) : error in test_main: test std::not_equal_to&lt;int&gt;()(i, 17) 
    failed for (17, 17) </P>
  <DIV class="see_also"> 
    <H4>See Also</H4>
    <P class="see-also-content"><A href="BOOST_CHECK.html" target="descr">BOOST_CHECK</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) -->