Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / test / doc / html / boost_test / utf_reference / testing_tool_ref / assertion_boost_level_close.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>BOOST_&lt;level&gt;_CLOSE</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_eq_collections.html" title="BOOST_&lt;level&gt;_EQUAL_COLLECTIONS">
10 <link rel="next" href="assertion_boost_level_close_fraction.html" title="BOOST_&lt;level&gt;_CLOSE_FRACTION">
11 </head>
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>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="assertion_boost_level_eq_collections.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_close_fraction.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close"></a><a class="link" href="assertion_boost_level_close.html" title="BOOST_&lt;level&gt;_CLOSE"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_CLOSE</span></code></a>
28 </h4></div></div></div>
29 <pre class="programlisting"><span class="identifier">BOOST_WARN_CLOSE</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
30 <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
31 <span class="identifier">BOOST_REQUIRE_CLOSE</span><span class="special">(</span><span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
32 </pre>
33 <p>
34           These tools are used to check on closeness using strong relationship defined
35           by the predicate
36         </p>
37 <pre class="programlisting"><span class="identifier">check_is_close</span><span class="special">(</span> <span class="identifier">left</span><span class="special">,</span> <span class="identifier">right</span><span class="special">,</span> <span class="identifier">tolerance</span> <span class="special">)</span></pre>
38 <p>
39           To check for the weak relationship use <a class="link" href="assertion_boost_level_predicate.html" title="BOOST_&lt;level&gt;_PREDICATE"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_PREDICATE</span></code></a> family of tools with
40           explicit <code class="computeroutput"><span class="identifier">check_is_close</span></code>
41           invocation.
42         </p>
43 <p>
44           The first parameter is the <span class="emphasis"><em>left</em></span> compared value. The
45           second parameter is the <span class="emphasis"><em>right</em></span> compared value. Last
46           third parameter defines the tolerance for the comparison in <a class="link" href="../../testing_tools/extended_comparison/floating_point.html" title="Floating point comparison"><span class="bold"><strong>percentage units</strong></span></a>.
47         </p>
48 <div class="note"><table border="0" summary="Note">
49 <tr>
50 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
51 <th align="left">Note</th>
52 </tr>
53 <tr><td align="left" valign="top"><p>
54             It is required for left and right parameters to be of the same floating
55             point type. You will need to explicitly resolve any type mismatch to
56             select which type to use for comparison.
57           </p></td></tr>
58 </table></div>
59 <div class="note"><table border="0" summary="Note">
60 <tr>
61 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
62 <th align="left">Note</th>
63 </tr>
64 <tr><td align="left" valign="top"><p>
65             The floating point comparison tools are automatically added if the <span class="emphasis"><em>Unit
66             Test Framework</em></span> is included as indicated in the previous sections.
67             The tools are implemented is in the header <code class="computeroutput"><a class="link" href="../../../header/boost/test/tools/floating_point_comparison_hpp.html" title="Header &lt;boost/test/tools/floating_point_comparison.hpp&gt;">boost/test/tools/floating_point_comparison.hpp</a></code>.
68           </p></td></tr>
69 </table></div>
70 <h6>
71 <a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.h0"></a>
72           <span class="phrase"><a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.example_descr"></a></span><a class="link" href="assertion_boost_level_close.html#boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.example_descr">Example:
73           BOOST_&lt;level&gt;_CLOSE usage with small values</a>
74         </h6>
75 <div class="informaltable"><table class="table">
76 <colgroup><col></colgroup>
77 <thead><tr><th>
78                   <p>
79                     Code
80                   </p>
81                 </th></tr></thead>
82 <tbody><tr><td>
83 <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>
84 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
85 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">floating_point_comparison</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
86
87 <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">test</span> <span class="special">)</span>
88 <span class="special">{</span>
89   <span class="keyword">double</span> <span class="identifier">v1</span> <span class="special">=</span> <span class="number">1.23456e-10</span><span class="special">;</span>
90   <span class="keyword">double</span> <span class="identifier">v2</span> <span class="special">=</span> <span class="number">1.23457e-10</span><span class="special">;</span>
91
92   <span class="identifier">BOOST_CHECK_CLOSE</span><span class="special">(</span> <span class="identifier">v1</span><span class="special">,</span> <span class="identifier">v2</span><span class="special">,</span> <span class="number">0.0001</span> <span class="special">);</span>
93   <span class="comment">// Absolute value of difference between these two values is 1e-15. They seems</span>
94   <span class="comment">// to be very close. But we want to checks that these values differ no more then 0.0001%</span>
95   <span class="comment">// of their value. And this test will fail at tolerance supplied.</span>
96 <span class="special">}</span>
97 </pre>
98                 </td></tr></tbody>
99 </table></div>
100 <div class="informaltable"><table class="table">
101 <colgroup><col></colgroup>
102 <thead><tr><th>
103                   <p>
104                     Output
105                   </p>
106                 </th></tr></thead>
107 <tbody><tr><td>
108 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span>
109 <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
110 <span class="identifier">test</span><span class="special">.</span><span class="identifier">cpp</span><span class="special">(</span><span class="number">12</span><span class="special">):</span> <span class="identifier">error</span> <span class="identifier">in</span> <span class="string">"test"</span><span class="special">:</span> <span class="identifier">difference</span> <span class="identifier">between</span> <span class="identifier">v1</span><span class="special">{</span><span class="number">1.23456e-010</span><span class="special">}</span> <span class="keyword">and</span> <span class="identifier">v2</span><span class="special">{</span><span class="number">1.23457e-010</span><span class="special">}</span> <span class="identifier">exceeds</span> <span class="number">0.0001</span><span class="special">%</span>
111
112 <span class="special">***</span> <span class="number">1</span> <span class="identifier">failures</span> <span class="identifier">is</span> <span class="identifier">detected</span> <span class="identifier">in</span> <span class="identifier">test</span> <span class="identifier">suite</span> <span class="string">"example"</span>
113 </pre>
114                 </td></tr></tbody>
115 </table></div>
116 <h6>
117 <a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.h1"></a>
118           <span class="phrase"><a name="boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.example_descr0"></a></span><a class="link" href="assertion_boost_level_close.html#boost_test.utf_reference.testing_tool_ref.assertion_boost_level_close.example_descr0">Example:
119           BOOST_&lt;level&gt;_CLOSE usage with big values</a>
120         </h6>
121 <div class="informaltable"><table class="table">
122 <colgroup><col></colgroup>
123 <thead><tr><th>
124                   <p>
125                     Code
126                   </p>
127                 </th></tr></thead>
128 <tbody><tr><td>
129 <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>
130 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
131 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">floating_point_comparison</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
132
133 <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span> <span class="identifier">test</span> <span class="special">)</span>
134 <span class="special">{</span>
135   <span class="keyword">double</span> <span class="identifier">v1</span> <span class="special">=</span> <span class="number">1.23456e28</span><span class="special">;</span>
136   <span class="keyword">double</span> <span class="identifier">v2</span> <span class="special">=</span> <span class="number">1.23457e28</span><span class="special">;</span>
137
138   <span class="identifier">BOOST_REQUIRE_CLOSE</span><span class="special">(</span> <span class="identifier">v1</span><span class="special">,</span> <span class="identifier">v2</span><span class="special">,</span> <span class="number">0.001</span> <span class="special">);</span>
139   <span class="comment">// Absolute value of difference between these two values is 1e+23.</span>
140   <span class="comment">// But we are interested only that it does not exeed 0.001% of a values compared</span>
141   <span class="comment">// And this test will pass.</span>
142 <span class="special">}</span>
143 </pre>
144                 </td></tr></tbody>
145 </table></div>
146 <div class="informaltable"><table class="table">
147 <colgroup><col></colgroup>
148 <thead><tr><th>
149                   <p>
150                     Output
151                   </p>
152                 </th></tr></thead>
153 <tbody><tr><td>
154 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">&gt;</span> <span class="identifier">example</span>
155 <span class="identifier">Running</span> <span class="number">1</span> <span class="identifier">test</span> <span class="keyword">case</span><span class="special">...</span>
156
157 <span class="special">***</span> <span class="identifier">No</span> <span class="identifier">errors</span> <span class="identifier">detected</span>
158 </pre>
159                 </td></tr></tbody>
160 </table></div>
161 <p>
162           See also:
163         </p>
164 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
165 <li class="listitem">
166               <a class="link" href="assertion_boost_level_close_fraction.html" title="BOOST_&lt;level&gt;_CLOSE_FRACTION"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_CLOSE_FRACTION</span></code></a>
167             </li>
168 <li class="listitem">
169               <a class="link" href="assertion_boost_level_small.html" title="BOOST_&lt;level&gt;_SMALL"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_SMALL</span></code></a>
170             </li>
171 <li class="listitem">
172               <a class="link" href="assertion_boost_level_eq.html" title="BOOST_&lt;level&gt;_EQUAL"><code class="computeroutput"><span class="identifier">BOOST_</span><span class="special">&lt;</span><span class="identifier">level</span><span class="special">&gt;</span><span class="identifier">_EQUAL</span></code></a>
173             </li>
174 <li class="listitem">
175               <a class="link" href="../../testing_tools/extended_comparison/floating_point/floating_points_comparison_theory.html" title="Theory behind floating point comparisons">Floating
176               point comparison algorithms</a>
177             </li>
178 </ul></div>
179 </div>
180 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
181 <td align="left"></td>
182 <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2019 Boost.Test
183       contributors<p>
184         Distributed under the Boost Software License, Version 1.0. (See accompanying
185         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>)
186       </p>
187 </div></td>
188 </tr></table>
189 <hr>
190 <div class="spirit-nav">
191 <a accesskey="p" href="assertion_boost_level_eq_collections.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_close_fraction.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
192 </div>
193 </body>
194 </html>