| // Boost.Range library |
| // |
| // Copyright Neil Groves 2009. Use, modification and |
| // distribution is subject to 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) |
| // |
| // |
| // For more information, see http://www.boost.org/libs/range/ |
| // |
| #ifndef BOOST_RANGE_TEST_FUNCTIONS_CHECK_EQUAL_FN_HPP_INCLUDED |
| #define BOOST_RANGE_TEST_FUNCTIONS_CHECK_EQUAL_FN_HPP_INCLUDED |
| |
| #include "counted_function.hpp" |
| |
| namespace boost |
| { |
| namespace range_test_function |
| { |
| template< class Collection > |
| class check_equal_fn : private counted_function |
| { |
| typedef BOOST_DEDUCED_TYPENAME Collection::const_iterator iter_t; |
| public: |
| explicit check_equal_fn( const Collection& c ) |
| : m_it(boost::begin(c)), m_last(boost::end(c)) {} |
| |
| using counted_function::invocation_count; |
| |
| void operator()(int x) const |
| { |
| invoked(); |
| BOOST_CHECK( m_it != m_last ); |
| if (m_it != m_last) |
| { |
| BOOST_CHECK_EQUAL( *m_it, x ); |
| ++m_it; |
| } |
| } |
| |
| private: |
| mutable iter_t m_it; |
| iter_t m_last; |
| }; |
| |
| } // namespace range_test_function |
| } // namespace boost |
| |
| #endif // include guard |