// // iterator.t.h // iterator // // Created by Sam Jaffe on 2/7/17. // #pragma once #include #include "join_iterator.hpp" class join_iterator_TestSuite : public CxxTest::TestSuite { public: using vec_t = std::vector; using meta_vec_t = std::vector; using jn_iter = iterator::joining_iterator; // vec_t v{1,2,3,4,5,6}; // meta_vec_t mv{{1,2,3},{4,5,6}}; public: void test_points_to_beginning() { meta_vec_t mv{{1,2,3},{4,5,6}}; TS_ASSERT_EQUALS(*jn_iter(make_end_aware_iterator(mv)), mv[0][0]); } void test_empty_constructor_is_end() { meta_vec_t mv{{1,2,3},{4,5,6}}; jn_iter it( { mv.end(), mv.end() }, { mv.back().end(), mv.back().end() } ); TS_ASSERT_EQUALS(it, jn_iter()); } void test_steps_to_next_list() { meta_vec_t mv{{1,2,3},{4,5,6}}; jn_iter it(make_end_aware_iterator(mv), { mv[0].end(), mv[0].end() }); TS_ASSERT_EQUALS(*++it, mv[1][0]); } void test_cannot_go_past_end() { meta_vec_t mv{{1,2,3},{4,5,6}}; jn_iter it( { mv.end(), mv.end() }, { mv.back().end(), mv.back().end() }); jn_iter const cp = it; ++it; TS_ASSERT_EQUALS(it, cp); } };