Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/tests/SelfTest/UsageTests
diff options
context:
space:
mode:
authorMartin Hořeňovský2023-05-31 15:12:23 +0200
committerMartin Hořeňovský2023-05-31 15:12:43 +0200
commit0631b607ee2bbc07c7c238f0b15b23ef21926960 (patch)
treed47dbb561250e80081ae4a6b6e56a512a978e013 /tests/SelfTest/UsageTests
parentdff7513b289f823fec91010f8898b8a01f7dcd12 (diff)
downloadcatch3-0631b607ee2bbc07c7c238f0b15b23ef21926960.tar.gz
Test & document SKIP in generator constructor
Closes #1593
Diffstat (limited to 'tests/SelfTest/UsageTests')
-rw-r--r--tests/SelfTest/UsageTests/Generators.tests.cpp10
-rw-r--r--tests/SelfTest/UsageTests/Skip.tests.cpp27
2 files changed, 32 insertions, 5 deletions
diff --git a/tests/SelfTest/UsageTests/Generators.tests.cpp b/tests/SelfTest/UsageTests/Generators.tests.cpp
index 274c63b8..8e2c387a 100644
--- a/tests/SelfTest/UsageTests/Generators.tests.cpp
+++ b/tests/SelfTest/UsageTests/Generators.tests.cpp
@@ -261,6 +261,10 @@ TEST_CASE("Copy and then generate a range", "[generators]") {
}
}
+#if defined( __clang__ )
+# pragma clang diagnostic pop
+#endif
+
TEST_CASE("#1913 - GENERATE inside a for loop should not keep recreating the generator", "[regression][generators]") {
static int counter = 0;
for (int i = 0; i < 3; ++i) {
@@ -305,9 +309,5 @@ TEST_CASE( "#2615 - Throwing in constructor generator fails test case but does n
// this should fail the test case, but not abort the application
auto sample = GENERATE( make_test_generator() );
// this assertion shouldn't trigger
- REQUIRE( sample == 0U );
+ REQUIRE( sample == 0 );
}
-
-#if defined( __clang__ )
-# pragma clang diagnostic pop
-#endif
diff --git a/tests/SelfTest/UsageTests/Skip.tests.cpp b/tests/SelfTest/UsageTests/Skip.tests.cpp
index 6bd4189b..661795e1 100644
--- a/tests/SelfTest/UsageTests/Skip.tests.cpp
+++ b/tests/SelfTest/UsageTests/Skip.tests.cpp
@@ -71,3 +71,30 @@ TEST_CASE( "failing for some generator values causes entire test case to fail",
FAIL();
}
}
+
+namespace {
+ class test_skip_generator : public Catch::Generators::IGenerator<int> {
+ public:
+ explicit test_skip_generator() { SKIP( "This generator is empty" ); }
+
+ auto get() const -> int const& override {
+ static constexpr int value = 1;
+ return value;
+ }
+
+ auto next() -> bool override { return false; }
+ };
+
+ static auto make_test_skip_generator()
+ -> Catch::Generators::GeneratorWrapper<int> {
+ return { new test_skip_generator() };
+ }
+
+} // namespace
+
+TEST_CASE( "Empty generators can SKIP in constructor", "[skipping]" ) {
+ // The generator signals emptiness with `SKIP`
+ auto sample = GENERATE( make_test_skip_generator() );
+ // This assertion would fail, but shouldn't trigger
+ REQUIRE( sample == 0 );
+}