| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // capture_iterator_test.cxx
- // iterator-test
- //
- // Created by Sam Jaffe on 4/1/23.
- // Copyright © 2023 Sam Jaffe. All rights reserved.
- //
- #include "iterator/capture_iterator.h"
- #include "ranges.h"
- #include "xcode_gtest_helper.h"
- using iterator::CaptureIterator;
- using testing::Address;
- using testing::ElementsAre;
- using testing::Not;
- struct fake_iterator {
- using value_type = std::vector<int>;
- using reference = std::vector<int>;
- using pointer = void;
- using difference_type = std::ptrdiff_t;
- using iterator_category = std::output_iterator_tag;
- std::vector<int> operator*() const { return {0, 1, 2}; }
- void operator++() {}
- friend bool operator==(fake_iterator, fake_iterator) { return true; }
- };
- TEST(CaptureIterator, UnderlyingReturnsUnique) {
- auto it = fake_iterator();
- auto const & result = *it;
- EXPECT_THAT(*it, Not(Address(&result)));
- }
- TEST(CaptureIterator, CachesValue) {
- auto it = CaptureIterator(fake_iterator());
- auto const & result = *it;
- EXPECT_THAT(*it, Address(&result));
- }
|