2012-09-03 03:19:12 -04: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 06:19:15 -05:00
|
|
|
inline bool itDoesThat(){ return true; }
|
2012-09-03 03:19:12 -04:00
|
|
|
|
2013-03-12 14:47:53 -04:00
|
|
|
SCENARIO( "Do that thing with the thing", "[Tags]" ) {
|
2013-01-15 18:14:52 -05:00
|
|
|
GIVEN( "This stuff exists" ) {
|
2012-09-03 03:19:12 -04:00
|
|
|
// make stuff exist
|
2013-01-15 18:14:52 -05:00
|
|
|
WHEN( "I do this" ) {
|
2012-09-03 03:19:12 -04:00
|
|
|
// do this
|
2012-11-29 03:49:32 -05:00
|
|
|
THEN( "it should do this")
|
2013-03-04 06:19:15 -05:00
|
|
|
{
|
2012-09-03 03:19:12 -04:00
|
|
|
REQUIRE( itDoesThis() );
|
2013-03-04 06:19:15 -05:00
|
|
|
AND_THEN( "do that")
|
|
|
|
REQUIRE( itDoesThat() );
|
|
|
|
}
|
2012-09-03 03:19:12 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-03-28 18:13:57 -04:00
|
|
|
|
|
|
|
SCENARIO( "Vector resizing affects size and capacity", "[vector][bdd][size][capacity]" ) {
|
|
|
|
GIVEN( "an empty vector" ) {
|
|
|
|
std::vector<int> v;
|
|
|
|
REQUIRE( v.size() == 0 );
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2013-03-28 18:13:57 -04:00
|
|
|
WHEN( "it is made larger" ) {
|
|
|
|
v.resize( 10 );
|
|
|
|
THEN( "the size and capacity go up" ) {
|
|
|
|
REQUIRE( v.size() == 10 );
|
|
|
|
REQUIRE( v.capacity() >= 10 );
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2013-03-28 18:13:57 -04:00
|
|
|
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 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2013-03-28 18:13:57 -04:00
|
|
|
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 07:42:10 -04: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 15:55:57 -04: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 18:13:57 -04:00
|
|
|
}
|
2014-07-10 05:22:20 -04:00
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
// a trivial fixture example to support SCENARIO_METHOD tests
|
|
|
|
struct Fixture
|
|
|
|
{
|
|
|
|
Fixture()
|
|
|
|
: d_counter(0)
|
|
|
|
{
|
|
|
|
}
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2014-07-10 05:22:20 -04:00
|
|
|
int counter()
|
|
|
|
{
|
|
|
|
return d_counter++;
|
|
|
|
}
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2014-07-10 05:22:20 -04:00
|
|
|
int d_counter;
|
|
|
|
};
|
2015-11-04 13:01:28 -05:00
|
|
|
|
2014-07-10 05:22:20 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
SCENARIO_METHOD(Fixture,
|
2015-11-04 13:01:28 -05:00
|
|
|
"BDD tests requiring Fixtures to provide commonly-accessed data or methods",
|
2014-07-10 05:22:20 -04:00
|
|
|
"[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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|