// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. // 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 #include #include #include #include "common.hpp" #include #include #include #include #include #include #include #include #include "test_case.hpp" namespace { using boost::metaparse::source_position; using boost::metaparse::next_char; using boost::metaparse::start; typedef source_position sp; typedef next_char next0; } BOOST_METAPARSE_TEST_CASE(source_position) { using boost::metaparse::get_line; using boost::metaparse::get_col; using boost::metaparse::get_prev_char; using boost::metaparse::next_line; using boost::mpl::equal_to; using boost::mpl::not_equal_to; using boost::mpl::not_; using boost::mpl::less; using boost::mpl::greater; using boost::mpl::greater_equal; using boost::mpl::less_equal; // test_get_line BOOST_MPL_ASSERT((equal_to::type>)); // test_get_col BOOST_MPL_ASSERT((equal_to::type>)); // test_get_prev_char BOOST_MPL_ASSERT((equal_to::type>)); // test_line_of_start BOOST_MPL_ASSERT((equal_to::type>)); // test_col_of_start BOOST_MPL_ASSERT((equal_to::type>)); // test_next_chars_char BOOST_MPL_ASSERT((equal_to::type>)); // test_next_chars_line BOOST_MPL_ASSERT((equal_to::type>)); // test_next_lines_char BOOST_MPL_ASSERT(( equal_to >::type> )); // test_next_lines_line BOOST_MPL_ASSERT(( equal_to >::type> )); // test_next_chars_prev_char BOOST_MPL_ASSERT(( equal_to >::type> )); // test_next_lines_prev_char BOOST_MPL_ASSERT(( equal_to >::type> )); // test_equal_source_positions BOOST_MPL_ASSERT((equal_to)); // test_equal_source_positions_when_prev_char_is_different BOOST_MPL_ASSERT(( not_< equal_to< source_position, source_position >::type > )); // test_not_equal_source_positions_when_line_is_different BOOST_MPL_ASSERT(( not_equal_to< source_position, source_position > )); // test_not_equal_source_positions_when_col_is_different BOOST_MPL_ASSERT(( not_equal_to< source_position, source_position > )); // test_source_position_is_not_less_than_itself BOOST_MPL_ASSERT(( not_< less< source_position, source_position >::type > )); // test_source_position_earlier_in_the_same_line_is_less BOOST_MPL_ASSERT(( less< source_position, source_position > )); // test_source_position_later_in_the_same_line_is_not_less BOOST_MPL_ASSERT(( not_< less< source_position, source_position >::type > )); // test_source_position_in_the_same_pos_with_less_char_is_less BOOST_MPL_ASSERT(( less< source_position, source_position > )); // test_source_position_earlier_line_is_less BOOST_MPL_ASSERT(( less< source_position, source_position > )); // test_source_position_later_line_is_not_less BOOST_MPL_ASSERT(( not_< less< source_position, source_position >::type > )); // test_source_position_is_greater_equal_to_itself BOOST_MPL_ASSERT(( greater_equal< source_position, source_position > )); // test_source_position_earlier_in_the_same_line_is_not_greater_equal BOOST_MPL_ASSERT(( not_< greater_equal< source_position, source_position >::type > )); // test_source_position_later_in_the_same_line_is_greater_equal BOOST_MPL_ASSERT(( greater_equal< source_position, source_position > )); // test_source_position_in_the_same_pos_with_less_char_is_not_greater_equal BOOST_MPL_ASSERT(( not_< greater_equal< source_position, source_position >::type > )); // test_source_position_earlier_line_is_not_greater_equal BOOST_MPL_ASSERT(( not_< greater_equal< source_position, source_position >::type > )); // test_source_position_later_line_is_greater_equal BOOST_MPL_ASSERT(( greater_equal< source_position, source_position > )); // test_source_position_is_not_greater_than_itself BOOST_MPL_ASSERT(( not_< greater< source_position, source_position >::type > )); // test_source_position_earlier_in_the_same_line_is_not_greater BOOST_MPL_ASSERT(( not_< greater< source_position, source_position >::type > )); // test_source_position_later_in_the_same_line_is_greater BOOST_MPL_ASSERT(( greater< source_position, source_position > )); // test_source_position_in_the_same_pos_with_less_char_is_not_greater BOOST_MPL_ASSERT(( not_< greater< source_position, source_position >::type > )); // test_source_position_earlier_line_is_not_greater BOOST_MPL_ASSERT(( not_< greater< source_position, source_position >::type > )); // test_source_position_later_line_is_greater BOOST_MPL_ASSERT(( greater< source_position, source_position > )); // test_source_position_is_less_equal_to_itself BOOST_MPL_ASSERT(( less_equal< source_position, source_position > )); // test_source_position_earlier_in_the_same_line_is_less_equal BOOST_MPL_ASSERT(( less_equal< source_position, source_position > )); // test_source_position_later_in_the_same_line_is_not_less_equal BOOST_MPL_ASSERT(( not_< less_equal< source_position, source_position >::type > )); // test_source_position_in_the_same_pos_with_less_char_is_less_equal BOOST_MPL_ASSERT(( less_equal< source_position, source_position > )); // test_source_position_earlier_line_is_less_equal BOOST_MPL_ASSERT(( less_equal< source_position, source_position > )); // test_source_position_later_line_is_not_less_equal BOOST_MPL_ASSERT(( not_< less_equal< source_position, source_position >::type > )); }