Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BDD AND_GIVEN based macros #1363

Merged
merged 2 commits into from
Sep 2, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 14 additions & 10 deletions include/catch.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,12 @@
// "BDD-style" convenience wrappers
#define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ )
#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
#define CATCH_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
#define CATCH_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
#define CATCH_AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And when: " << desc )
#define CATCH_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
#define CATCH_AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )
#define CATCH_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
#define CATCH_AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )
#define CATCH_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
#define CATCH_AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )
#define CATCH_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
#define CATCH_AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )

// If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
#else
Expand Down Expand Up @@ -211,11 +212,12 @@
#define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ )
#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )

#define GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
#define WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
#define AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And when: " << desc )
#define THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
#define AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )
#define GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
#define AND_GIVEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )
#define WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
#define AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )
#define THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
#define AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )

using Catch::Detail::Approx;

Expand Down Expand Up @@ -276,6 +278,7 @@ using Catch::Detail::Approx;
#define CATCH_SCENARIO( ... ) INTERNAL_CATCH_TESTCASE_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ))
#define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), className )
#define CATCH_GIVEN( desc )
#define CATCH_AND_GIVEN( desc )
#define CATCH_WHEN( desc )
#define CATCH_AND_WHEN( desc )
#define CATCH_THEN( desc )
Expand Down Expand Up @@ -340,6 +343,7 @@ using Catch::Detail::Approx;
#define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TESTCASE_METHOD_NO_REGISTRATION(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), className )

#define GIVEN( desc )
#define AND_GIVEN( desc )
#define WHEN( desc )
#define AND_WHEN( desc )
#define THEN( desc )
Expand Down
62 changes: 32 additions & 30 deletions projects/SelfTest/Baselines/console.sw.approved.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4699,7 +4699,7 @@ PASSED:
-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
methods
Given: No operations precede me
Given: No operations precede me
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4713,9 +4713,9 @@ with expansion:
-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
methods
Given: No operations precede me
When: We get the count
Then: Subsequently values are higher
Given: No operations precede me
When: We get the count
Then: Subsequently values are higher
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4728,9 +4728,10 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
Given: This stuff exists
When: I do this
Then: it should do this
Given: This stuff exists
And given: And some assumption
When: I do this
Then: it should do this
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4743,10 +4744,11 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
Given: This stuff exists
When: I do this
Then: it should do this
And: do that
Given: This stuff exists
And given: And some assumption
When: I do this
Then: it should do this
And: do that
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4760,12 +4762,12 @@ with expansion:
-------------------------------------------------------------------------------
Scenario: This is a really long scenario name to see how the list command deals
with wrapping
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
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
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4777,7 +4779,7 @@ with message:

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
Given: an empty vector
Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4790,9 +4792,9 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
Given: an empty vector
When: it is made larger
Then: the size and capacity go up
Given: an empty vector
When: it is made larger
Then: the size and capacity go up
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4811,11 +4813,11 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
Given: an empty vector
When: it is made larger
Then: the size and capacity go up
And when: it is made smaller again
Then: the size goes down but the capacity stays the same
Given: an empty vector
When: it is made larger
Then: the size and capacity go up
And when: it is made smaller again
Then: the size goes down but the capacity stays the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4834,7 +4836,7 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
Given: an empty vector
Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand All @@ -4847,9 +4849,9 @@ with expansion:

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
Given: an empty vector
When: we reserve more space
Then: The capacity is increased but the size remains the same
Given: an empty vector
When: we reserve more space
Then: The capacity is increased but the size remains the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................
Expand Down
4 changes: 2 additions & 2 deletions projects/SelfTest/Baselines/junit.sw.approved.txt
Original file line number Diff line number Diff line change
Expand Up @@ -513,8 +513,8 @@ Matchers.tests.cpp:<line number>
<testcase classname="<exe-name>.global" name="SUCCEED does not require an argument" time="{duration}"/>
<testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me" time="{duration}"/>
<testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me/When: We get the count/Then: Subsequently values are higher" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/When: I do this/Then: it should do this" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/When: I do this/Then: it should do this/And: do that" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this/Then: it should do this" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this/Then: it should do this/And: do that" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: This is a really long scenario name to see how the list command deals with wrapping/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" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger/Then: the size and capacity go up" time="{duration}"/>
Expand Down
29 changes: 16 additions & 13 deletions projects/SelfTest/Baselines/xml.sw.approved.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5463,26 +5463,29 @@
</TestCase>
<TestCase name="Scenario: Do that thing with the thing" tags="[Tags]" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="Given: This stuff exists" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="When: I do this" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="Then: it should do this" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Original>
itDoesThis()
</Original>
<Expanded>
true
</Expanded>
</Expression>
<Section name="And: do that" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="And given: And some assumption" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="When: I do this" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Section name="Then: it should do this" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Original>
itDoesThat()
itDoesThis()
</Original>
<Expanded>
true
</Expanded>
</Expression>
<OverallResults successes="1" failures="0" expectedFailures="0"/>
<Section name="And: do that" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/UsageTests/BDD.tests.cpp" >
<Original>
itDoesThat()
</Original>
<Expanded>
true
</Expanded>
</Expression>
<OverallResults successes="1" failures="0" expectedFailures="0"/>
</Section>
<OverallResults successes="2" failures="0" expectedFailures="0"/>
</Section>
<OverallResults successes="2" failures="0" expectedFailures="0"/>
</Section>
Expand Down
13 changes: 8 additions & 5 deletions projects/SelfTest/UsageTests/BDD.tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,14 @@ namespace { namespace BDDTests {
SCENARIO("Do that thing with the thing", "[Tags]") {
GIVEN("This stuff exists") {
// make stuff exist
WHEN("I do this") {
// do this
THEN("it should do this") {
REQUIRE(itDoesThis());
AND_THEN("do that")REQUIRE(itDoesThat());
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());
}
}
}
}
Expand Down