| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //
- // recursive_iterator.t.h
- // iterator
- //
- // Created by Sam Jaffe on 2/17/17.
- //
- #pragma once
- #include <cxxtest/TestSuite.h>
- #include "recursive_iterator.hpp"
- class recursive_iterator_one_dimension_TestSuite : public CxxTest::TestSuite {
- public:
- void test_vector_iterator_matches_size() {
- std::vector<int> 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<int> 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<int> 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<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
- std::vector<int> 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<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
- std::vector<int> 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<std::vector<int>> 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<std::vector<int>> 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<std::vector<int>> 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);
- }
- }
- };
|