// // end_aware_iterator.t.h // iterator // // Created by Sam Jaffe on 2/7/17. // #pragma once #include #include #include "end_aware_iterator.hpp" class end_aware_TestSuite : public CxxTest::TestSuite { public: using vec_t = std::vector; using ea_iter = iterator::end_aware_iterator; public: void test_iterator_points_to_same() { vec_t v{1, 2, 3, 4, 5}; TS_ASSERT_EQUALS(*v.begin(), *ea_iter(v.begin(), v.end())); } void test_iterator_edits_same() { vec_t v{1, 2, 3, 4, 5}; *ea_iter(v.begin(), v.end()) = -1; TS_ASSERT_EQUALS(v[0], -1); } void test_not_done_until_end() { vec_t v{1, 2, 3, 4, 5}; ea_iter it{v.end()-1, v.end()}; TS_ASSERT(!it.done()); ++it; TS_ASSERT_EQUALS(it, ea_iter(v.end(),v.end())); TS_ASSERT(it.done()); } void test_cannot_go_past_end() { vec_t v{1, 2, 3, 4, 5}; ea_iter it{v.end(), v.end()}; ea_iter const cp = it; ++it; TS_ASSERT_EQUALS(it, cp); TS_ASSERT(it.done()); } };