File: BOOST_CHECK_CLOSE.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 (79 lines) | stat: -rw-r--r-- 4,562 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
71
72
73
74
75
76
77
78
79
<!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_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_&lt;level&gt;_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> &lt;<SPAN class="literal">boost/test/unit_test.hpp</SPAN>&gt;
#<SPAN class="reserv-word">include</SPAN> &lt;<SPAN class="literal">boost/test/floating_point_comparison.hpp</SPAN>&gt;<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 &quot;test&quot;: difference between v1{1.23456e-10} and
v2{1.234571e-10} exceeds 0.0001%<BR>
  <BR>
*** 1 failure detected in test suite &quot;Master Test Suite&quot;</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;
#<SPAN class="reserv-word">include</SPAN> &lt;<SPAN class="literal">boost/test/floating_point_comparison.hpp</SPAN>&gt;<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">&nbsp;</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) -->