| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  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"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | inline bool itDoesThis(){ return true; } | 
					
						
							| 
									
										
										
										
											2013-03-04 12:19:15 +01:00
										 |  |  | inline bool itDoesThat(){ return true; } | 
					
						
							| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-12 18:47:53 +00:00
										 |  |  | SCENARIO( "Do that thing with the thing", "[Tags]" ) { | 
					
						
							| 
									
										
										
										
											2013-01-15 23:14:52 +00:00
										 |  |  |     GIVEN( "This stuff exists" ) { | 
					
						
							| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  |         // make stuff exist
 | 
					
						
							| 
									
										
										
										
											2013-01-15 23:14:52 +00:00
										 |  |  |         WHEN( "I do this" ) { | 
					
						
							| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  |             // do this
 | 
					
						
							| 
									
										
										
										
											2012-11-29 08:49:32 +00:00
										 |  |  |             THEN( "it should do this") | 
					
						
							| 
									
										
										
										
											2013-03-04 12:19:15 +01:00
										 |  |  |             { | 
					
						
							| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  |                 REQUIRE( itDoesThis() ); | 
					
						
							| 
									
										
										
										
											2013-03-04 12:19:15 +01:00
										 |  |  |                 AND_THEN( "do that") | 
					
						
							|  |  |  |                     REQUIRE( itDoesThat() ); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2012-09-03 08:19:12 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-03-28 22:13:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 ); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-29 11:42:10 +00:00
										 |  |  | 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]" ) { | 
					
						
							| 
									
										
										
										
											2013-04-05 20:55:57 +01:00
										 |  |  |     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!"); | 
					
						
							| 
									
										
										
										
											2013-03-28 22:13:57 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2014-07-10 10:22:20 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // a trivial fixture example to support SCENARIO_METHOD tests
 | 
					
						
							|  |  |  | struct Fixture | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     Fixture() | 
					
						
							|  |  |  |     : d_counter(0) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     int counter() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return d_counter++; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     int d_counter; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |