1/*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 Copyright (c) 2011 Bryce Lelbach
4
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7=============================================================================*/
8
9#include "uint.hpp"
10
11int
12main()
13{
14 using spirit_test::test;
15 using spirit_test::test_attr;
16
17 ///////////////////////////////////////////////////////////////////////////
18 // unsigned integer literal tests
19 ///////////////////////////////////////////////////////////////////////////
20 {
21 using boost::spirit::lit;
22 unsigned i = 123456;
23
24 BOOST_TEST( test("123456", lit(123456U)));
25 BOOST_TEST(!test("123456", lit(0U)));
26 BOOST_TEST( test("123456", lit(i)));
27 BOOST_TEST(!test("123456", lit(unsigned(i - 1))));
28 }
29
30 ///////////////////////////////////////////////////////////////////////////
31 // unsigned long long literal tests
32 ///////////////////////////////////////////////////////////////////////////
33#ifdef BOOST_HAS_LONG_LONG
34 {
35 using boost::spirit::lit;
36 using boost::ulong_long_type;
37 ulong_long_type ll = 1234567890123456789ULL;
38
39 BOOST_TEST( test("1234567890123456789", lit(1234567890123456789ULL)));
40 BOOST_TEST(!test("1234567890123456789", lit(0ULL)));
41 BOOST_TEST( test("1234567890123456789", lit(ll)));
42 BOOST_TEST(!test("1234567890123456789", lit(ulong_long_type(ll - 1))));
43 }
44#endif
45
46 ///////////////////////////////////////////////////////////////////////////
47 // ushort_ and ulong_ literal tests
48 ///////////////////////////////////////////////////////////////////////////
49 {
50 using boost::spirit::lit;
51 unsigned short s = 12345;
52 unsigned long l = 1234567890L;
53
54 BOOST_TEST( test("12345", lit(s)));
55 BOOST_TEST(!test("12345", lit(static_cast<unsigned short>(s - 1))));
56 BOOST_TEST( test("1234567890", lit(1234567890UL)));
57 BOOST_TEST(!test("1234567890", lit(98765321UL)));
58 BOOST_TEST( test("1234567890", lit(l)));
59 BOOST_TEST(!test("1234567890", lit(l - 1)));
60 }
61
62 ///////////////////////////////////////////////////////////////////////////
63 // literal lazy tests
64 ///////////////////////////////////////////////////////////////////////////
65 {
66 using boost::phoenix::ref;
67 using boost::spirit::qi::lit;
68 unsigned n = 123, m = 321;
69
70 BOOST_TEST(test("123", lit(ref(n))));
71 BOOST_TEST(!test("123", lit(ref(m))));
72 }
73
74 return boost::report_errors();
75}
76

source code of boost/libs/spirit/test/qi/uint2.cpp