mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-29 22:21:53 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  *  Created by Phil on 29/11/2010.
 | |
|  *  Copyright 2010 Two Blue Cubes Ltd. All rights reserved.
 | |
|  *
 | |
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
 | |
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | |
|  */
 | |
| 
 | |
| #include "catch.hpp"
 | |
| 
 | |
| namespace { namespace BDDTests {
 | |
| 
 | |
| #ifndef BDD_TEST_HELPERS_INCLUDED // Don't compile this more than once per TU
 | |
| #define BDD_TEST_HELPERS_INCLUDED
 | |
| 
 | |
|     inline bool itDoesThis() { return true; }
 | |
| 
 | |
|     inline bool itDoesThat() { return true; }
 | |
| 
 | |
|     namespace {
 | |
| 
 | |
| // a trivial fixture example to support SCENARIO_METHOD tests
 | |
|         struct Fixture {
 | |
|             Fixture()
 | |
|                     : d_counter(0) {
 | |
|             }
 | |
| 
 | |
|             int counter() {
 | |
|                 return d_counter++;
 | |
|             }
 | |
| 
 | |
|             int d_counter;
 | |
|         };
 | |
| 
 | |
|     }
 | |
| #endif
 | |
| 
 | |
|     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);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }} // namespace BDDtests
 |