recursive_iterator_single_level_test.cxx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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.h"
  9. #include <map>
  10. #include <vector>
  11. #include "ranges.h"
  12. #include "xcode_gtest_helper.h"
  13. using iterator::recursive_iterator;
  14. TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) {
  15. std::vector<int> const vec{1, 2, 3, 4, 5};
  16. auto rit = recursive_iterator(vec);
  17. EXPECT_THAT(ranges::distance(rit, iterator::sentinel), vec.size());
  18. }
  19. TEST(RecursiveIteratorSingleVectorTest, DataMatchesContainerIterator) {
  20. std::vector<int> const vec{1, 2, 3, 4, 5};
  21. auto rit = recursive_iterator(vec);
  22. EXPECT_THAT(ranges::to<std::vector<int>>(rit, iterator::sentinel), vec);
  23. }
  24. TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) {
  25. std::vector<int> vec{1, 2, 3, 4, 5};
  26. auto rit = 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 = recursive_iterator(map);
  33. EXPECT_THAT(ranges::distance(rit, iterator::sentinel), map.size());
  34. }
  35. TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) {
  36. std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
  37. auto rit = recursive_iterator(map);
  38. EXPECT_THAT((ranges::to<std::map<int, int>>(rit, iterator::sentinel)), map);
  39. }
  40. TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) {
  41. std::map<int, int> map{{1, 1}, {2, 2}, {3, 3}};
  42. auto rit = recursive_iterator(map);
  43. std::get<1>(*rit) = 4;
  44. EXPECT_THAT(map[1], 4);
  45. }