aboutsummaryrefslogtreecommitdiff
path: root/projects/SelfTest/BDDTests.cpp
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2017-12-22 16:53:56 +0100
committerSzczepan Zalega <szczepan@nitrokey.com>2017-12-22 16:53:56 +0100
commit48b3d82ffe1ed19db9ba3cf7e6536ecf92e27391 (patch)
tree83645ddf58fd9514e1fe6d566839bb2747ee4706 /projects/SelfTest/BDDTests.cpp
downloadlibnitrokey-48b3d82ffe1ed19db9ba3cf7e6536ecf92e27391.tar.gz
libnitrokey-48b3d82ffe1ed19db9ba3cf7e6536ecf92e27391.tar.bz2
Squashed 'unittest/Catch/' content from commit ae5ee2cf
git-subtree-dir: unittest/Catch git-subtree-split: ae5ee2cf63d6d67bd1369b512d2a7b60b571c907
Diffstat (limited to 'projects/SelfTest/BDDTests.cpp')
-rw-r--r--projects/SelfTest/BDDTests.cpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/projects/SelfTest/BDDTests.cpp b/projects/SelfTest/BDDTests.cpp
new file mode 100644
index 0000000..2c8bc24
--- /dev/null
+++ b/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);
+ }
+ }
+ }
+}