regression_clear.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright (c) 2010 Daniel James
  2. // Copyright (c) 2001-2010 Hartmut Kaiser
  3. //
  4. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. #include <boost/config/warning_disable.hpp>
  7. #include <boost/detail/lightweight_test.hpp>
  8. #include <boost/spirit/include/qi.hpp>
  9. #include <vector>
  10. int main()
  11. {
  12. typedef char const* Iterator;
  13. namespace qi = boost::spirit::qi;
  14. qi::rule<Iterator, std::vector<boost::iterator_range<Iterator> >()> list;
  15. list = *qi::raw[qi::char_]; // This fails to compile
  16. char const* test = "abcdef";
  17. unsigned test_length = 6;
  18. char const* test_begin = test;
  19. char const* test_end = test + test_length;
  20. std::vector<boost::iterator_range<Iterator> > result;
  21. bool r = qi::parse(test_begin, test_end, list, result);
  22. BOOST_TEST(r);
  23. BOOST_TEST(test_begin == test_end);
  24. BOOST_TEST(result.size() == test_length);
  25. for(unsigned i = 0; i < test_length; ++i) {
  26. BOOST_TEST(result[i].begin() == test + i);
  27. BOOST_TEST(result[i].end() == test + i + 1);
  28. }
  29. return boost::report_errors();
  30. }