3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>BOOST_<level>_PREDICATE</title>
5 <link rel="stylesheet" href="../../../boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../index.html" title="Boost.Test">
8 <link rel="up" href="../testing_tool_ref.html" title="Reference API for writing tests">
9 <link rel="prev" href="assertion_boost_level_ne.html" title="BOOST_<level>_NE">
10 <link rel="next" href="assertion_boost_level_no_throw.html" title="BOOST_<level>_NO_THROW">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="assertion_boost_level_ne.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tool_ref.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assertion_boost_level_no_throw.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_predicate"></a><a class="link" href="assertion_boost_level_predicate.html" title="BOOST_<level>_PREDICATE"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special"><</span><span class="identifier">level</span><span class="special">></span><span class="identifier">_PREDICATE</span></code></a>
28 </h4></div></div></div>
29 <pre class="programlisting"><span class="identifier">BOOST_WARN_PREDICATE</span><span class="special">(</span><span class="identifier">predicate</span><span class="special">,</span> <span class="identifier">arguments_list</span><span class="special">);</span>
30 <span class="identifier">BOOST_CHECK_PREDICATE</span><span class="special">(</span><span class="identifier">predicate</span><span class="special">,</span> <span class="identifier">arguments_list</span><span class="special">);</span>
31 <span class="identifier">BOOST_REQUIRE_PREDICATE</span><span class="special">(</span><span class="identifier">predicate</span><span class="special">,</span> <span class="identifier">arguments_list</span><span class="special">);</span>
34 These are generic tools used to validate an arbitrary supplied predicate
35 functor (there is a compile time limit on predicate arity defined by the
36 configurable macro <code class="computeroutput"><span class="identifier">BOOST_TEST_MAX_PREDICATE_ARITY</span></code>).
37 To validate zero arity predicate use <a class="link" href="assertion_boost_level.html" title="BOOST_<level>"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special"><</span><span class="identifier">level</span><span class="special">></span></code></a>
38 tools. In other cases prefer theses tools. The advantage of these tools
39 is that they show arguments values in case of predicate failure.
42 The first parameter is the predicate itself. The second parameter is the
43 list of predicate arguments each wrapped in round brackets (<code class="computeroutput"><span class="identifier">BOOST_PP</span></code> sequence format).
46 <a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_predicate.h0"></a>
47 <span class="phrase"><a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_predicate.example_descr"></a></span><a class="link" href="assertion_boost_level_predicate.html#boost_test.utf_reference.testing_tool_ref.assertion_boost_level_predicate.example_descr">Example:
48 BOOST_<level>_PREDICATE usage</a>
50 <div class="informaltable"><table class="table">
51 <colgroup><col></colgroup>
58 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TEST_MODULE</span> <span class="identifier">example</span>
59 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">included</span><span class="special">/</span><span class="identifier">unit_test</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
60 <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">unit_test</span><span class="special">;</span>
62 <span class="keyword">bool</span> <span class="identifier">moo</span><span class="special">(</span> <span class="keyword">int</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">arg2</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">mod</span> <span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="special">((</span><span class="identifier">arg1</span><span class="special">+</span><span class="identifier">arg2</span><span class="special">)</span> <span class="special">%</span> <span class="identifier">mod</span><span class="special">)</span> <span class="special">==</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span>
64 <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">test</span> <span class="special">)</span>
65 <span class="special">{</span>
66 <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">17</span><span class="special">;</span>
67 <span class="keyword">int</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">15</span><span class="special">;</span>
68 <span class="identifier">unit_test_log</span><span class="special">.</span><span class="identifier">set_threshold_level</span><span class="special">(</span> <span class="identifier">log_warnings</span> <span class="special">);</span>
69 <span class="identifier">BOOST_WARN</span><span class="special">(</span> <span class="identifier">moo</span><span class="special">(</span> <span class="number">12</span><span class="special">,</span><span class="identifier">i</span><span class="special">,</span><span class="identifier">j</span> <span class="special">)</span> <span class="special">);</span>
70 <span class="identifier">BOOST_WARN_PREDICATE</span><span class="special">(</span> <span class="identifier">moo</span><span class="special">,</span> <span class="special">(</span><span class="number">12</span><span class="special">)(</span><span class="identifier">i</span><span class="special">)(</span><span class="identifier">j</span><span class="special">)</span> <span class="special">);</span>
71 <span class="special">}</span>
75 <div class="informaltable"><table class="table">
76 <colgroup><col></colgroup>
83 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">></span> <span class="identifier">example</span>
84 <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
85 <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">14</span><span class="special">):</span> <span class="identifier">warning</span> <span class="identifier">in</span> <span class="string">"test"</span><span class="special">:</span> <span class="identifier">condition</span> <span class="identifier">moo</span><span class="special">(</span> <span class="number">12</span><span class="special">,</span><span class="identifier">i</span><span class="special">,</span><span class="identifier">j</span> <span class="special">)</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="identifier">satisfied</span>
86 <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">15</span><span class="special">):</span> <span class="identifier">warning</span> <span class="identifier">in</span> <span class="string">"test"</span><span class="special">:</span> <span class="identifier">condition</span> <span class="identifier">moo</span><span class="special">(</span> <span class="number">12</span><span class="special">,</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">j</span> <span class="special">)</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="identifier">satisfied</span> <span class="keyword">for</span> <span class="special">(</span> <span class="number">12</span><span class="special">,</span> <span class="number">17</span><span class="special">,</span> <span class="number">15</span> <span class="special">)</span>
88 <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
92 <div class="note"><table border="0" summary="Note">
94 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
95 <th align="left">Note</th>
97 <tr><td align="left" valign="top"><p>
98 Note difference in error log from <a class="link" href="assertion_boost_level.html" title="BOOST_<level>"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special"><</span><span class="identifier">level</span><span class="special">></span></code></a>
104 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
105 <a class="link" href="assertion_boost_level.html" title="BOOST_<level>"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special"><</span><span class="identifier">level</span><span class="special">></span></code></a>
108 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
109 <td align="left"></td>
110 <td align="right"><div class="copyright-footer">Copyright © 2001-2019 Boost.Test
112 Distributed under the Boost Software License, Version 1.0. (See accompanying
113 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
118 <div class="spirit-nav">
119 <a accesskey="p" href="assertion_boost_level_ne.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../testing_tool_ref.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assertion_boost_level_no_throw.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>