recursive_iterator_one_dimension.t.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //
  2. // recursive_iterator.t.h
  3. // iterator
  4. //
  5. // Created by Sam Jaffe on 2/17/17.
  6. //
  7. #pragma once
  8. #include <cxxtest/TestSuite.h>
  9. #include "recursive_iterator.hpp"
  10. class recursive_iterator_one_dimension_TestSuite : public CxxTest::TestSuite {
  11. public:
  12. void test_vector_iterator_matches_size() {
  13. std::vector<int> const vec{1, 2, 3, 4, 5};
  14. auto rit = make_recursive_iterator(vec);
  15. decltype(rit) end{ };
  16. TS_ASSERT_EQUALS(std::distance(rit, end), vec.size());
  17. }
  18. void test_vector_iterator_matches_data() {
  19. std::vector<int> const vec{1, 2, 3, 4, 5};
  20. auto rit = make_recursive_iterator(vec);
  21. for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) {
  22. TS_ASSERT_EQUALS(*it, *rit);
  23. }
  24. }
  25. void test_vector_can_edit_data() {
  26. std::vector<int> vec{1, 2, 3, 4, 5};
  27. auto rit = make_recursive_iterator(vec);
  28. *rit = 6;
  29. TS_ASSERT_EQUALS(vec[0], 6);
  30. }
  31. void test_vector_vector_matches_size() {
  32. std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
  33. std::vector<int> const expected{1, 2, 3, 4, 5};
  34. auto rit = make_recursive_iterator(vec);
  35. decltype(rit) end{ };
  36. TS_ASSERT_EQUALS(std::distance(rit, end), expected.size());
  37. }
  38. void test_vector_vector_matches_data() {
  39. std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
  40. std::vector<int> const expected{1, 2, 3, 4, 5};
  41. auto rit = make_recursive_iterator(vec);
  42. for (auto it = expected.begin(), end = expected.end(); it != end; ++it, ++rit) {
  43. TS_ASSERT_EQUALS(*it, *rit);
  44. }
  45. }
  46. void test_vector_vector_can_edit_data() {
  47. std::vector<std::vector<int>> vec{{1, 2}, {3, 4, 5}};
  48. auto rit = make_recursive_iterator(vec);
  49. *rit = 6;
  50. TS_ASSERT_EQUALS(vec[0][0], 6);
  51. }
  52. void test_vector_vector_bounded_matches_size() {
  53. std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
  54. auto rit = make_recursive_iterator<1>(vec);
  55. decltype(rit) end{ };
  56. TS_ASSERT_EQUALS(std::distance(rit, end), vec.size());
  57. }
  58. void test_vector_vector_bounded_matches_data() {
  59. std::vector<std::vector<int>> const vec{{1, 2}, {3, 4, 5}};
  60. auto rit = make_recursive_iterator<1>(vec);
  61. for (auto it = vec.begin(), end = vec.end(); it != end; ++it, ++rit) {
  62. TS_ASSERT_EQUALS(*it, *rit);
  63. }
  64. }
  65. };