| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //
- // end_aware_iterator.t.h
- // iterator
- //
- // Created by Sam Jaffe on 2/7/17.
- //
- #pragma once
- #include <cxxtest/TestSuite.h>
- #include <vector>
- #include "end_aware_iterator.hpp"
- class end_aware_TestSuite : public CxxTest::TestSuite {
- public:
- using vec_t = std::vector<int>;
- using ea_iter = iterator::end_aware_iterator<vec_t::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());
- }
-
- };
|