aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-06-29 19:28:09 +0100
committerLexi Winter <lexi@le-fay.org>2025-06-29 19:28:09 +0100
commit67b2fae1fa8b033045a44c1355d9dfd8f83e0d9b (patch)
tree1ecd818f4bcf7d12622d43dc92c4d4bb9b746d0f /contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp
parenta8b0ea58e60bb0326b7f7c8f3c736d89ce9ef1df (diff)
parentbc524d70253a4ab2fe40c3ca3e5666e267c0a4d1 (diff)
downloadnihil-67b2fae1fa8b033045a44c1355d9dfd8f83e0d9b.tar.gz
nihil-67b2fae1fa8b033045a44c1355d9dfd8f83e0d9b.tar.bz2
Add 'contrib/catch2/' from commit 'bc524d70253a4ab2fe40c3ca3e5666e267c0a4d1'
git-subtree-dir: contrib/catch2 git-subtree-mainline: a8b0ea58e60bb0326b7f7c8f3c736d89ce9ef1df git-subtree-split: bc524d70253a4ab2fe40c3ca3e5666e267c0a4d1
Diffstat (limited to 'contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp')
-rw-r--r--contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp b/contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp
new file mode 100644
index 0000000..5ac8605
--- /dev/null
+++ b/contrib/catch2/tests/SelfTest/UsageTests/BDD.tests.cpp
@@ -0,0 +1,106 @@
+
+// Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+
+#include <catch2/catch_test_macros.hpp>
+
+namespace {
+
+ static bool itDoesThis() { return true; }
+
+ static bool itDoesThat() { return true; }
+
+ // a trivial fixture example to support SCENARIO_METHOD tests
+ struct Fixture {
+ Fixture(): d_counter( 0 ) {}
+
+ int counter() { return d_counter++; }
+
+ int d_counter;
+ };
+
+}
+
+
+SCENARIO("Do that thing with the thing", "[Tags]") {
+ GIVEN("This stuff exists") {
+ // make stuff exist
+ AND_GIVEN("And some assumption") {
+ // Validate assumption
+ WHEN("I do this") {
+ // do this
+ THEN("it should do this") {
+ REQUIRE(itDoesThis());
+ AND_THEN("do that") {
+ REQUIRE(itDoesThat());
+ }
+ }
+ }
+ }
+ }
+}
+
+SCENARIO( "Vector resizing affects size and capacity",
+ "[vector][bdd][size][capacity]" ) {
+ GIVEN( "an empty vector" ) {
+ std::vector<int> v;
+ REQUIRE( v.size() == 0 );
+
+ WHEN( "it is made larger" ) {
+ v.resize( 10 );
+ THEN( "the size and capacity go up" ) {
+ REQUIRE( v.size() == 10 );
+ REQUIRE( v.capacity() >= 10 );
+
+ AND_WHEN( "it is made smaller again" ) {
+ v.resize( 5 );
+ THEN(
+ "the size goes down but the capacity stays the same" ) {
+ REQUIRE( v.size() == 5 );
+ REQUIRE( v.capacity() >= 10 );
+ }
+ }
+ }
+ }
+
+ WHEN( "we reserve more space" ) {
+ v.reserve( 10 );
+ THEN( "The capacity is increased but the size remains the same" ) {
+ REQUIRE( v.capacity() >= 10 );
+ REQUIRE( v.size() == 0 );
+ }
+ }
+ }
+}
+
+SCENARIO("This is a really long scenario name to see how the list command deals with wrapping",
+ "[very long tags][lots][long][tags][verbose]"
+ "[one very long tag name that should cause line wrapping writing out using the list command]"
+ "[anotherReallyLongTagNameButThisOneHasNoObviousWrapPointsSoShouldSplitWithinAWordUsingADashCharacter]") {
+ GIVEN("A section name that is so long that it cannot fit in a single console width") {
+ WHEN("The test headers are printed as part of the normal running of the scenario") {
+ THEN("The, deliberately very long and overly verbose (you see what I did there?) section names must wrap, along with an indent") {
+ SUCCEED("boo!");
+ }
+ }
+ }
+}
+
+SCENARIO_METHOD(Fixture,
+ "BDD tests requiring Fixtures to provide commonly-accessed data or methods",
+ "[bdd][fixtures]") {
+ const int before(counter());
+ GIVEN("No operations precede me") {
+ REQUIRE(before == 0);
+ WHEN("We get the count") {
+ const int after(counter());
+ THEN("Subsequently values are higher") {
+ REQUIRE(after > before);
+ }
+ }
+ }
+}