]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/int3.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 Copyright (c) 2001-2011 Hartmut Kaiser
4 Copyright (c) 2011 Bryce Lelbach
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 =============================================================================*/
11 #include <boost/spirit/include/qi_rule.hpp>
16 using spirit_test::test
;
17 using spirit_test::test_attr
;
19 ///////////////////////////////////////////////////////////////////////////
20 // parameterized signed integer tests
21 ///////////////////////////////////////////////////////////////////////////
23 using boost::spirit::int_
;
26 BOOST_TEST(test("123456", int_(123456)));
27 BOOST_TEST(!test("123456", int_(654321)));
28 BOOST_TEST(test_attr("123456", int_(123456), i
));
29 BOOST_TEST(i
== 123456);
30 BOOST_TEST(!test_attr("123456", int_(654321), i
));
32 BOOST_TEST(test("+123456", int_(123456)));
33 BOOST_TEST(!test("+123456", int_(654321)));
34 BOOST_TEST(test_attr("+123456", int_(123456), i
));
35 BOOST_TEST(i
== 123456);
36 BOOST_TEST(!test_attr("+123456", int_(654321), i
));
38 BOOST_TEST(test("-123456", int_(-123456)));
39 BOOST_TEST(!test("-123456", int_(123456)));
40 BOOST_TEST(test_attr("-123456", int_(-123456), i
));
41 BOOST_TEST(i
== -123456);
42 BOOST_TEST(!test_attr("-123456", int_(123456), i
));
44 BOOST_TEST(test(max_int
, int_(INT_MAX
)));
45 BOOST_TEST(test_attr(max_int
, int_(INT_MAX
), i
));
46 BOOST_TEST(i
== INT_MAX
);
48 BOOST_TEST(test(min_int
, int_(INT_MIN
)));
49 BOOST_TEST(test_attr(min_int
, int_(INT_MIN
), i
));
50 BOOST_TEST(i
== INT_MIN
);
53 BOOST_TEST(test("0000000000123456", int_(123456)));
54 BOOST_TEST(test_attr("0000000000123456", int_(123456), i
));
55 BOOST_TEST(i
== 123456);
58 ///////////////////////////////////////////////////////////////////////////
59 // parameterized long long tests
60 ///////////////////////////////////////////////////////////////////////////
61 #ifdef BOOST_HAS_LONG_LONG
63 using boost::spirit::long_long
;
64 boost::long_long_type ll
;
66 BOOST_TEST(test("1234567890123456789"
67 , long_long(1234567890123456789LL)));
68 BOOST_TEST(!test("1234567890123456789"
70 BOOST_TEST(test_attr("1234567890123456789"
71 , long_long(1234567890123456789LL), ll
));
72 BOOST_TEST(ll
== 1234567890123456789LL);
73 BOOST_TEST(!test_attr("1234567890123456789"
76 BOOST_TEST(test("-1234567890123456789"
77 , long_long(-1234567890123456789LL)));
78 BOOST_TEST(!test("-1234567890123456789"
79 , long_long(1234567890123456789LL)));
80 BOOST_TEST(test_attr("-1234567890123456789"
81 , long_long(-1234567890123456789LL), ll
));
82 BOOST_TEST(ll
== -1234567890123456789LL);
83 BOOST_TEST(!test_attr("-1234567890123456789"
84 , long_long(1234567890123456789LL), ll
));
86 BOOST_TEST(test(max_long_long
, long_long(LONG_LONG_MAX
)));
87 BOOST_TEST(test_attr(max_long_long
, long_long(LONG_LONG_MAX
), ll
));
88 BOOST_TEST(ll
== LONG_LONG_MAX
);
90 BOOST_TEST(test(min_long_long
, long_long(LONG_LONG_MIN
)));
91 BOOST_TEST(test_attr(min_long_long
, long_long(LONG_LONG_MIN
), ll
));
92 BOOST_TEST(ll
== LONG_LONG_MIN
);
96 ///////////////////////////////////////////////////////////////////////////
97 // parameterized short_ and long_ tests
98 ///////////////////////////////////////////////////////////////////////////
100 using boost::spirit::short_
;
101 using boost::spirit::long_
;
104 BOOST_TEST(test("12345", short_(12345)));
105 BOOST_TEST(!test("12345", short_(54321)));
106 BOOST_TEST(test_attr("12345", short_(12345), i
));
107 BOOST_TEST(i
== 12345);
108 BOOST_TEST(!test_attr("12345", short_(54321), i
));
110 BOOST_TEST(test("1234567890", long_(1234567890L)));
111 BOOST_TEST(!test("1234567890", long_(987654321L)));
112 BOOST_TEST(test_attr("1234567890", long_(1234567890L), i
));
113 BOOST_TEST(i
== 1234567890);
114 BOOST_TEST(!test_attr("1234567890", long_(987654321L), i
));
117 ///////////////////////////////////////////////////////////////////////////
118 // parameterized action tests
119 ///////////////////////////////////////////////////////////////////////////
121 using boost::phoenix::ref
;
122 using boost::spirit::ascii::space
;
123 using boost::spirit::qi::int_
;
124 using boost::spirit::qi::_1
;
127 BOOST_TEST(test("123", int_(123)[ref(n
) = _1
]));
128 BOOST_TEST(n
== 123);
129 BOOST_TEST(!test("123", int_(321)[ref(n
) = _1
]));
131 BOOST_TEST(test_attr("789", int_(789)[ref(n
) = _1
], m
));
132 BOOST_TEST(n
== 789 && m
== 789);
133 BOOST_TEST(!test_attr("789", int_(987)[ref(n
) = _1
], m
));
135 BOOST_TEST(test(" 456", int_(456)[ref(n
) = _1
], space
));
136 BOOST_TEST(n
== 456);
137 BOOST_TEST(!test(" 456", int_(654)[ref(n
) = _1
], space
));
140 ///////////////////////////////////////////////////////////////////////////
142 using boost::spirit::qi::int_
;
143 using boost::spirit::qi::_1
;
144 using boost::spirit::qi::_val
;
145 using boost::spirit::qi::space
;
149 BOOST_TEST(test_attr("456", int_
[_val
= _1
], i
) && i
== 456);
150 BOOST_TEST(test_attr(" 456", int_
[_val
= _1
], j
, space
) && j
== 456);
153 ///////////////////////////////////////////////////////////////////////////
154 // parameterized lazy tests
155 ///////////////////////////////////////////////////////////////////////////
157 using boost::phoenix::ref
;
158 using boost::spirit::qi::int_
;
159 int n
= 123, m
= 321;
161 BOOST_TEST(test("123", int_(ref(n
))));
162 BOOST_TEST(!test("123", int_(ref(m
))));
165 ///////////////////////////////////////////////////////////////////////////
166 // parameterized custom int tests
167 ///////////////////////////////////////////////////////////////////////////
169 using boost::spirit::qi::int_
;
170 using boost::spirit::qi::int_parser
;
173 BOOST_TEST(test_attr("-123456", int_(-123456), i
));
174 int_parser
<custom_int
, 10, 1, 2> int2
;
175 BOOST_TEST(test_attr("-12", int2(-12), i
));
178 return boost::report_errors();