]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
f67539c2 TL |
13 | #include <boost/phoenix/core/reference.hpp> |
14 | ||
7c673cae FG |
15 | int |
16 | main() | |
17 | { | |
18 | using spirit_test::test; | |
19 | using spirit_test::test_attr; | |
20 | ||
21 | /////////////////////////////////////////////////////////////////////////// | |
22 | // parameterized signed real number tests | |
23 | /////////////////////////////////////////////////////////////////////////// | |
24 | { | |
25 | using boost::spirit::qi::double_; | |
26 | double d; | |
27 | ||
28 | BOOST_TEST(test("+1234", double_(1234))); | |
29 | BOOST_TEST(!test("+1234", double_(-1234))); | |
30 | BOOST_TEST(test_attr("+1234", double_(1234), d)); | |
31 | BOOST_TEST(compare(d, 1234)); | |
32 | BOOST_TEST(!test_attr("+1234", double_(-1234), d)); | |
33 | ||
34 | BOOST_TEST(test("-1234", double_(-1234))); | |
35 | BOOST_TEST(!test("-1234", double_(1234))); | |
36 | BOOST_TEST(test_attr("-1234", double_(-1234), d)); | |
37 | BOOST_TEST(compare(d, -1234)); | |
38 | BOOST_TEST(!test_attr("-1234", double_(1234), d)); | |
39 | ||
40 | BOOST_TEST(test("+1.2e3", double_(1.2e3))); | |
41 | BOOST_TEST(!test("+1.2e3", double_(-1.2e3))); | |
42 | BOOST_TEST(test_attr("+1.2e3", double_(1.2e3), d)); | |
43 | BOOST_TEST(compare(d, 1.2e3)); | |
44 | BOOST_TEST(!test_attr("+1.2e3", double_(-1.2e3), d)); | |
45 | ||
46 | BOOST_TEST(test("-1.2e3", double_(-1.2e3))); | |
47 | BOOST_TEST(!test("-1.2e3", double_(1.2e3))); | |
48 | BOOST_TEST(test_attr("-1.2e3", double_(-1.2e3), d)); | |
49 | BOOST_TEST(compare(d, -1.2e3)); | |
50 | BOOST_TEST(!test_attr("-1.2e3", double_(1.2e3), d)); | |
51 | } | |
52 | ||
53 | /////////////////////////////////////////////////////////////////////////// | |
54 | // parameterized unsigned real number tests | |
55 | /////////////////////////////////////////////////////////////////////////// | |
56 | { | |
57 | using boost::spirit::qi::real_parser; | |
58 | using boost::spirit::qi::ureal_policies; | |
59 | double d; | |
60 | ||
61 | real_parser<double, ureal_policies<double> > udouble; | |
62 | ||
63 | BOOST_TEST(test("1234", udouble(1234))); | |
64 | BOOST_TEST(!test("1234", udouble(4321))); | |
65 | BOOST_TEST(test_attr("1234", udouble(1234), d)); | |
66 | BOOST_TEST(compare(d, 1234)); | |
67 | BOOST_TEST(!test_attr("1234", udouble(4321), d)); | |
68 | ||
69 | BOOST_TEST(test("1.2e3", udouble(1.2e3))); | |
70 | BOOST_TEST(!test("1.2e3", udouble(3.2e1))); | |
71 | BOOST_TEST(test_attr("1.2e3", udouble(1.2e3), d)); | |
72 | BOOST_TEST(compare(d, 1.2e3)); | |
73 | BOOST_TEST(!test_attr("1.2e3", udouble(3.2e1), d)); | |
74 | } | |
75 | ||
76 | /////////////////////////////////////////////////////////////////////////// | |
77 | // parameterized custom data type | |
78 | /////////////////////////////////////////////////////////////////////////// | |
1e59de90 | 79 | #ifndef BOOST_SPIRIT_NO_MATH_REAL_CONCEPT |
7c673cae FG |
80 | { |
81 | using boost::math::concepts::real_concept; | |
82 | using boost::spirit::qi::real_parser; | |
83 | using boost::spirit::qi::real_policies; | |
84 | ||
85 | real_parser<real_concept, real_policies<real_concept> > custom_real; | |
86 | real_concept d; | |
87 | ||
88 | BOOST_TEST(test("-1234", custom_real(-1234))); | |
89 | BOOST_TEST(!test("-1234", custom_real(4321))); | |
90 | BOOST_TEST(test_attr("-1234", custom_real(-1234), d)); | |
91 | BOOST_TEST(compare(d, -1234)); | |
92 | BOOST_TEST(!test_attr("-1234", custom_real(-4321), d)); | |
93 | ||
94 | BOOST_TEST(test("1.2e3", custom_real(1.2e3))); | |
95 | BOOST_TEST(!test("1.2e3", custom_real(-1.2e3))); | |
96 | BOOST_TEST(test_attr("1.2e3", custom_real(1.2e3), d)); | |
97 | BOOST_TEST(compare(d, 1.2e3)); | |
98 | BOOST_TEST(!test_attr("1.2e3", custom_real(-3.2e1), d)); | |
99 | } | |
1e59de90 | 100 | #endif |
7c673cae FG |
101 | |
102 | /////////////////////////////////////////////////////////////////////////// | |
103 | // parameterized lazy tests | |
104 | /////////////////////////////////////////////////////////////////////////// | |
105 | { | |
106 | using boost::phoenix::ref; | |
107 | using boost::spirit::qi::double_; | |
108 | double n = 1.2e3, m = 3.2e1; | |
109 | ||
110 | BOOST_TEST(test("1.2e3", double_(ref(n)))); | |
111 | BOOST_TEST(!test("1.2e3", double_(ref(m)))); | |
112 | } | |
113 | ||
114 | /////////////////////////////////////////////////////////////////////////// | |
115 | // literal real number tests | |
116 | /////////////////////////////////////////////////////////////////////////// | |
117 | { | |
118 | using boost::spirit::qi::lit; | |
119 | ||
120 | BOOST_TEST(test("+1.2e3", lit(1.2e3))); | |
121 | BOOST_TEST(!test("+1.2e3", lit(-1.2e3))); | |
122 | BOOST_TEST(test("-1.2e3", lit(-1.2e3))); | |
123 | BOOST_TEST(!test("-1.2e3", lit(1.2e3))); | |
124 | BOOST_TEST(test("1.2e3", lit(1.2e3))); | |
125 | BOOST_TEST(!test("1.2e3", lit(3.2e1))); | |
126 | } | |
127 | ||
128 | /////////////////////////////////////////////////////////////////////////// | |
129 | // literal lazy tests | |
130 | /////////////////////////////////////////////////////////////////////////// | |
131 | { | |
132 | using boost::spirit::qi::lit; | |
133 | using boost::phoenix::ref; | |
134 | double n = 1.2e3, m = 3.2e1; | |
135 | ||
136 | BOOST_TEST(test("1.2e3", lit(ref(n)))); | |
137 | BOOST_TEST(!test("1.2e3", lit(ref(m)))); | |
138 | } | |
139 | ||
140 | return boost::report_errors(); | |
141 | } |