Fix RangeEquals matcher to handle iterator + sentinel ranges

Also added tests for types that require ADL lookup for their
`begin` and `end`.
This commit is contained in:
Martin Hořeňovský
2023-02-03 16:12:09 +01:00
parent 42d9d4533e
commit f3c0a3cd09
15 changed files with 543 additions and 22 deletions

View File

@@ -14238,6 +14238,89 @@ MatchersRanges.tests.cpp:<line number>: PASSED:
with expansion:
{ 1, 2, 3 } not elements are { 3, 3, 4 }
-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
Ranges that need ADL begin/end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl2 ) )
with expansion:
{ 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) )
with expansion:
{ 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
Check short-circuiting behaviour
Check short-circuits on failure
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE_THAT( mocked1, !RangeEquals( arr ) )
with expansion:
{ 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[0] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[1] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[2] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE_FALSE( mocked1.m_derefed[3] )
with expansion:
!false
-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
Check short-circuiting behaviour
All elements are checked on success
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE_THAT( mocked1, RangeEquals( arr ) )
with expansion:
{ 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[0] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[1] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[2] )
with expansion:
true
MatchersRanges.tests.cpp:<line number>: PASSED:
REQUIRE( mocked1.m_derefed[3] )
with expansion:
true
-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
Basic usage
@@ -18113,5 +18196,5 @@ Misc.tests.cpp:<line number>: PASSED:
===============================================================================
test cases: 409 | 309 passed | 84 failed | 5 skipped | 11 failed as expected
assertions: 2211 | 2034 passed | 145 failed | 32 failed as expected
assertions: 2223 | 2046 passed | 145 failed | 32 failed as expected