diff --git a/include/internal/catch_generators_generic.hpp b/include/internal/catch_generators_generic.hpp index c341014795..b2a0af5e73 100644 --- a/include/internal/catch_generators_generic.hpp +++ b/include/internal/catch_generators_generic.hpp @@ -63,7 +63,7 @@ namespace Generators { if (!m_predicate(m_generator.get())) { // It might happen that there are no values that pass the // filter. In that case we throw an exception. - auto has_initial_value = next(); + auto has_initial_value = nextImpl(); if (!has_initial_value) { Catch::throw_exception(GeneratorException("No valid value found in filtered generator")); } @@ -75,6 +75,11 @@ namespace Generators { } bool next() override { + return nextImpl(); + } + + private: + bool nextImpl() { bool success = m_generator.next(); if (!success) { return false; diff --git a/projects/SelfTest/Baselines/compact.sw.approved.txt b/projects/SelfTest/Baselines/compact.sw.approved.txt index 0d12ebb97a..d66cb98eab 100644 --- a/projects/SelfTest/Baselines/compact.sw.approved.txt +++ b/projects/SelfTest/Baselines/compact.sw.approved.txt @@ -628,6 +628,7 @@ GeneratorsImpl.tests.cpp:: passed: gen.next() for: true GeneratorsImpl.tests.cpp:: passed: gen.get() == 3 for: 3 == 3 GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: filter([] (int) { return false; }, value(1)), Catch::GeneratorException +GeneratorsImpl.tests.cpp:: passed: filter( []( int ) { return false; }, values( { 1, 2, 3 } ) ), Catch::GeneratorException GeneratorsImpl.tests.cpp:: passed: gen.get() == 1 for: 1 == 1 GeneratorsImpl.tests.cpp:: passed: gen.next() for: true GeneratorsImpl.tests.cpp:: passed: gen.get() == 2 for: 2 == 2 diff --git a/projects/SelfTest/Baselines/console.std.approved.txt b/projects/SelfTest/Baselines/console.std.approved.txt index 9de49d9a94..c29715f044 100644 --- a/projects/SelfTest/Baselines/console.std.approved.txt +++ b/projects/SelfTest/Baselines/console.std.approved.txt @@ -1421,5 +1421,5 @@ due to unexpected exception with message: =============================================================================== test cases: 323 | 248 passed | 70 failed | 5 failed as expected -assertions: 1763 | 1607 passed | 131 failed | 25 failed as expected +assertions: 1764 | 1608 passed | 131 failed | 25 failed as expected diff --git a/projects/SelfTest/Baselines/console.sw.approved.txt b/projects/SelfTest/Baselines/console.sw.approved.txt index 7f66312946..2318ebeaa9 100644 --- a/projects/SelfTest/Baselines/console.sw.approved.txt +++ b/projects/SelfTest/Baselines/console.sw.approved.txt @@ -4968,6 +4968,9 @@ with expansion: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_THROWS_AS( filter([] (int) { return false; }, value(1)), Catch::GeneratorException ) +GeneratorsImpl.tests.cpp:: PASSED: + REQUIRE_THROWS_AS( filter( []( int ) { return false; }, values( { 1, 2, 3 } ) ), Catch::GeneratorException ) + ------------------------------------------------------------------------------- Generators internals Take generator @@ -14179,5 +14182,5 @@ Misc.tests.cpp:: PASSED: =============================================================================== test cases: 323 | 232 passed | 86 failed | 5 failed as expected -assertions: 1780 | 1607 passed | 148 failed | 25 failed as expected +assertions: 1781 | 1608 passed | 148 failed | 25 failed as expected diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt index b7e55e0472..e2a504f523 100644 --- a/projects/SelfTest/Baselines/junit.sw.approved.txt +++ b/projects/SelfTest/Baselines/junit.sw.approved.txt @@ -1,7 +1,7 @@ - + diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt index 0a2d337797..3085648478 100644 --- a/projects/SelfTest/Baselines/xml.sw.approved.txt +++ b/projects/SelfTest/Baselines/xml.sw.approved.txt @@ -5720,7 +5720,15 @@ Nor would this filter([] (int) { return false; }, value(1)), Catch::GeneratorException - + + + filter( []( int ) { return false; }, values( { 1, 2, 3 } ) ), Catch::GeneratorException + + + filter( []( int ) { return false; }, values( { 1, 2, 3 } ) ), Catch::GeneratorException + + +
@@ -16759,9 +16767,9 @@ loose text artifact
- + - +