mock_range.hpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Boost.Range library
  2. //
  3. // Copyright Neil Groves 2014. Use, modification and distribution is subject
  4. // to the Boost Software License, Version 1.0. (See accompanying file
  5. // LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. //
  8. // For more information, see http://www.boost.org/libs/range
  9. //
  10. #ifndef BOOST_RANGE_UNIT_TEST_ADAPTOR_MOCK_RANGE_HPP_INCLUDED
  11. #define BOOST_RANGE_UNIT_TEST_ADAPTOR_MOCK_RANGE_HPP_INCLUDED
  12. #include "mock_iterator.hpp"
  13. #include <boost/range/iterator_range_core.hpp>
  14. namespace boost
  15. {
  16. namespace range
  17. {
  18. namespace unit_test
  19. {
  20. // Make a non-empty range that models the corresponding range concept.
  21. // This is only useful in unit tests. It is main use is to help test concepts
  22. // assertions are present.
  23. template<typename TraversalTag>
  24. iterator_range<mock_iterator<TraversalTag> >&
  25. mock_range()
  26. {
  27. static iterator_range<mock_iterator<TraversalTag> > instance(
  28. mock_iterator<TraversalTag>(0),
  29. mock_iterator<TraversalTag>(1));
  30. return instance;
  31. }
  32. template<typename TraversalTag>
  33. const iterator_range<mock_iterator<TraversalTag> >&
  34. mock_const_range()
  35. {
  36. static iterator_range<mock_iterator<TraversalTag> > instance(
  37. mock_iterator<TraversalTag>(0),
  38. mock_iterator<TraversalTag>(1));
  39. return instance;
  40. }
  41. } // namespace unit_test
  42. } // namespace range
  43. } // namespace boost
  44. #endif // include guard