mirror of
https://github.com/boostorg/test.git
synced 2026-01-26 19:12:10 +00:00
79 lines
4.4 KiB
HTML
79 lines
4.4 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_CLOSE( left, right, tolerance )<BR>
|
|
BOOST_CHECK_CLOSE( left, right, tolerance )<BR>
|
|
BOOST_REQUIRE_CLOSE( left, right, tolerance )</H3>
|
|
<P class="first-line-indented">These tools are used to check <I>left</I> and <I>right</I> values
|
|
on closeness using strong relationship defined by the predicate <A href="../floating_point_comparison.html" target="_top">close_at_tolerance
|
|
</A>( tolerance_src ). To check for the weak relationship use <A href="BOOST_CHECK_PREDICATE.html">BOOST_<level>_PREDICATE</A>
|
|
tools. Note that to use these tools you need to include additional header<A href="../../../../../../boost/test/floating_point_comparison.hpp">
|
|
floating_point_comparison.hpp</A>. </P>
|
|
<P class="first-line-indented">The first parameter is the <I>left</I> compared
|
|
value. The second parameter is the <I>right</I> compared value. Last third parameter defines the tolerance for
|
|
the comparison in percentage units. For more details how to treat this value
|
|
see <A href="../floating_point_comparison.html" target="_top">close_at_tolerance </A>description.
|
|
Note that it required for <I>left</I> and <I>right</I> parameters to be of the same floating point
|
|
type. You need to explicitly resolve any type mismatch to select which type to use for comparison.</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> <<SPAN class="literal">boost/test/unit_test.hpp</SPAN>>
|
|
#<SPAN class="reserv-word">include</SPAN> <<SPAN class="literal">boost/test/floating_point_comparison.hpp</SPAN>><BR>
|
|
BOOST_AUTO_TEST_CASE( test )
|
|
{
|
|
<SPAN class="cpp-type">double</SPAN> v1 = <SPAN class="literal">1.23456e-10</SPAN>;
|
|
<SPAN class="cpp-type">double</SPAN> v2 = <SPAN class="literal">1.23457e-10</SPAN>;
|
|
|
|
BOOST_CHECK_CLOSE( v1, v2, <SPAN class="literal">0.0001</SPAN> );
|
|
<SPAN class="comment">// Absolute value of difference between these two values is 1e-15. They seems
|
|
// to be very close. But we want to checks that these values differ no more then 0.0001%
|
|
// of their value. And this test will fail at tolerance supplied</SPAN>.
|
|
}</PRE>
|
|
<H4>Output:</H4>
|
|
<P class="test-output">Running 1 test case...<BR>
|
|
test.cpp(10): error in "test": difference between v1{1.23456e-10} and
|
|
v2{1.234571e-10} exceeds 0.0001%<BR>
|
|
<BR>
|
|
*** 1 failure detected in test suite "Master Test Suite"</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> <<SPAN class="literal">boost/test/unit_test.hpp</SPAN>>
|
|
#<SPAN class="reserv-word">include</SPAN> <<SPAN class="literal">boost/test/floating_point_comparison.hpp</SPAN>><BR>
|
|
BOOST_AUTO_TEST_CASE( test )
|
|
{
|
|
<SPAN class="cpp-type">double</SPAN> v1 = <SPAN class="literal">1.23456e28;</SPAN>
|
|
<SPAN class="cpp-type">double</SPAN> v2 = <SPAN class="literal">1.23457e28;</SPAN>
|
|
|
|
BOOST_REQUIRE_CLOSE( v1, v2, <SPAN class="literal">0.001</SPAN> );
|
|
<SPAN class="comment">// Absolute value of difference between these two values is 1e+23.
|
|
// But we are interested only that it does not exeed 0.001% of a values compared
|
|
// And this test will pass.</SPAN>
|
|
}</PRE>
|
|
<H4>Output:</H4>
|
|
<P class="test-output"> </P>
|
|
<DIV class="see_also">
|
|
<H4>See Also</H4>
|
|
<P class="see-also-content">
|
|
<A href="BOOST_CHECK_EQUAL.html" target="descr">BOOST_CHECK_EQUAL</A>,
|
|
<A href="BOOST_CHECK_CLOSE_FRACTION.html" target="descr">BOOST_CHECK_CLOSE_FRACTION</A>,
|
|
<A href="BOOST_CHECK_SMALL.html" target="descr">BOOST_CHECK_SMALL</A>,
|
|
<A href="../floating_point_comparison.html" target="_top">Floating point comparison algorithms</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) -->
|