diff options
| author | Szczepan Zalega <szczepan@nitrokey.com> | 2017-12-22 16:53:56 +0100 | 
|---|---|---|
| committer | Szczepan Zalega <szczepan@nitrokey.com> | 2017-12-22 16:53:56 +0100 | 
| commit | e9fc58cb304323f07aba736fc523903481404cff (patch) | |
| tree | 59db450412ca101aa9601b3f2174436898f955c1 /unittest/Catch/projects/SelfTest/BDDTests.cpp | |
| parent | 8150ee4edc7e32d5c27cd3e0f68c630d90865638 (diff) | |
| parent | 48b3d82ffe1ed19db9ba3cf7e6536ecf92e27391 (diff) | |
| download | libnitrokey-e9fc58cb304323f07aba736fc523903481404cff.tar.gz libnitrokey-e9fc58cb304323f07aba736fc523903481404cff.tar.bz2 | |
Merge commit '48b3d82ffe1ed19db9ba3cf7e6536ecf92e27391' as 'unittest/Catch'
Diffstat (limited to 'unittest/Catch/projects/SelfTest/BDDTests.cpp')
| -rw-r--r-- | unittest/Catch/projects/SelfTest/BDDTests.cpp | 103 | 
1 files changed, 103 insertions, 0 deletions
| diff --git a/unittest/Catch/projects/SelfTest/BDDTests.cpp b/unittest/Catch/projects/SelfTest/BDDTests.cpp new file mode 100644 index 0000000..2c8bc24 --- /dev/null +++ b/unittest/Catch/projects/SelfTest/BDDTests.cpp @@ -0,0 +1,103 @@ +/* + *  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; } +inline bool itDoesThat(){ return true; } + +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() ); +            } +        } +    } +} + +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!"); +} + +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); +            } +        } +    } +} | 
