1 /*============================================================================= 2 Copyright (c) 2001-2013 Joel de Guzman 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 =============================================================================*/ 7 #if !defined(BOOST_SPIRIT_TEST_FEBRUARY_01_2007_0605PM) 8 #define BOOST_SPIRIT_TEST_FEBRUARY_01_2007_0605PM 9 10 #include <boost/spirit/home/x3/core/parse.hpp> 11 #include <iostream> 12 13 namespace spirit_test 14 { 15 template <typename Char, typename Parser> test(Char const * in,Parser const & p,bool full_match=true)16 bool test(Char const* in, Parser const& p, bool full_match = true) 17 { 18 Char const* last = in; 19 while (*last) 20 last++; 21 return boost::spirit::x3::parse(in, last, p) 22 && (!full_match || (in == last)); 23 } 24 25 template <typename Char, typename Parser, typename Skipper> test(Char const * in,Parser const & p,Skipper const & s,bool full_match=true)26 bool test(Char const* in, Parser const& p 27 , Skipper const& s, bool full_match = true) 28 { 29 Char const* last = in; 30 while (*last) 31 last++; 32 return boost::spirit::x3::phrase_parse(in, last, p, s) 33 && (!full_match || (in == last)); 34 } 35 36 template <typename Char, typename Parser> test_failure(Char const * in,Parser const & p)37 bool test_failure(Char const* in, Parser const& p) 38 { 39 char const * const start = in; 40 Char const* last = in; 41 while (*last) 42 last++; 43 44 return !boost::spirit::x3::parse(in, last, p) && (in == start); 45 } 46 47 template <typename Char, typename Parser, typename Attr> test_attr(Char const * in,Parser const & p,Attr & attr,bool full_match=true)48 bool test_attr(Char const* in, Parser const& p 49 , Attr& attr, bool full_match = true) 50 { 51 Char const* last = in; 52 while (*last) 53 last++; 54 return boost::spirit::x3::parse(in, last, p, attr) 55 && (!full_match || (in == last)); 56 } 57 58 template <typename Char, typename Parser, typename Attr, typename Skipper> test_attr(Char const * in,Parser const & p,Attr & attr,Skipper const & s,bool full_match=true)59 bool test_attr(Char const* in, Parser const& p 60 , Attr& attr, Skipper const& s, bool full_match = true) 61 { 62 Char const* last = in; 63 while (*last) 64 last++; 65 return boost::spirit::x3::phrase_parse(in, last, p, s, attr) 66 && (!full_match || (in == last)); 67 } 68 69 template <typename Char, typename Parser> binary_test(Char const * in,std::size_t size,Parser const & p,bool full_match=true)70 bool binary_test(Char const* in, std::size_t size, Parser const& p, 71 bool full_match = true) 72 { 73 Char const* last = in + size; 74 return boost::spirit::x3::parse(in, last, p) 75 && (!full_match || (in == last)); 76 } 77 78 template <typename Char, typename Parser, typename Skipper> binary_test(Char const * in,std::size_t size,Parser const & p,Skipper const & s,bool full_match=true)79 bool binary_test(Char const* in, std::size_t size, Parser const& p, 80 Skipper const& s, bool full_match = true) 81 { 82 Char const* last = in + size; 83 return boost::spirit::x3::phrase_parse(in, last, p, s) 84 && (!full_match || (in == last)); 85 } 86 87 template <typename Char, typename Parser, typename Attr> binary_test_attr(Char const * in,std::size_t size,Parser const & p,Attr & attr,bool full_match=true)88 bool binary_test_attr(Char const* in, std::size_t size, Parser const& p, 89 Attr& attr, bool full_match = true) 90 { 91 Char const* last = in + size; 92 return boost::spirit::x3::parse(in, last, p, attr) 93 && (!full_match || (in == last)); 94 } 95 96 template <typename Char, typename Parser, typename Attr, typename Skipper> binary_test_attr(Char const * in,std::size_t size,Parser const & p,Attr & attr,Skipper const & s,bool full_match=true)97 bool binary_test_attr(Char const* in, std::size_t size, Parser const& p, 98 Attr& attr, Skipper const& s, bool full_match = true) 99 { 100 Char const* last = in + size; 101 return boost::spirit::x3::phrase_parse(in, last, p, s, attr) 102 && (!full_match || (in == last)); 103 } 104 } 105 106 #endif 107