]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/x3/real2.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2015 Joel de Guzman
3 Copyright (c) 2001-2011 Hartmut Kaiser
4 Copyright (c) 2011 Bryce Lelbach
6 Use, modification and distribution is subject to the Boost Software
7 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 http://www.boost.org/LICENSE_1_0.txt)
9 =============================================================================*/
16 using spirit_test::test
;
17 using spirit_test::test_attr
;
18 ///////////////////////////////////////////////////////////////////////////
19 // signed real number tests
20 ///////////////////////////////////////////////////////////////////////////
22 using boost::spirit::x3::double_
;
23 using boost::spirit::x3::parse
;
26 BOOST_TEST(test("-1234", double_
));
27 BOOST_TEST(test_attr("-1234", double_
, d
) && compare(d
, -1234));
29 BOOST_TEST(test("-1.2e3", double_
));
30 BOOST_TEST(test_attr("-1.2e3", double_
, d
) && compare(d
, -1.2e3
));
32 BOOST_TEST(test("+1.2e3", double_
));
33 BOOST_TEST(test_attr("+1.2e3", double_
, d
) && compare(d
, 1.2e3
));
35 BOOST_TEST(test("-0.1", double_
));
36 BOOST_TEST(test_attr("-0.1", double_
, d
) && compare(d
, -0.1));
38 BOOST_TEST(test("-1.2e-3", double_
));
39 BOOST_TEST(test_attr("-1.2e-3", double_
, d
) && compare(d
, -1.2e-3));
41 BOOST_TEST(test("-1.e2", double_
));
42 BOOST_TEST(test_attr("-1.e2", double_
, d
) && compare(d
, -1.e2
));
44 BOOST_TEST(test("-.2e3", double_
));
45 BOOST_TEST(test_attr("-.2e3", double_
, d
) && compare(d
, -.2e3
));
47 BOOST_TEST(test("-2e3", double_
));
48 BOOST_TEST(test_attr("-2e3", double_
, d
) && compare(d
, -2e3
));
50 BOOST_TEST(!test("-e3", double_
));
51 BOOST_TEST(!test_attr("-e3", double_
, d
));
53 BOOST_TEST(!test("-1.2e", double_
));
54 BOOST_TEST(!test_attr("-1.2e", double_
, d
));
56 #if defined(BOOST_SPIRIT_TEST_REAL_PRECISION)
57 BOOST_TEST(test_attr("-5.7222349715140557e+307", double_
, d
));
58 BOOST_TEST(d
== -5.7222349715140557e+307); // exact!
60 BOOST_TEST(test_attr("2.0332938517515416e-308", double_
, d
));
61 BOOST_TEST(d
== 2.0332938517515416e-308); // exact!
63 BOOST_TEST(test_attr("20332938517515416e291", double_
, d
));
64 BOOST_TEST(d
== 20332938517515416e291
); // exact!
66 BOOST_TEST(test_attr("2.0332938517515416e307", double_
, d
));
67 BOOST_TEST(d
== 2.0332938517515416e307
); // exact!
70 using boost::math::fpclassify
;
71 using boost::spirit::x3::signbit
; // Boost version is broken
73 BOOST_TEST(test("-inf", double_
));
74 BOOST_TEST(test("-infinity", double_
));
75 BOOST_TEST(test_attr("-inf", double_
, d
) &&
76 FP_INFINITE
== fpclassify(d
) && signbit(d
));
77 BOOST_TEST(test_attr("-infinity", double_
, d
) &&
78 FP_INFINITE
== fpclassify(d
) && signbit(d
));
79 BOOST_TEST(test("-INF", double_
));
80 BOOST_TEST(test("-INFINITY", double_
));
81 BOOST_TEST(test_attr("-INF", double_
, d
) &&
82 FP_INFINITE
== fpclassify(d
) && signbit(d
));
83 BOOST_TEST(test_attr("-INFINITY", double_
, d
) &&
84 FP_INFINITE
== fpclassify(d
) && signbit(d
));
86 BOOST_TEST(test("-nan", double_
));
87 BOOST_TEST(test_attr("-nan", double_
, d
) &&
88 FP_NAN
== fpclassify(d
) && signbit(d
));
89 BOOST_TEST(test("-NAN", double_
));
90 BOOST_TEST(test_attr("-NAN", double_
, d
) &&
91 FP_NAN
== fpclassify(d
) && signbit(d
));
93 BOOST_TEST(test("-nan(...)", double_
));
94 BOOST_TEST(test_attr("-nan(...)", double_
, d
) &&
95 FP_NAN
== fpclassify(d
) && signbit(d
));
96 BOOST_TEST(test("-NAN(...)", double_
));
97 BOOST_TEST(test_attr("-NAN(...)", double_
, d
) &&
98 FP_NAN
== fpclassify(d
) && signbit(d
));
101 return boost::report_errors();