recursive_iterator_single_level_test.cxx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // recursive_iterator_single_level_test.cxx
  3. // iterator-test
  4. //
  5. // Created by Sam Jaffe on 8/11/20.
  6. // Copyright © 2020 Sam Jaffe. All rights reserved.
  7. //
  8. #include "iterator/recursive_iterator.hpp"
  9. #include <map>
  10. #include <vector>
  11. #include "xcode_gtest_helper.h"
  12. TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) {
  13. std::vector<int> const vec{1, 2, 3, 4, 5};
  14. auto rit = make_recursive_iterator(vec);
  15. decltype(rit) end{};
  16. EXPECT_THAT(std::distance(rit, end), vec.size());
  17. }
  18. TEST(RecursiveIteratorSingleVectorTest, DataMatchesContainerIterator) {
  19. std::vector<int> const vec{1, 2, 3, 4, 5};
  20. auto rit = make_recursive_iterator(vec);
  21. decltype(vec) result(rit, decltype(rit)());
  22. EXPECT_THAT(result, vec);
  23. }
  24. TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) {
  25. std::vector<int> vec{1, 2, 3, 4, 5};
  26. auto rit = make_recursive_iterator(vec);
  27. *rit = 6;
  28. EXPECT_THAT(vec[0], 6);
  29. }
  30. TEST(RecursiveIteratorSingleMapTest, IterDistanceIsContainerSize) {
  31. std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
  32. auto rit = make_recursive_iterator(map);
  33. decltype(rit) end{};
  34. EXPECT_THAT(std::distance(rit, end), map.size());
  35. }
  36. TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) {
  37. std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
  38. auto rit = make_recursive_iterator(map);
  39. decltype(map) result(rit, decltype(rit)());
  40. EXPECT_THAT(result, map);
  41. }
  42. TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) {
  43. std::map<int, int> map{{1, 1}, {2, 2}, {3, 3}};
  44. auto rit = make_recursive_iterator(map);
  45. std::get<1>(*rit) = 4;
  46. EXPECT_THAT(map[1], 4);
  47. }