| 123456789101112131415161718192021222324252627282930313233343536373839 |
- //
- // stream_test.h
- // stream
- //
- // Created by Sam Jaffe on 4/2/23.
- //
- #pragma once
- #include "xcode_gtest_helper.h"
- namespace ranges = stream::ranges;
- namespace views = stream::ranges::views;
- namespace stream::ranges::testing {
- template <typename It1, typename S1, typename It2, typename S2,
- typename Cmp = std::equal_to<>>
- bool equal(It1 it1, S1 end1, It2 it2, S2 end2,
- ::testing::MatchResultListener * result_listener, Cmp cmp = {}) {
- size_t n = 0;
- for (; it1 != end1 && it2 != end2; ++it1, ++it2, ++n) {
- auto const & left = *it1;
- auto const & right = *it2;
- if (!std::invoke(cmp, left, right)) {
- *result_listener << "at index " << n << " where values were: [" << left
- << "," << right << "] differ";
- return false;
- }
- }
- *result_listener << "whose sizes differ";
- return (it1 != end1) == (it2 != end2);
- }
- }
- MATCHER_P(RangesEq, to_range, "") {
- return stream::ranges::testing::equal(arg.begin(), arg.end(),
- to_range.begin(), to_range.end(),
- result_listener);
- }
|