recursive_iterator_single_level_test.cxx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. TEST(RecursiveIteratorSingleVectorTest, IterDistanceIsContainerSize) {
  14. std::vector<int> const vec{1, 2, 3, 4, 5};
  15. auto rit = make_recursive_iterator(vec);
  16. EXPECT_THAT(ranges::distance(rit, iterator::sentinel), 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. EXPECT_THAT(ranges::to<std::vector<int>>(rit, iterator::sentinel), vec);
  22. }
  23. TEST(RecursiveIteratorSingleVectorTest, CanMutatePointedToData) {
  24. std::vector<int> vec{1, 2, 3, 4, 5};
  25. auto rit = make_recursive_iterator(vec);
  26. *rit = 6;
  27. EXPECT_THAT(vec[0], 6);
  28. }
  29. TEST(RecursiveIteratorSingleMapTest, IterDistanceIsContainerSize) {
  30. std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
  31. auto rit = make_recursive_iterator(map);
  32. EXPECT_THAT(ranges::distance(rit, iterator::sentinel), map.size());
  33. }
  34. TEST(RecursiveIteratorSingleMapTest, DataMatchesContainerIterator) {
  35. std::map<int, int> const map{{1, 1}, {2, 2}, {3, 3}};
  36. auto rit = make_recursive_iterator(map);
  37. EXPECT_THAT((ranges::to<std::map<int, int>>(rit, iterator::sentinel)), map);
  38. }
  39. TEST(RecursiveIteratorSingleMapTest, CanMutatePointedToData) {
  40. std::map<int, int> map{{1, 1}, {2, 2}, {3, 3}};
  41. auto rit = make_recursive_iterator(map);
  42. std::get<1>(*rit) = 4;
  43. EXPECT_THAT(map[1], 4);
  44. }