]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/int2.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 =============================================================================*/
15 using spirit_test::test
;
16 using spirit_test::test_attr
;
18 ///////////////////////////////////////////////////////////////////////////
19 // signed integer literal tests
20 ///////////////////////////////////////////////////////////////////////////
22 using boost::spirit::lit
;
25 BOOST_TEST( test("123456", lit(123456)));
26 BOOST_TEST(!test("123456", lit(0)));
27 BOOST_TEST( test("123456", lit(i
)));
28 BOOST_TEST(!test("123456", lit(-i
)));
29 BOOST_TEST( test("+425", lit(425)));
30 BOOST_TEST(!test("+425", lit(17)));
31 BOOST_TEST( test("-2000", lit(-2000)));
32 BOOST_TEST(!test("-2000", lit(2000)));
33 BOOST_TEST( test(max_int
, lit(INT_MAX
)));
34 BOOST_TEST(!test(max_int
, lit(INT_MIN
)));
36 BOOST_TEST( test(min_int
, lit(INT_MIN
)));
37 BOOST_TEST(!test(min_int
, lit(INT_MAX
)));
39 BOOST_TEST(!test("-", lit(8451)));
40 BOOST_TEST(!test("+", lit(8451)));
43 BOOST_TEST(test("000000000098765", lit(98765)));
46 ///////////////////////////////////////////////////////////////////////////
47 // long long literal tests
48 ///////////////////////////////////////////////////////////////////////////
49 #ifdef BOOST_HAS_LONG_LONG
51 using boost::spirit::lit
;
52 boost::long_long_type ll
= 1234567890123456789LL;
54 BOOST_TEST( test("1234567890123456789", lit(1234567890123456789LL)));
55 BOOST_TEST(!test("1234567890123456789", lit(-19LL)));
56 BOOST_TEST( test("1234567890123456789", lit(ll
)));
57 BOOST_TEST(!test("1234567890123456789", lit(-ll
)));
58 BOOST_TEST( test("-100000000000000", lit(-100000000000000LL)));
59 BOOST_TEST(!test("-100000000000000", lit(3243515525263LL)));
60 BOOST_TEST( test(max_long_long
, lit(LONG_LONG_MAX
)));
61 BOOST_TEST(!test(max_long_long
, lit(LONG_LONG_MIN
)));
63 BOOST_TEST( test(min_long_long
, lit(LONG_LONG_MIN
)));
64 BOOST_TEST(!test(min_long_long
, lit(LONG_LONG_MAX
)));
68 ///////////////////////////////////////////////////////////////////////////
69 // short_ and long_ literal tests
70 ///////////////////////////////////////////////////////////////////////////
72 using boost::spirit::lit
;
76 BOOST_TEST( test("12345", lit(12345)));
77 BOOST_TEST(!test("12345", lit(-12345)));
78 BOOST_TEST( test("12345", lit(s
)));
79 BOOST_TEST(!test("12345", lit(-s
)));
80 BOOST_TEST( test("-12345", lit(-12345)));
81 BOOST_TEST(!test("-12345", lit(12345)));
82 BOOST_TEST( test("-12345", lit(-s
)));
83 BOOST_TEST(!test("-12345", lit(s
)));
85 BOOST_TEST( test("1234567890", lit(1234567890)));
86 BOOST_TEST(!test("1234567890", lit(-1234567890)));
87 BOOST_TEST( test("1234567890", lit(l
)));
88 BOOST_TEST(!test("1234567890", lit(-l
)));
89 BOOST_TEST( test("-1234567890", lit(-1234567890)));
90 BOOST_TEST(!test("-1234567890", lit(1234567890)));
91 BOOST_TEST( test("-1234567890", lit(-l
)));
92 BOOST_TEST(!test("-1234567890", lit(l
)));
95 ///////////////////////////////////////////////////////////////////////////
97 ///////////////////////////////////////////////////////////////////////////
99 using boost::phoenix::ref
;
100 using boost::spirit::qi::lit
;
101 int n
= 123, m
= 321;
103 BOOST_TEST(test("123", lit(ref(n
))));
104 BOOST_TEST(!test("123", lit(ref(m
))));
107 return boost::report_errors();