120-Bdd-ScenarioGivenWhenThen.cpp
1 2 // Copyright Catch2 Authors 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE.txt or copy at 5 // https://www.boost.org/LICENSE_1_0.txt) 6 7 // SPDX-License-Identifier: BSL-1.0 8 9 // 120-Bdd-ScenarioGivenWhenThen.cpp 10 11 // main() provided by linkage with Catch2WithMain 12 13 #include <catch2/catch_test_macros.hpp> 14 15 SCENARIO( "vectors can be sized and resized", "[vector]" ) { 16 17 GIVEN( "A vector with some items" ) { 18 std::vector<int> v( 5 ); 19 20 REQUIRE( v.size() == 5 ); 21 REQUIRE( v.capacity() >= 5 ); 22 23 WHEN( "the size is increased" ) { 24 v.resize( 10 ); 25 26 THEN( "the size and capacity change" ) { 27 REQUIRE( v.size() == 10 ); 28 REQUIRE( v.capacity() >= 10 ); 29 } 30 } 31 WHEN( "the size is reduced" ) { 32 v.resize( 0 ); 33 34 THEN( "the size changes but not capacity" ) { 35 REQUIRE( v.size() == 0 ); 36 REQUIRE( v.capacity() >= 5 ); 37 } 38 } 39 WHEN( "more capacity is reserved" ) { 40 v.reserve( 10 ); 41 42 THEN( "the capacity changes but not the size" ) { 43 REQUIRE( v.size() == 5 ); 44 REQUIRE( v.capacity() >= 10 ); 45 } 46 } 47 WHEN( "less capacity is reserved" ) { 48 v.reserve( 0 ); 49 50 THEN( "neither size nor capacity are changed" ) { 51 REQUIRE( v.size() == 5 ); 52 REQUIRE( v.capacity() >= 5 ); 53 } 54 } 55 } 56 } 57 58 // Compile & run: 59 // - g++ -std=c++14 -Wall -I$(CATCH_SINGLE_INCLUDE) -o 120-Bdd-ScenarioGivenWhenThen 120-Bdd-ScenarioGivenWhenThen.cpp && 120-Bdd-ScenarioGivenWhenThen --success 60 // - cl -EHsc -I%CATCH_SINGLE_INCLUDE% 120-Bdd-ScenarioGivenWhenThen.cpp && 120-Bdd-ScenarioGivenWhenThen --success 61 62 // Expected compact output (all assertions): 63 // 64 // prompt> 120-Bdd-ScenarioGivenWhenThen.exe --reporter compact --success 65 // 120-Bdd-ScenarioGivenWhenThen.cpp:12: passed: v.size() == 5 for: 5 == 5 66 // 120-Bdd-ScenarioGivenWhenThen.cpp:13: passed: v.capacity() >= 5 for: 5 >= 5 67 // 120-Bdd-ScenarioGivenWhenThen.cpp:19: passed: v.size() == 10 for: 10 == 10 68 // 120-Bdd-ScenarioGivenWhenThen.cpp:20: passed: v.capacity() >= 10 for: 10 >= 10 69 // 120-Bdd-ScenarioGivenWhenThen.cpp:12: passed: v.size() == 5 for: 5 == 5 70 // 120-Bdd-ScenarioGivenWhenThen.cpp:13: passed: v.capacity() >= 5 for: 5 >= 5 71 // 120-Bdd-ScenarioGivenWhenThen.cpp:27: passed: v.size() == 0 for: 0 == 0 72 // 120-Bdd-ScenarioGivenWhenThen.cpp:28: passed: v.capacity() >= 5 for: 5 >= 5 73 // 120-Bdd-ScenarioGivenWhenThen.cpp:12: passed: v.size() == 5 for: 5 == 5 74 // 120-Bdd-ScenarioGivenWhenThen.cpp:13: passed: v.capacity() >= 5 for: 5 >= 5 75 // 120-Bdd-ScenarioGivenWhenThen.cpp:35: passed: v.size() == 5 for: 5 == 5 76 // 120-Bdd-ScenarioGivenWhenThen.cpp:36: passed: v.capacity() >= 10 for: 10 >= 10 77 // 120-Bdd-ScenarioGivenWhenThen.cpp:12: passed: v.size() == 5 for: 5 == 5 78 // 120-Bdd-ScenarioGivenWhenThen.cpp:13: passed: v.capacity() >= 5 for: 5 >= 5 79 // 120-Bdd-ScenarioGivenWhenThen.cpp:43: passed: v.size() == 5 for: 5 == 5 80 // 120-Bdd-ScenarioGivenWhenThen.cpp:44: passed: v.capacity() >= 5 for: 5 >= 5 81 // Passed 1 test case with 16 assertions.