join_iterator.t.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // iterator.t.h
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 2/7/17.
  6. //
  7. #pragma once
  8. #include <cxxtest/TestSuite.h>
  9. #include "join_iterator.hpp"
  10. class join_iterator_TestSuite : public CxxTest::TestSuite {
  11. public:
  12. using vec_t = std::vector<int>;
  13. using meta_vec_t = std::vector<vec_t>;
  14. using jn_iter = iterator::joining_iterator<meta_vec_t::iterator>;
  15. // vec_t v{1,2,3,4,5,6};
  16. // meta_vec_t mv{{1,2,3},{4,5,6}};
  17. public:
  18. void test_points_to_beginning() {
  19. meta_vec_t mv{{1,2,3},{4,5,6}};
  20. TS_ASSERT_EQUALS(*jn_iter(make_end_aware_iterator(mv)), mv[0][0]);
  21. }
  22. void test_empty_constructor_is_end() {
  23. meta_vec_t mv{{1,2,3},{4,5,6}};
  24. jn_iter it( { mv.end(), mv.end() }, { mv.back().end(), mv.back().end() } );
  25. TS_ASSERT_EQUALS(it, jn_iter());
  26. }
  27. void test_steps_to_next_list() {
  28. meta_vec_t mv{{1,2,3},{4,5,6}};
  29. jn_iter it(make_end_aware_iterator(mv), { mv[0].end(), mv[0].end() });
  30. TS_ASSERT_EQUALS(*++it, mv[1][0]);
  31. }
  32. void test_cannot_go_past_end() {
  33. meta_vec_t mv{{1,2,3},{4,5,6}};
  34. jn_iter it( { mv.end(), mv.end() }, { mv.back().end(), mv.back().end() });
  35. jn_iter const cp = it;
  36. ++it;
  37. TS_ASSERT_EQUALS(it, cp);
  38. }
  39. };