// WARNING! This file is generated. // Copyright (C) 2018 T. Zachary Laine // // 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 #include #include #include using namespace boost::parser; using boost::is_same; using std::optional; using std::variant; using boost::hana::tuple; char const g_chars[] = ""; auto g_first = std::begin(g_chars); auto const g_last = std::end(g_chars); TEST(parser, generated_043_000) { { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | -(-int_ >> *char_ >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, std::vector, optional>>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (-int_ | *char_ | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional, std::vector>>>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(*char_ >> -int_ >> eps >> -int_) | (-int_ >> *char_ >> *char_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>, tuple, std::vector>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (-int_ | *char_ | *char_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, variant, std::vector>>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | -(-int_ >> eps >> eps >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_001) { { constexpr auto parser = -(*char_ | -int_ | eps | -int_) >> (-int_ | eps | eps | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | (-int_ >> *char_ >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, tuple, std::vector>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (-int_ | *char_ | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional, std::vector>>>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(*char_ >> -int_ >> eps >> -int_) | -(-int_ >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>, optional, std::vector>>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (-int_ | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional, std::vector>>>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_002) { { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | (eps >> -int_ >> -int_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, tuple>, std::vector>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(*char_ | -int_ | eps | -int_) >> (eps | -int_ | -int_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional, std::vector>>>>>)); std::string const str = "cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | -(*char_ >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (*char_ | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional>>>>)); std::string const str = "cbcb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(*char_ >> -int_ >> eps >> -int_) | (*char_ >> -int_ >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>, tuple, optional, std::vector, optional>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_003) { { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (*char_ | -int_ | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, variant, optional>>>>)); std::string const str = "cbcb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | -(-int_ >> *char_ >> -int_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, std::vector, std::vector>>>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(*char_ | -int_ | eps | -int_) >> (-int_ | *char_ | -int_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, variant, std::vector>>>>)); std::string const str = "cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ >> -int_ >> eps >> -int_) | (eps >> -int_ >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, std::vector>>>>)); std::string const str = "cb33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (*char_ | -int_ | eps | -int_) >> (eps | -int_ | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, optional>>, optional>>>)); std::string const str = "cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_004) { { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(eps >> *char_ >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | *char_ | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(*char_ >> *char_ >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_005) { { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | *char_ | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (*char_ >> -int_ >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, tuple, optional, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | -int_ | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_006) { { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (-int_ >> eps >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | eps | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(-int_ >> -int_ >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | -int_ | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (-int_ >> eps >> *char_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_007) { { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | eps | *char_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> -int_ >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | -int_ | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (eps >> -int_ >> eps >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | -int_ | eps | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_008) { { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(*char_ >> eps >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (*char_ | eps | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (*char_ >> eps >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, std::vector>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | eps | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(eps >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_009) { { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (*char_ >> eps >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, std::vector>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (*char_ | eps | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(eps >> *char_ >> -int_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, optional, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | *char_ | -int_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_010) { { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (*char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, std::vector>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, std::vector>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (eps >> -int_ >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_011) { { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | -int_ | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(eps >> -int_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | -int_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (*char_ >> -int_ >> eps >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (*char_ | -int_ | eps | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_012) { { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> eps >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, std::vector, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | eps | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (*char_ >> eps >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, tuple, optional>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | eps | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(*char_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_013) { { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (*char_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, std::vector>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (-int_ >> eps >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | eps | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(-int_ >> eps >> -int_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional>, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | eps | -int_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_014) { { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (eps >> eps >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, std::vector>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (eps | eps | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> -int_ >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>, std::vector, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | -int_ | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, variant, std::vector>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (eps >> *char_ >> eps >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, tuple, optional>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_015) { { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | *char_ | eps | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> *char_ >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | *char_ | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (eps >> -int_ >> *char_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | -int_ | *char_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_016) { { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(-int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (-int_ >> *char_ >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | *char_ | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, variant, std::vector>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(eps >> -int_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_017) { { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | -int_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (*char_ >> -int_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, tuple, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | -int_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, variant, optional>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(-int_ >> *char_ >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, std::vector>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (-int_ | *char_ | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_018) { { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (-int_ >> -int_ >> *char_ >> *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, tuple>, std::vector>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (-int_ | -int_ | *char_ | *char_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, variant, std::vector>>>>)); std::string const str = "33"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | -(*char_ >> -int_ >> -int_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, optional, std::vector>>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | -int_ | -int_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, variant, optional>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | (eps >> -int_ >> *char_ >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } } TEST(parser, generated_043_019) { { constexpr auto parser = -(-int_ | eps | *char_ | -int_) >> (eps | -int_ | *char_ | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ >> eps >> *char_ >> -int_) | -(*char_ >> *char_ >> eps >> -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>, optional, optional>>>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (*char_ | *char_ | eps | -int_); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional, optional>>>>>)); std::string const str = "3cb"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = -(-int_ >> eps >> *char_ >> -int_) | (eps >> *char_ >> eps >> eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector, optional>>, std::vector>>>)); std::string const str = "3cb3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } { constexpr auto parser = (-int_ | eps | *char_ | -int_) >> (eps | *char_ | eps | eps); using attr_t = decltype(parse(g_first, g_last, parser)); BOOST_MPL_ASSERT((is_same, std::vector>>, optional>>>>)); std::string const str = "3"; auto first = str.begin(); auto const last = str.end(); attr_t const attr = parse(first, last, parser); EXPECT_TRUE(attr); constexpr auto fail_parser = parser >> repeat(Inf)[int_]; first = str.begin(); auto const fail_attr = parse(first, last, fail_parser); EXPECT_FALSE(fail_attr); { decltype(parse(first, last, fail_parser)) attr; auto const copy = attr; EXPECT_FALSE(parse(first, last, fail_parser, attr)); EXPECT_EQ(attr, copy); } } }