/*============================================================================= Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2011 Bryce Lelbach Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #include "uint.hpp" int main() { using spirit_test::test; using spirit_test::test_attr; /////////////////////////////////////////////////////////////////////////// // unsigned integer literal tests /////////////////////////////////////////////////////////////////////////// { using boost::spirit::lit; unsigned i = 123456; BOOST_TEST( test("123456", lit(123456U))); BOOST_TEST(!test("123456", lit(0U))); BOOST_TEST( test("123456", lit(i))); BOOST_TEST(!test("123456", lit(unsigned(i - 1)))); } /////////////////////////////////////////////////////////////////////////// // unsigned long long literal tests /////////////////////////////////////////////////////////////////////////// #ifdef BOOST_HAS_LONG_LONG { using boost::spirit::lit; using boost::ulong_long_type; ulong_long_type ll = 1234567890123456789ULL; BOOST_TEST( test("1234567890123456789", lit(1234567890123456789ULL))); BOOST_TEST(!test("1234567890123456789", lit(0ULL))); BOOST_TEST( test("1234567890123456789", lit(ll))); BOOST_TEST(!test("1234567890123456789", lit(ulong_long_type(ll - 1)))); } #endif /////////////////////////////////////////////////////////////////////////// // ushort_ and ulong_ literal tests /////////////////////////////////////////////////////////////////////////// { using boost::spirit::lit; unsigned short s = 12345; unsigned long l = 1234567890L; BOOST_TEST( test("12345", lit(s))); BOOST_TEST(!test("12345", lit(s - 1))); BOOST_TEST( test("1234567890", lit(1234567890UL))); BOOST_TEST(!test("1234567890", lit(98765321UL))); BOOST_TEST( test("1234567890", lit(l))); BOOST_TEST(!test("1234567890", lit(l - 1))); } /////////////////////////////////////////////////////////////////////////// // literal lazy tests /////////////////////////////////////////////////////////////////////////// { using boost::phoenix::ref; using boost::spirit::qi::lit; unsigned n = 123, m = 321; BOOST_TEST(test("123", lit(ref(n)))); BOOST_TEST(!test("123", lit(ref(m)))); } return boost::report_errors(); }