]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/real5.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / spirit / test / qi / real5.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 Copyright (c) 2001-2011 Hartmut Kaiser
4 Copyright (c) 2011 Bryce Lelbach
5
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 =============================================================================*/
10
11 #include "real.hpp"
12
13 int
14 main()
15 {
16 using spirit_test::test;
17 using spirit_test::test_attr;
18
19 ///////////////////////////////////////////////////////////////////////////
20 // parameterized signed real number tests
21 ///////////////////////////////////////////////////////////////////////////
22 {
23 using boost::spirit::qi::double_;
24 double d;
25
26 BOOST_TEST(test("+1234", double_(1234)));
27 BOOST_TEST(!test("+1234", double_(-1234)));
28 BOOST_TEST(test_attr("+1234", double_(1234), d));
29 BOOST_TEST(compare(d, 1234));
30 BOOST_TEST(!test_attr("+1234", double_(-1234), d));
31
32 BOOST_TEST(test("-1234", double_(-1234)));
33 BOOST_TEST(!test("-1234", double_(1234)));
34 BOOST_TEST(test_attr("-1234", double_(-1234), d));
35 BOOST_TEST(compare(d, -1234));
36 BOOST_TEST(!test_attr("-1234", double_(1234), d));
37
38 BOOST_TEST(test("+1.2e3", double_(1.2e3)));
39 BOOST_TEST(!test("+1.2e3", double_(-1.2e3)));
40 BOOST_TEST(test_attr("+1.2e3", double_(1.2e3), d));
41 BOOST_TEST(compare(d, 1.2e3));
42 BOOST_TEST(!test_attr("+1.2e3", double_(-1.2e3), d));
43
44 BOOST_TEST(test("-1.2e3", double_(-1.2e3)));
45 BOOST_TEST(!test("-1.2e3", double_(1.2e3)));
46 BOOST_TEST(test_attr("-1.2e3", double_(-1.2e3), d));
47 BOOST_TEST(compare(d, -1.2e3));
48 BOOST_TEST(!test_attr("-1.2e3", double_(1.2e3), d));
49 }
50
51 ///////////////////////////////////////////////////////////////////////////
52 // parameterized unsigned real number tests
53 ///////////////////////////////////////////////////////////////////////////
54 {
55 using boost::spirit::qi::real_parser;
56 using boost::spirit::qi::ureal_policies;
57 double d;
58
59 real_parser<double, ureal_policies<double> > udouble;
60
61 BOOST_TEST(test("1234", udouble(1234)));
62 BOOST_TEST(!test("1234", udouble(4321)));
63 BOOST_TEST(test_attr("1234", udouble(1234), d));
64 BOOST_TEST(compare(d, 1234));
65 BOOST_TEST(!test_attr("1234", udouble(4321), d));
66
67 BOOST_TEST(test("1.2e3", udouble(1.2e3)));
68 BOOST_TEST(!test("1.2e3", udouble(3.2e1)));
69 BOOST_TEST(test_attr("1.2e3", udouble(1.2e3), d));
70 BOOST_TEST(compare(d, 1.2e3));
71 BOOST_TEST(!test_attr("1.2e3", udouble(3.2e1), d));
72 }
73
74 ///////////////////////////////////////////////////////////////////////////
75 // parameterized custom data type
76 ///////////////////////////////////////////////////////////////////////////
77 {
78 using boost::math::concepts::real_concept;
79 using boost::spirit::qi::real_parser;
80 using boost::spirit::qi::real_policies;
81
82 real_parser<real_concept, real_policies<real_concept> > custom_real;
83 real_concept d;
84
85 BOOST_TEST(test("-1234", custom_real(-1234)));
86 BOOST_TEST(!test("-1234", custom_real(4321)));
87 BOOST_TEST(test_attr("-1234", custom_real(-1234), d));
88 BOOST_TEST(compare(d, -1234));
89 BOOST_TEST(!test_attr("-1234", custom_real(-4321), d));
90
91 BOOST_TEST(test("1.2e3", custom_real(1.2e3)));
92 BOOST_TEST(!test("1.2e3", custom_real(-1.2e3)));
93 BOOST_TEST(test_attr("1.2e3", custom_real(1.2e3), d));
94 BOOST_TEST(compare(d, 1.2e3));
95 BOOST_TEST(!test_attr("1.2e3", custom_real(-3.2e1), d));
96 }
97
98 ///////////////////////////////////////////////////////////////////////////
99 // parameterized lazy tests
100 ///////////////////////////////////////////////////////////////////////////
101 {
102 using boost::phoenix::ref;
103 using boost::spirit::qi::double_;
104 double n = 1.2e3, m = 3.2e1;
105
106 BOOST_TEST(test("1.2e3", double_(ref(n))));
107 BOOST_TEST(!test("1.2e3", double_(ref(m))));
108 }
109
110 ///////////////////////////////////////////////////////////////////////////
111 // literal real number tests
112 ///////////////////////////////////////////////////////////////////////////
113 {
114 using boost::spirit::qi::lit;
115
116 BOOST_TEST(test("+1.2e3", lit(1.2e3)));
117 BOOST_TEST(!test("+1.2e3", lit(-1.2e3)));
118 BOOST_TEST(test("-1.2e3", lit(-1.2e3)));
119 BOOST_TEST(!test("-1.2e3", lit(1.2e3)));
120 BOOST_TEST(test("1.2e3", lit(1.2e3)));
121 BOOST_TEST(!test("1.2e3", lit(3.2e1)));
122 }
123
124 ///////////////////////////////////////////////////////////////////////////
125 // literal lazy tests
126 ///////////////////////////////////////////////////////////////////////////
127 {
128 using boost::spirit::qi::lit;
129 using boost::phoenix::ref;
130 double n = 1.2e3, m = 3.2e1;
131
132 BOOST_TEST(test("1.2e3", lit(ref(n))));
133 BOOST_TEST(!test("1.2e3", lit(ref(m))));
134 }
135
136 return boost::report_errors();
137 }