// // recursive_iterator.t.h // iterator // // Created by Sam Jaffe on 2/17/17. // #pragma once #include #include "recursive_iterator.hpp" class recursive_iterator_one_dimension_TestSuite : public CxxTest::TestSuite { public: void test_vector_iterator_matches_size() { std::vector const vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); decltype(rit) end{ }; TS_ASSERT_EQUALS(std::distance(rit, end), vec.size()); } void test_vector_iterator_matches_data() { std::vector const vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) { TS_ASSERT_EQUALS(*it, *rit); } } void test_vector_can_edit_data() { std::vector vec{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); *rit = 6; TS_ASSERT_EQUALS(vec[0], 6); } void test_vector_vector_matches_size() { std::vector> const vec{{1, 2}, {3, 4, 5}}; std::vector const expected{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); decltype(rit) end{ }; TS_ASSERT_EQUALS(std::distance(rit, end), expected.size()); } void test_vector_vector_matches_data() { std::vector> const vec{{1, 2}, {3, 4, 5}}; std::vector const expected{1, 2, 3, 4, 5}; auto rit = make_recursive_iterator(vec); for (auto it = expected.begin(), end = expected.end(); it != end; ++it, ++rit) { TS_ASSERT_EQUALS(*it, *rit); } } void test_vector_vector_can_edit_data() { std::vector> vec{{1, 2}, {3, 4, 5}}; auto rit = make_recursive_iterator(vec); *rit = 6; TS_ASSERT_EQUALS(vec[0][0], 6); } void test_vector_vector_bounded_matches_size() { std::vector> const vec{{1, 2}, {3, 4, 5}}; auto rit = make_recursive_iterator<1>(vec); decltype(rit) end{ }; TS_ASSERT_EQUALS(std::distance(rit, end), vec.size()); } void test_vector_vector_bounded_matches_data() { std::vector> const vec{{1, 2}, {3, 4, 5}}; auto rit = make_recursive_iterator<1>(vec); for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) { TS_ASSERT_EQUALS(*it, *rit); } } };