Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals] Randomness seeded to: 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ is a Catch2 v host application. Run with -? for options ------------------------------------------------------------------------------- # A test name that starts with a # ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: yay ------------------------------------------------------------------------------- #1027: Bitfields can be captured ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( y.v == 0 ) with expansion: 0 == 0 Compilation.tests.cpp:: PASSED: REQUIRE( 0 == y.v ) with expansion: 0 == 0 ------------------------------------------------------------------------------- #1147 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( t1 == t2 ) with expansion: {?} == {?} Compilation.tests.cpp:: PASSED: REQUIRE( t1 != t2 ) with expansion: {?} != {?} Compilation.tests.cpp:: PASSED: REQUIRE( t1 < t2 ) with expansion: {?} < {?} Compilation.tests.cpp:: PASSED: REQUIRE( t1 > t2 ) with expansion: {?} > {?} Compilation.tests.cpp:: PASSED: REQUIRE( t1 <= t2 ) with expansion: {?} <= {?} Compilation.tests.cpp:: PASSED: REQUIRE( t1 >= t2 ) with expansion: {?} >= {?} ------------------------------------------------------------------------------- #1175 - Hidden Test ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #1238 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( std::memcmp(uarr, "123", sizeof(uarr)) == 0 ) with expansion: 0 == 0 with messages: uarr := "123" sarr := "456" Compilation.tests.cpp:: PASSED: REQUIRE( std::memcmp(sarr, "456", sizeof(sarr)) == 0 ) with expansion: 0 == 0 with messages: uarr := "123" sarr := "456" ------------------------------------------------------------------------------- #1245 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #1319: Sections can have description (even if it is not saved SectionName ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #1403 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( h1 == h2 ) with expansion: [1403 helper] == [1403 helper] ------------------------------------------------------------------------------- #1455 - INFO and WARN can start with a linebreak ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: warning: This info message starts with a linebreak This warning message starts with a linebreak No assertions in test case '#1455 - INFO and WARN can start with a linebreak' This would not be caught previously Nor would this ------------------------------------------------------------------------------- #1514: stderr/stdout is not captured in tests aborted by an exception ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: FAILED: explicitly with message: 1514 ------------------------------------------------------------------------------- #1548 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( std::is_same, TypeList>::value ) with expansion: true ------------------------------------------------------------------------------- #1905 -- test spec parser properly clears internal state between compound tests ------------------------------------------------------------------------------- TestSpec.tests.cpp: ............................................................................... TestSpec.tests.cpp:: PASSED: REQUIRE( spec.matches(*fakeTestCase("spec . char")) ) with expansion: true TestSpec.tests.cpp:: PASSED: REQUIRE( spec.matches(*fakeTestCase("spec , char")) ) with expansion: true TestSpec.tests.cpp:: PASSED: REQUIRE_FALSE( spec.matches(*fakeTestCase(R"(spec \, char)")) ) with expansion: !false ------------------------------------------------------------------------------- #1912 -- test spec parser handles escaping Various parentheses ------------------------------------------------------------------------------- TestSpec.tests.cpp: ............................................................................... TestSpec.tests.cpp:: PASSED: REQUIRE( spec.matches(*fakeTestCase(R"(spec {a} char)")) ) with expansion: true TestSpec.tests.cpp:: PASSED: REQUIRE( spec.matches(*fakeTestCase(R"(spec [a] char)")) ) with expansion: true TestSpec.tests.cpp:: PASSED: REQUIRE_FALSE( spec.matches(*fakeTestCase("differs but has similar tag", "[a]")) ) with expansion: !false ------------------------------------------------------------------------------- #1912 -- test spec parser handles escaping backslash in test name ------------------------------------------------------------------------------- TestSpec.tests.cpp: ............................................................................... TestSpec.tests.cpp:: PASSED: REQUIRE( spec.matches(*fakeTestCase(R"(spec \ char)")) ) with expansion: true ------------------------------------------------------------------------------- #1913 - GENERATE inside a for loop should not keep recreating the generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( counter < 7 ) with expansion: 3 < 7 ------------------------------------------------------------------------------- #1913 - GENERATE inside a for loop should not keep recreating the generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( counter < 7 ) with expansion: 6 < 7 ------------------------------------------------------------------------------- #1913 - GENERATEs can share a line ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i != j ) with expansion: 1 != 3 ------------------------------------------------------------------------------- #1913 - GENERATEs can share a line ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i != j ) with expansion: 1 != 4 ------------------------------------------------------------------------------- #1913 - GENERATEs can share a line ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i != j ) with expansion: 2 != 3 ------------------------------------------------------------------------------- #1913 - GENERATEs can share a line ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i != j ) with expansion: 2 != 4 ------------------------------------------------------------------------------- #1938 - GENERATE after a section A ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: A ------------------------------------------------------------------------------- #1938 - GENERATE after a section B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 1 ------------------------------------------------------------------------------- #1938 - GENERATE after a section B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - GENERATE after a section B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 ------------------------------------------------------------------------------- #1938 - Section followed by flat generate A ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( 1 ) ------------------------------------------------------------------------------- #1938 - Section followed by flat generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - Section followed by flat generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 ------------------------------------------------------------------------------- #1938 - flat generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 1 ------------------------------------------------------------------------------- #1938 - flat generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - flat generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 ------------------------------------------------------------------------------- #1938 - mixed sections and generates A ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: A ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 1 j := 3 k := 5 ------------------------------------------------------------------------------- #1938 - mixed sections and generates B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: B ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 1 j := 3 k := 6 ------------------------------------------------------------------------------- #1938 - mixed sections and generates B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: B ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 1 j := 4 k := 5 ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 1 j := 4 k := 6 ------------------------------------------------------------------------------- #1938 - mixed sections and generates A ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: A ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 2 j := 3 k := 5 ------------------------------------------------------------------------------- #1938 - mixed sections and generates B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: B ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 2 j := 3 k := 6 ------------------------------------------------------------------------------- #1938 - mixed sections and generates B ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with message: B ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 2 j := 4 k := 5 ------------------------------------------------------------------------------- #1938 - mixed sections and generates ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: with messages: i := 2 j := 4 k := 6 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 1 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 1 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 1 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 1 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 3 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 1 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 2 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 3 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 1 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 2 ------------------------------------------------------------------------------- #1938 - nested generate ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( m ) with expansion: 3 PartTracker.tests.cpp:: PASSED: REQUIRE( n ) with expansion: 3 ------------------------------------------------------------------------------- #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- #2152 - ULP checks between differently signed values were wrong - double ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) ) with expansion: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324]) Matchers.tests.cpp:: PASSED: CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) ) with expansion: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e- 324, -0.0000000000000000e+00]) ------------------------------------------------------------------------------- #2152 - ULP checks between differently signed values were wrong - float ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) ) with expansion: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45]) Matchers.tests.cpp:: PASSED: CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) ) with expansion: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0. 00000000e+00]) ------------------------------------------------------------------------------- #2615 - Throwing in constructor generator fails test case but does not abort ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: FAILED: due to unexpected exception with message: failure to init ------------------------------------------------------------------------------- #748 - captures with unexpected exceptions outside assertions ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with messages: answer := 42 expected exception ------------------------------------------------------------------------------- #748 - captures with unexpected exceptions inside REQUIRE_NOTHROW ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: REQUIRE_NOTHROW( thisThrows() ) due to unexpected exception with messages: answer := 42 expected exception ------------------------------------------------------------------------------- #748 - captures with unexpected exceptions inside REQUIRE_THROWS ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS( thisThrows() ) with message: answer := 42 ------------------------------------------------------------------------------- #809 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( 42 == f ) with expansion: 42 == {?} ------------------------------------------------------------------------------- #833 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( a == t ) with expansion: 3 == 3 Compilation.tests.cpp:: PASSED: CHECK( a == t ) with expansion: 3 == 3 Compilation.tests.cpp:: PASSED: REQUIRE_THROWS( throws_int(true) ) Compilation.tests.cpp:: PASSED: CHECK_THROWS_AS( throws_int(true), int ) Compilation.tests.cpp:: PASSED: REQUIRE_NOTHROW( throws_int(false) ) Compilation.tests.cpp:: PASSED: REQUIRE_THAT( "aaa", Catch::Matchers::EndsWith("aaa") ) with expansion: "aaa" ends with: "aaa" Compilation.tests.cpp:: PASSED: REQUIRE( templated_tests(3) ) with expansion: true ------------------------------------------------------------------------------- #835 -- errno should not be touched by Catch2 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: CHECK( f() == 0 ) with expansion: 1 == 0 Misc.tests.cpp:: PASSED: REQUIRE( errno_after == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- #872 ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( x == 4 ) with expansion: {?} == 4 with message: dummy := 0 ------------------------------------------------------------------------------- #961 -- Dynamically created sections should all be reported Looped section 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: Everything is OK ------------------------------------------------------------------------------- #961 -- Dynamically created sections should all be reported Looped section 1 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: Everything is OK ------------------------------------------------------------------------------- #961 -- Dynamically created sections should all be reported Looped section 2 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: Everything is OK ------------------------------------------------------------------------------- #961 -- Dynamically created sections should all be reported Looped section 3 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: Everything is OK ------------------------------------------------------------------------------- #961 -- Dynamically created sections should all be reported Looped section 4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: Everything is OK ------------------------------------------------------------------------------- 'Not' checks that should fail ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: CHECK( false != false ) Condition.tests.cpp:: FAILED: CHECK( true != true ) Condition.tests.cpp:: FAILED: CHECK( !true ) with expansion: false Condition.tests.cpp:: FAILED: CHECK_FALSE( true ) with expansion: !true Condition.tests.cpp:: FAILED: CHECK( !trueValue ) with expansion: false Condition.tests.cpp:: FAILED: CHECK_FALSE( trueValue ) with expansion: !true Condition.tests.cpp:: FAILED: CHECK( !(1 == 1) ) with expansion: false Condition.tests.cpp:: FAILED: CHECK_FALSE( 1 == 1 ) ------------------------------------------------------------------------------- 'Not' checks that should succeed ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( false == false ) Condition.tests.cpp:: PASSED: REQUIRE( true == true ) Condition.tests.cpp:: PASSED: REQUIRE( !false ) with expansion: true Condition.tests.cpp:: PASSED: REQUIRE_FALSE( false ) with expansion: !false Condition.tests.cpp:: PASSED: REQUIRE( !falseValue ) with expansion: true Condition.tests.cpp:: PASSED: REQUIRE_FALSE( falseValue ) with expansion: !false Condition.tests.cpp:: PASSED: REQUIRE( !(1 == 2) ) with expansion: true Condition.tests.cpp:: PASSED: REQUIRE_FALSE( 1 == 2 ) ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated compare to true ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( is_true::value == true ) with expansion: true == true Tricky.tests.cpp:: PASSED: REQUIRE( true == is_true::value ) with expansion: true == true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated compare to false ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( is_true::value == false ) with expansion: false == false Tricky.tests.cpp:: PASSED: REQUIRE( false == is_true::value ) with expansion: false == false ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated negation ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( !is_true::value ) with expansion: true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated double negation ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( !!is_true::value ) with expansion: true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated direct ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( is_true::value ) with expansion: true Tricky.tests.cpp:: PASSED: REQUIRE_FALSE( is_true::value ) with expansion: !false ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 1 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 1 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 2 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 2 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 4 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 4 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 5 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 5 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 9 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 7 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 7 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 8 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 8 ------------------------------------------------------------------------------- 3x3x3 ints ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: CHECK( x < y ) with expansion: 3 < 6 Generators.tests.cpp:: PASSED: CHECK( y < z ) with expansion: 6 < 9 Generators.tests.cpp:: PASSED: REQUIRE( x < z ) with expansion: 3 < 9 ------------------------------------------------------------------------------- A METHOD_AS_TEST_CASE based test run that fails ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( s == "world" ) with expansion: "hello" == "world" ------------------------------------------------------------------------------- A METHOD_AS_TEST_CASE based test run that succeeds ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( s == "hello" ) with expansion: "hello" == "hello" ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2::m_a.size() == 1 ) with expansion: 0 == 1 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2::m_a.size() == 1 ) with expansion: 0 == 1 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2::m_a.size() == 1 ) with expansion: 0 == 1 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2::m_a.size() == 1 ) with expansion: 0 == 1 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2::m_a.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2::m_a.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2::m_a.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2::m_a.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2{}.m_a.size() < 2 ) with expansion: 6 < 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2{}.m_a.size() < 2 ) with expansion: 2 < 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2{}.m_a.size() < 2 ) with expansion: 6 < 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture_2{}.m_a.size() < 2 ) with expansion: 2 < 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2{}.m_a.size() >= 2 ) with expansion: 6 >= 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2{}.m_a.size() >= 2 ) with expansion: 2 >= 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std:: array ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2{}.m_a.size() >= 2 ) with expansion: 6 >= 2 ------------------------------------------------------------------------------- A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std:: array ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture_2{}.m_a.size() >= 2 ) with expansion: 2 >= 2 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that fails - double ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture::m_a == 2 ) with expansion: 1.0 == 2 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that fails - float ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture::m_a == 2 ) with expansion: 1.0f == 2 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that fails - int ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Template_Fixture::m_a == 2 ) with expansion: 1 == 2 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1.0 == 1 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1.0f == 1 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Nttp_Fixture::value == 0 ) with expansion: 1 == 0 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Nttp_Fixture::value == 0 ) with expansion: 3 == 0 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( Nttp_Fixture::value == 0 ) with expansion: 6 == 0 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Nttp_Fixture::value > 0 ) with expansion: 1 > 0 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Nttp_Fixture::value > 0 ) with expansion: 3 > 0 ------------------------------------------------------------------------------- A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Nttp_Fixture::value > 0 ) with expansion: 6 > 0 ------------------------------------------------------------------------------- A TEST_CASE_METHOD based test run that fails ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( m_a == 2 ) with expansion: 1 == 2 ------------------------------------------------------------------------------- A TEST_CASE_METHOD based test run that succeeds ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- A TEST_CASE_PERSISTENT_FIXTURE based test run that fails First partial run ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( m_a++ == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEST_CASE_PERSISTENT_FIXTURE based test run that fails Second partial run ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: FAILED: REQUIRE( m_a == 0 ) with expansion: 1 == 0 ------------------------------------------------------------------------------- A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds First partial run ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( m_a++ == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds Second partial run ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- A Template product test case - Foo ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A Template product test case - Foo ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A Template product test case - std::vector ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A Template product test case - std::vector ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- A Template product test case with array signature - Bar ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() > 0 ) with expansion: 42 > 0 ------------------------------------------------------------------------------- A Template product test case with array signature - Bar ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() > 0 ) with expansion: 9 > 0 ------------------------------------------------------------------------------- A Template product test case with array signature - std::array ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() > 0 ) with expansion: 42 > 0 ------------------------------------------------------------------------------- A Template product test case with array signature - std::array ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( x.size() > 0 ) with expansion: 9 > 0 ------------------------------------------------------------------------------- A comparison that uses literals instead of the normal constructor ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: 1.22999999999999998 == Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: 1.22999999999999998 != Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( -d == -1.23_a ) with expansion: -1.22999999999999998 == Approx( -1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.2_a .epsilon(.1) ) with expansion: 1.22999999999999998 == Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.2_a .epsilon(.001) ) with expansion: 1.22999999999999998 != Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1_a .epsilon(.3) ) with expansion: 1.22999999999999998 == Approx( 1.0 ) ------------------------------------------------------------------------------- A couple of nested sections followed by a failure Outer Inner ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: that's not flying - that's failing in style ------------------------------------------------------------------------------- A couple of nested sections followed by a failure ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- A failing expression with a non streamable type is still captured ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: FAILED: CHECK( &o1 == &o2 ) with expansion: 0x == 0x Tricky.tests.cpp:: FAILED: CHECK( o1 == o2 ) with expansion: {?} == {?} ------------------------------------------------------------------------------- Absolute margin ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 104.0 != Approx(100.0) ) with expansion: 104.0 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 104.0 == Approx(100.0).margin(5) ) with expansion: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 104.0 == Approx(100.0).margin(4) ) with expansion: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 104.0 != Approx(100.0).margin(3) ) with expansion: 104.0 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 100.3 != Approx(100.0) ) with expansion: 100.29999999999999716 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 100.3 == Approx(100.0).margin(0.5) ) with expansion: 100.29999999999999716 == Approx( 100.0 ) ------------------------------------------------------------------------------- An empty test with no assertions ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... No assertions in test case 'An empty test with no assertions' ------------------------------------------------------------------------------- An expression with side-effects should only be evaluated once ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( i++ == 7 ) with expansion: 7 == 7 Tricky.tests.cpp:: PASSED: REQUIRE( i++ == 8 ) with expansion: 8 == 8 ------------------------------------------------------------------------------- An unchecked exception reports the line of the last assertion ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: CHECK( 1 == 1 ) Exception.tests.cpp:: FAILED: {Unknown expression after the reported line} due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- Anonymous test case 1 ------------------------------------------------------------------------------- VariadicMacros.tests.cpp: ............................................................................... VariadicMacros.tests.cpp:: PASSED: with message: anonymous test case ------------------------------------------------------------------------------- Approx setters validate their arguments ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE_NOTHROW( Approx(0).margin(0) ) Approx.tests.cpp:: PASSED: REQUIRE_NOTHROW( Approx(0).margin(1234656) ) Approx.tests.cpp:: PASSED: REQUIRE_THROWS_AS( Approx(0).margin(-2), std::domain_error ) Approx.tests.cpp:: PASSED: REQUIRE_NOTHROW( Approx(0).epsilon(0) ) Approx.tests.cpp:: PASSED: REQUIRE_NOTHROW( Approx(0).epsilon(1) ) Approx.tests.cpp:: PASSED: REQUIRE_THROWS_AS( Approx(0).epsilon(-0.001), std::domain_error ) Approx.tests.cpp:: PASSED: REQUIRE_THROWS_AS( Approx(0).epsilon(1.0001), std::domain_error ) ------------------------------------------------------------------------------- Approx with exactly-representable margin ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: CHECK( 0.25f == Approx(0.0f).margin(0.25f) ) with expansion: 0.25f == Approx( 0.0 ) Approx.tests.cpp:: PASSED: CHECK( 0.0f == Approx(0.25f).margin(0.25f) ) with expansion: 0.0f == Approx( 0.25 ) Approx.tests.cpp:: PASSED: CHECK( 0.5f == Approx(0.25f).margin(0.25f) ) with expansion: 0.5f == Approx( 0.25 ) Approx.tests.cpp:: PASSED: CHECK( 245.0f == Approx(245.25f).margin(0.25f) ) with expansion: 245.0f == Approx( 245.25 ) Approx.tests.cpp:: PASSED: CHECK( 245.5f == Approx(245.25f).margin(0.25f) ) with expansion: 245.5f == Approx( 245.25 ) ------------------------------------------------------------------------------- Approximate PI ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) ) with expansion: 3.14285714285714279 == Approx( 3.14100000000000001 ) Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) ) with expansion: 3.14285714285714279 != Approx( 3.14100000000000001 ) ------------------------------------------------------------------------------- Approximate comparisons with different epsilons ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.231 ) ) with expansion: 1.22999999999999998 != Approx( 1.23100000000000009 ) Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) ) with expansion: 1.22999999999999998 == Approx( 1.23100000000000009 ) ------------------------------------------------------------------------------- Approximate comparisons with floats ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 1.23f == Approx( 1.23f ) ) with expansion: 1.230000019f == Approx( 1.23000001907348633 ) Approx.tests.cpp:: PASSED: REQUIRE( 0.0f == Approx( 0.0f ) ) with expansion: 0.0f == Approx( 0.0 ) ------------------------------------------------------------------------------- Approximate comparisons with ints ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 1 == Approx( 1 ) ) with expansion: 1 == Approx( 1.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 0 == Approx( 0 ) ) with expansion: 0 == Approx( 0.0 ) ------------------------------------------------------------------------------- Approximate comparisons with mixed numeric types ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 1.0f == Approx( 1 ) ) with expansion: 1.0f == Approx( 1.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 0 == Approx( dZero) ) with expansion: 0 == Approx( 0.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 0 == Approx( dSmall ).margin( 0.001 ) ) with expansion: 0 == Approx( 0.00001 ) Approx.tests.cpp:: PASSED: REQUIRE( 1.234f == Approx( dMedium ) ) with expansion: 1.233999968f == Approx( 1.23399999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( dMedium == Approx( 1.234f ) ) with expansion: 1.23399999999999999 == Approx( 1.23399996757507324 ) ------------------------------------------------------------------------------- Arbitrary predicate matcher Function pointer ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, Predicate( alwaysTrue, "always true" ) ) with expansion: 1 matches predicate: "always true" Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, !Predicate( alwaysFalse, "always false" ) ) with expansion: 1 not matches predicate: "always false" ------------------------------------------------------------------------------- Arbitrary predicate matcher Lambdas + different type ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( "Hello olleH", Predicate( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) ) with expansion: "Hello olleH" matches predicate: "First and last character should be equal" Matchers.tests.cpp:: PASSED: REQUIRE_THAT( "This wouldn't pass", !Predicate( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) ) with expansion: "This wouldn't pass" not matches undescribed predicate ------------------------------------------------------------------------------- Assertion macros support bit operators and bool conversions ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( lhs | rhs ) with expansion: Val: 1 | Val: 2 Compilation.tests.cpp:: PASSED: REQUIRE_FALSE( lhs & rhs ) with expansion: !(Val: 1 & Val: 2) Compilation.tests.cpp:: PASSED: REQUIRE( HasBitOperators{ 1 } & HasBitOperators{ 1 } ) with expansion: Val: 1 & Val: 1 Compilation.tests.cpp:: PASSED: REQUIRE( lhs ^ rhs ) with expansion: Val: 1 ^ Val: 2 Compilation.tests.cpp:: PASSED: REQUIRE_FALSE( lhs ^ lhs ) with expansion: !(Val: 1 ^ Val: 1) ------------------------------------------------------------------------------- Assertions then sections ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Assertions then sections A section ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Assertions then sections A section Another section ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Assertions then sections ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Assertions then sections A section ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Assertions then sections A section Another other section ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( true ) ------------------------------------------------------------------------------- Basic use of the Contains range matcher Different argument ranges, same element type, default comparison ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( a, Contains(1) ) with expansion: { 1, 2, 3 } contains element 1 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( b, Contains(1) ) with expansion: { 0, 1, 2 } contains element 1 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( c, !Contains(1) ) with expansion: { 4, 5, 6 } not contains element 1 ------------------------------------------------------------------------------- Basic use of the Contains range matcher Different argument ranges, same element type, custom comparison ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( a, Contains(0, close_enough) ) with expansion: { 1, 2, 3 } contains element 0 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( b, Contains(0, close_enough) ) with expansion: { 0, 1, 2 } contains element 0 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( c, !Contains(0, close_enough) ) with expansion: { 4, 5, 6 } not contains element 0 ------------------------------------------------------------------------------- Basic use of the Contains range matcher Different element type, custom comparisons ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) ) with expansion: { "abc", "abcd", "abcde" } contains element 4 ------------------------------------------------------------------------------- Basic use of the Contains range matcher Can handle type that requires ADL-found free function begin and end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( in, Contains(1) ) with expansion: { 1, 2, 3, 4, 5 } contains element 1 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( in, !Contains(8) ) with expansion: { 1, 2, 3, 4, 5 } not contains element 8 ------------------------------------------------------------------------------- Basic use of the Contains range matcher Initialization with move only types ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( in, Contains(MoveOnlyTestElement{ 2 }) ) with expansion: { 1, 2, 3 } contains element 2 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( in, !Contains(MoveOnlyTestElement{ 9 }) ) with expansion: { 1, 2, 3 } not contains element 9 ------------------------------------------------------------------------------- Basic use of the Contains range matcher Matching using matcher ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) ) with expansion: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5 ------------------------------------------------------------------------------- Basic use of the Empty range matcher Simple, std-provided containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( empty_array, IsEmpty() ) with expansion: { } is empty MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( non_empty_array, !IsEmpty() ) with expansion: { 0.0 } not is empty MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( empty_vec, IsEmpty() ) with expansion: { } is empty MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( non_empty_vec, !IsEmpty() ) with expansion: { 'a', 'b', 'c' } not is empty MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( inner_lists_are_empty, !IsEmpty() ) with expansion: { { } } not is empty MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( inner_lists_are_empty.front(), IsEmpty() ) with expansion: { } is empty ------------------------------------------------------------------------------- Basic use of the Empty range matcher Type with empty ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( has_empty{}, !IsEmpty() ) with expansion: {?} not is empty ------------------------------------------------------------------------------- Basic use of the Empty range matcher Type requires ADL found empty free function ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( unrelated::ADL_empty{}, IsEmpty() ) with expansion: {?} is empty ------------------------------------------------------------------------------- CAPTURE can deal with complex expressions ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: with messages: a := 1 b := 2 c := 3 a + b := 3 a+b := 3 c > b := true a == 1 := true ------------------------------------------------------------------------------- CAPTURE can deal with complex expressions involving commas ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: with messages: custom_index_op{1, 2, 3}[0, 1, 2] := 0 custom_index_op{1, 2, 3}[(0, 1)] := 0 custom_index_op{1, 2, 3}[0] := 0 (helper_1436{12, -12}) := { 12, -12 } (helper_1436(-12, 12)) := { -12, 12 } (1, 2) := 2 (2, 3) := 3 ------------------------------------------------------------------------------- CAPTURE parses string and character constants ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: with messages: ("comma, in string", "escaped, \", ") := "escaped, ", " "single quote in string,'," := "single quote in string,'," "some escapes, \\,\\\\" := "some escapes, \,\\" "some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[ <" '"' := '"' '\'' := ''' ',' := ',' '}' := '}' ')' := ')' '(' := '(' '{' := '{' ------------------------------------------------------------------------------- Capture and info messages Capture should stringify like assertions ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( true ) with message: i := 2 ------------------------------------------------------------------------------- Capture and info messages Info should NOT stringify the way assertions do ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( true ) with message: 3 ------------------------------------------------------------------------------- CaseInsensitiveEqualsTo is case insensitive Degenerate cases ------------------------------------------------------------------------------- Details.tests.cpp: ............................................................................... Details.tests.cpp:: PASSED: REQUIRE( eq( "", "" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE_FALSE( eq( "", "a" ) ) with expansion: !false ------------------------------------------------------------------------------- CaseInsensitiveEqualsTo is case insensitive Plain comparisons ------------------------------------------------------------------------------- Details.tests.cpp: ............................................................................... Details.tests.cpp:: PASSED: REQUIRE( eq( "a", "a" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( eq( "a", "A" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( eq( "A", "a" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( eq( "A", "A" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE_FALSE( eq( "a", "b" ) ) with expansion: !false Details.tests.cpp:: PASSED: REQUIRE_FALSE( eq( "a", "B" ) ) with expansion: !false ------------------------------------------------------------------------------- CaseInsensitiveLess is case insensitive Degenerate cases ------------------------------------------------------------------------------- Details.tests.cpp: ............................................................................... Details.tests.cpp:: PASSED: REQUIRE( lt( "", "a" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE_FALSE( lt( "a", "a" ) ) with expansion: !false Details.tests.cpp:: PASSED: REQUIRE_FALSE( lt( "", "" ) ) with expansion: !false ------------------------------------------------------------------------------- CaseInsensitiveLess is case insensitive Plain comparisons ------------------------------------------------------------------------------- Details.tests.cpp: ............................................................................... Details.tests.cpp:: PASSED: REQUIRE( lt( "a", "b" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( lt( "a", "B" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( lt( "A", "b" ) ) with expansion: true Details.tests.cpp:: PASSED: REQUIRE( lt( "A", "B" ) ) with expansion: true ------------------------------------------------------------------------------- Character pretty printing Specifically escaped ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify('\t') == "'\\t'" ) with expansion: "'\t'" == "'\t'" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify('\n') == "'\\n'" ) with expansion: "'\n'" == "'\n'" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify('\r') == "'\\r'" ) with expansion: "'\r'" == "'\r'" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify('\f') == "'\\f'" ) with expansion: "'\f'" == "'\f'" ------------------------------------------------------------------------------- Character pretty printing General chars ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( ' ' ) == "' '" ) with expansion: "' '" == "' '" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( 'A' ) == "'A'" ) with expansion: "'A'" == "'A'" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( 'z' ) == "'z'" ) with expansion: "'z'" == "'z'" ------------------------------------------------------------------------------- Character pretty printing Low ASCII ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( '\0' ) == "0" ) with expansion: "0" == "0" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( static_cast(2) ) == "2" ) with expansion: "2" == "2" ToStringGeneral.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( static_cast(5) ) == "5" ) with expansion: "5" == "5" ------------------------------------------------------------------------------- Clara::Arg supports single-arg parse the way Opt does ------------------------------------------------------------------------------- Clara.tests.cpp: ............................................................................... Clara.tests.cpp:: PASSED: CHECK( name.empty() ) with expansion: true Clara.tests.cpp:: PASSED: REQUIRE( name == "foo" ) with expansion: "foo" == "foo" ------------------------------------------------------------------------------- Clara::Opt supports accept-many lambdas Parsing fails on multiple options without accept_many ------------------------------------------------------------------------------- Clara.tests.cpp: ............................................................................... Clara.tests.cpp:: PASSED: CHECK_FALSE( parse_result ) with expansion: !{?} ------------------------------------------------------------------------------- Clara::Opt supports accept-many lambdas Parsing succeeds on multiple options with accept_many ------------------------------------------------------------------------------- Clara.tests.cpp: ............................................................................... Clara.tests.cpp:: PASSED: CHECK( parse_result ) with expansion: {?} Clara.tests.cpp:: PASSED: CHECK( res == std::vector{ "aaa", "bbb" } ) with expansion: { "aaa", "bbb" } == { "aaa", "bbb" } ------------------------------------------------------------------------------- ColourGuard behaviour ColourGuard is disengaged by default ------------------------------------------------------------------------------- ColourImpl.tests.cpp: ............................................................................... ColourImpl.tests.cpp:: PASSED: REQUIRE( streamWrapper.str().empty() ) with expansion: true ------------------------------------------------------------------------------- ColourGuard behaviour ColourGuard is engaged by op<< ------------------------------------------------------------------------------- ColourImpl.tests.cpp: ............................................................................... ColourImpl.tests.cpp:: PASSED: REQUIRE( streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" ) with expansion: "1 Using code: 2 2 Using code: 0 3 " == "1 Using code: 2 2 Using code: 0 3 " ------------------------------------------------------------------------------- ColourGuard behaviour ColourGuard can be engaged explicitly ------------------------------------------------------------------------------- ColourImpl.tests.cpp: ............................................................................... ColourImpl.tests.cpp:: PASSED: REQUIRE( streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" ) with expansion: "Using code: 2 A B Using code: 0 C " == "Using code: 2 A B Using code: 0 C " ------------------------------------------------------------------------------- Combining MatchAllOfGeneric does not nest ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch:: Matchers::Detail:: MatchAllOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && MatcherC() ) with expansion: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch:: Matchers::Detail:: MatchAllOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, MatcherA() && ( MatcherB() && MatcherC() ) ) with expansion: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric>:: value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ) with expansion: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true ) ------------------------------------------------------------------------------- Combining MatchAnyOfGeneric does not nest ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch:: Matchers::Detail:: MatchAnyOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || MatcherC() ) with expansion: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch:: Matchers::Detail:: MatchAnyOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, MatcherA() || ( MatcherB() || MatcherC() ) ) with expansion: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric>:: value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ) with expansion: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true ) ------------------------------------------------------------------------------- Combining MatchNotOfGeneric does not nest ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail:: MatchNotOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0, !MatcherA() ) with expansion: 0 not equals: (int) 1 or (string) "1" Matchers.tests.cpp:: PASSED: with message: std::is_same::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, !!MatcherA() ) with expansion: 1 equals: (int) 1 or (string) "1" Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail:: MatchNotOfGeneric>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0, !!!MatcherA() ) with expansion: 0 not equals: (int) 1 or (string) "1" Matchers.tests.cpp:: PASSED: with message: std::is_same::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, !!!!MatcherA() ) with expansion: 1 equals: (int) 1 or (string) "1" ------------------------------------------------------------------------------- Combining concrete matchers does not use templated matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: with message: std::is_same>::value ------------------------------------------------------------------------------- Combining only templated matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: with message: std::is_same>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, MatcherA() || MatcherB() ) with expansion: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, MatcherA() && MatcherB() ) with expansion: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 ) Matchers.tests.cpp:: PASSED: with message: std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail: :MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric >>::value Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1, MatcherA() || !MatcherB() ) with expansion: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 ) ------------------------------------------------------------------------------- Combining templated and concrete matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( vec, Predicate>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) ) with expansion: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) ) with expansion: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) ) with expansion: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) ) with expansion: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) ) with expansion: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) ) with expansion: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) ) with expansion: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } ) ------------------------------------------------------------------------------- Combining templated matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) ) with expansion: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } ) ------------------------------------------------------------------------------- Commas in various macros are allowed ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE_THROWS( std::vector{constructor_throws{}, constructor_throws{}} ) Tricky.tests.cpp:: PASSED: CHECK_THROWS( std::vector{constructor_throws{}, constructor_throws{}} ) Tricky.tests.cpp:: PASSED: REQUIRE_NOTHROW( std::vector{1, 2, 3} == std::vector{1, 2, 3} ) Tricky.tests.cpp:: PASSED: CHECK_NOTHROW( std::vector{1, 2, 3} == std::vector{1, 2, 3} ) Tricky.tests.cpp:: PASSED: REQUIRE( std::vector{1, 2} == std::vector{1, 2} ) with expansion: { 1, 2 } == { 1, 2 } Tricky.tests.cpp:: PASSED: CHECK( std::vector{1, 2} == std::vector{1, 2} ) with expansion: { 1, 2 } == { 1, 2 } Tricky.tests.cpp:: PASSED: REQUIRE_FALSE( std::vector{1, 2} == std::vector{1, 2, 3} ) with expansion: !({ 1, 2 } == { 1, 2, 3 }) Tricky.tests.cpp:: PASSED: CHECK_FALSE( std::vector{1, 2} == std::vector{1, 2, 3} ) with expansion: !({ 1, 2 } == { 1, 2, 3 }) Tricky.tests.cpp:: PASSED: CHECK_NOFAIL( std::vector{1, 2} == std::vector{1, 2} ) with expansion: { 1, 2 } == { 1, 2 } Tricky.tests.cpp:: PASSED: CHECKED_IF( std::vector{1, 2} == std::vector{1, 2} ) with expansion: { 1, 2 } == { 1, 2 } Tricky.tests.cpp:: PASSED: REQUIRE( true ) Tricky.tests.cpp:: PASSED: CHECKED_ELSE( std::vector{1, 2} == std::vector{1, 2} ) with expansion: { 1, 2 } == { 1, 2 } ------------------------------------------------------------------------------- Comparing function pointers ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( a ) with expansion: 0x Tricky.tests.cpp:: PASSED: REQUIRE( a == &foo ) with expansion: 0x == 0x ------------------------------------------------------------------------------- Comparison ops ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( SimplePcg32{} == SimplePcg32{} ) with expansion: {?} == {?} RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( SimplePcg32{ 0 } != SimplePcg32{} ) with expansion: {?} != {?} RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_FALSE( SimplePcg32{ 1 } == SimplePcg32{ 2 } ) with expansion: !({?} == {?}) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_FALSE( SimplePcg32{ 1 } != SimplePcg32{ 1 } ) with expansion: !({?} != {?}) ------------------------------------------------------------------------------- Comparison with explicitly convertible types ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( td == Approx(10.0) ) with expansion: StrongDoubleTypedef(10) == Approx( 10.0 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx(10.0) == td ) with expansion: Approx( 10.0 ) == StrongDoubleTypedef(10) Approx.tests.cpp:: PASSED: REQUIRE( td != Approx(11.0) ) with expansion: StrongDoubleTypedef(10) != Approx( 11.0 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx(11.0) != td ) with expansion: Approx( 11.0 ) != StrongDoubleTypedef(10) Approx.tests.cpp:: PASSED: REQUIRE( td <= Approx(10.0) ) with expansion: StrongDoubleTypedef(10) <= Approx( 10.0 ) Approx.tests.cpp:: PASSED: REQUIRE( td <= Approx(11.0) ) with expansion: StrongDoubleTypedef(10) <= Approx( 11.0 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx(10.0) <= td ) with expansion: Approx( 10.0 ) <= StrongDoubleTypedef(10) Approx.tests.cpp:: PASSED: REQUIRE( Approx(9.0) <= td ) with expansion: Approx( 9.0 ) <= StrongDoubleTypedef(10) Approx.tests.cpp:: PASSED: REQUIRE( td >= Approx(9.0) ) with expansion: StrongDoubleTypedef(10) >= Approx( 9.0 ) Approx.tests.cpp:: PASSED: REQUIRE( td >= Approx(td) ) with expansion: StrongDoubleTypedef(10) >= Approx( 10.0 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx(td) >= td ) with expansion: Approx( 10.0 ) >= StrongDoubleTypedef(10) Approx.tests.cpp:: PASSED: REQUIRE( Approx(11.0) >= td ) with expansion: Approx( 11.0 ) >= StrongDoubleTypedef(10) ------------------------------------------------------------------------------- Comparisons between ints where one side is computed ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: CHECK( 54 == 6*9 ) with expansion: 54 == 54 ------------------------------------------------------------------------------- Comparisons between unsigned ints and negative signed ints match c++ standard behaviour ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: CHECK( ( -1 > 2u ) ) with expansion: true Condition.tests.cpp:: PASSED: CHECK( -1 > 2u ) with expansion: -1 > 2 Condition.tests.cpp:: PASSED: CHECK( ( 2u < -1 ) ) with expansion: true Condition.tests.cpp:: PASSED: CHECK( 2u < -1 ) with expansion: 2 < -1 Condition.tests.cpp:: PASSED: CHECK( ( minInt > 2u ) ) with expansion: true Condition.tests.cpp:: PASSED: CHECK( minInt > 2u ) with expansion: -2147483648 > 2 ------------------------------------------------------------------------------- Comparisons with int literals don't warn when mixing signed/ unsigned ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( i == 1 ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( ui == 2 ) with expansion: 2 == 2 Condition.tests.cpp:: PASSED: REQUIRE( l == 3 ) with expansion: 3 == 3 Condition.tests.cpp:: PASSED: REQUIRE( ul == 4 ) with expansion: 4 == 4 Condition.tests.cpp:: PASSED: REQUIRE( c == 5 ) with expansion: 5 == 5 Condition.tests.cpp:: PASSED: REQUIRE( uc == 6 ) with expansion: 6 == 6 Condition.tests.cpp:: PASSED: REQUIRE( 1 == i ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( 2 == ui ) with expansion: 2 == 2 Condition.tests.cpp:: PASSED: REQUIRE( 3 == l ) with expansion: 3 == 3 Condition.tests.cpp:: PASSED: REQUIRE( 4 == ul ) with expansion: 4 == 4 Condition.tests.cpp:: PASSED: REQUIRE( 5 == c ) with expansion: 5 == 5 Condition.tests.cpp:: PASSED: REQUIRE( 6 == uc ) with expansion: 6 == 6 Condition.tests.cpp:: PASSED: REQUIRE( (std::numeric_limits::max)() > ul ) with expansion: 4294967295 (0x) > 4 ------------------------------------------------------------------------------- Composed generic matchers shortcircuit MatchAllOf ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_FALSE( matcher.match( 1 ) ) with expansion: !false Matchers.tests.cpp:: PASSED: REQUIRE( first.matchCalled ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( !second.matchCalled ) with expansion: true ------------------------------------------------------------------------------- Composed generic matchers shortcircuit MatchAnyOf ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK( matcher.match( 1 ) ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( first.matchCalled ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( !second.matchCalled ) with expansion: true ------------------------------------------------------------------------------- Composed matchers shortcircuit MatchAllOf ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_FALSE( matcher.match( 1 ) ) with expansion: !false Matchers.tests.cpp:: PASSED: REQUIRE( first.matchCalled ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( !second.matchCalled ) with expansion: true ------------------------------------------------------------------------------- Composed matchers shortcircuit MatchAnyOf ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK( matcher.match( 1 ) ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( first.matchCalled ) with expansion: true Matchers.tests.cpp:: PASSED: REQUIRE( !second.matchCalled ) with expansion: true ------------------------------------------------------------------------------- Contains string matcher ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" contains: "not there" (case insensitive) Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) ) with expansion: "this string contains 'abc' as a substring" contains: "STRING" ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range from var and iterators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range From a temporary container ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( elem % 2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Copy and then generate a range Final validation ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( call_count == 1 ) with expansion: 1 == 1 Generators.tests.cpp:: PASSED: REQUIRE( make_data().size() == test_count ) with expansion: 6 == 6 ------------------------------------------------------------------------------- Cout stream properly declares it writes to stdout ------------------------------------------------------------------------------- Stream.tests.cpp: ............................................................................... Stream.tests.cpp:: PASSED: REQUIRE( Catch::makeStream( "-" )->isConsole() ) with expansion: true ------------------------------------------------------------------------------- Custom exceptions can be translated when testing for nothrow ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: REQUIRE_NOTHROW( throwCustom() ) due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- Custom exceptions can be translated when testing for throwing as something else ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: REQUIRE_THROWS_AS( throwCustom(), std::exception ) due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- Custom std-exceptions can be custom translated ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: custom std exception ------------------------------------------------------------------------------- Default scale is invisible to comparison ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 101.000001 != Approx(100).epsilon(0.01) ) with expansion: 101.00000099999999748 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) ) with expansion: 0.00001 != Approx( 0.0000001 ) ------------------------------------------------------------------------------- Directly creating an EnumInfo ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK( enumInfo->lookup(0) == "Value1" ) with expansion: Value1 == "Value1" ToString.tests.cpp:: PASSED: CHECK( enumInfo->lookup(1) == "Value2" ) with expansion: Value2 == "Value2" ToString.tests.cpp:: PASSED: CHECK( enumInfo->lookup(3) == "{** unexpected enum value **}" ) with expansion: {** unexpected enum value **} == "{** unexpected enum value **}" ------------------------------------------------------------------------------- Empty generators can SKIP in constructor ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: explicitly with message: This generator is empty ------------------------------------------------------------------------------- Empty stream name opens cout stream ------------------------------------------------------------------------------- Stream.tests.cpp: ............................................................................... Stream.tests.cpp:: PASSED: REQUIRE( Catch::makeStream( "" )->isConsole() ) with expansion: true ------------------------------------------------------------------------------- EndsWith string matcher ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) ) with expansion: "this string contains 'abc' as a substring" ends with: "Substring" Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" ends with: "this" (case insensitive) ------------------------------------------------------------------------------- Enums can quickly have stringification enabled using REGISTER_ENUM ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( EnumClass3::Value1 ) == "Value1" ) with expansion: "Value1" == "Value1" EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( EnumClass3::Value2 ) == "Value2" ) with expansion: "Value2" == "Value2" EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( EnumClass3::Value3 ) == "Value3" ) with expansion: "Value3" == "Value3" EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" ) with expansion: "{** unexpected enum value **}" == "{** unexpected enum value **}" EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( ec3 ) == "Value2" ) with expansion: "Value2" == "Value2" ------------------------------------------------------------------------------- Enums in namespaces can quickly have stringification enabled using REGISTER_ENUM ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( Bikeshed::Colours::Red ) == "Red" ) with expansion: "Red" == "Red" EnumToString.tests.cpp:: PASSED: REQUIRE( stringify( Bikeshed::Colours::Blue ) == "Blue" ) with expansion: "Blue" == "Blue" ------------------------------------------------------------------------------- Epsilon only applies to Approx's value ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( 101.01 != Approx(100).epsilon(0.01) ) with expansion: 101.01000000000000512 != Approx( 100.0 ) ------------------------------------------------------------------------------- Equality checks that should fail ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: CHECK( data.int_seven == 6 ) with expansion: 7 == 6 Condition.tests.cpp:: FAILED: CHECK( data.int_seven == 8 ) with expansion: 7 == 8 Condition.tests.cpp:: FAILED: CHECK( data.int_seven == 0 ) with expansion: 7 == 0 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: 9.100000381f == Approx( 9.10999965667724609 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: 9.100000381f == Approx( 9.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: 9.100000381f == Approx( 1.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: 9.100000381f == Approx( 0.0 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: 3.14159265350000005 == Approx( 3.14150000000000018 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "goodbye" ) with expansion: "hello" == "goodbye" Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "hell" ) with expansion: "hello" == "hell" Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "hello1" ) with expansion: "hello" == "hello1" Condition.tests.cpp:: FAILED: CHECK( data.str_hello.size() == 6 ) with expansion: 5 == 6 Condition.tests.cpp:: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: 1.30000000000000027 == Approx( 1.30099999999999993 ) ------------------------------------------------------------------------------- Equality checks that should succeed ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven == 7 ) with expansion: 7 == 7 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one == Approx( 9.1f ) ) with expansion: 9.100000381f == Approx( 9.10000038146972656 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi == Approx( 3.1415926535 ) ) with expansion: 3.14159265350000005 == Approx( 3.14159265350000005 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello == "hello" ) with expansion: "hello" == "hello" Condition.tests.cpp:: PASSED: REQUIRE( "hello" == data.str_hello ) with expansion: "hello" == "hello" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello.size() == 5 ) with expansion: 5 == 5 Condition.tests.cpp:: PASSED: REQUIRE( x == Approx( 1.3 ) ) with expansion: 1.30000000000000027 == Approx( 1.30000000000000004 ) ------------------------------------------------------------------------------- Equals ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) ) with expansion: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive) ------------------------------------------------------------------------------- Equals string matcher ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) ) with expansion: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring" Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" equals: "something else" (case insensitive) ------------------------------------------------------------------------------- Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" ) with expansion: "This exception has overridden what() method" == "This exception has overridden what() method" ToStringGeneral.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" ) with expansion: "OperatorException" == "OperatorException" ToStringGeneral.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" ) with expansion: "StringMakerException" == "StringMakerException" ------------------------------------------------------------------------------- Exception matchers that fail No exception ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } ) because no exception was thrown where one was expected: Matchers.tests.cpp:: FAILED: REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } ) because no exception was thrown where one was expected: ------------------------------------------------------------------------------- Exception matchers that fail Type mismatch ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } ) due to unexpected exception with message: Unknown exception Matchers.tests.cpp:: FAILED: REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } ) due to unexpected exception with message: Unknown exception ------------------------------------------------------------------------------- Exception matchers that fail Contents are wrong ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } ) with expansion: SpecialException::what special exception has value of 1 Matchers.tests.cpp:: FAILED: REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } ) with expansion: SpecialException::what special exception has value of 1 ------------------------------------------------------------------------------- Exception matchers that succeed ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THROWS_MATCHES( throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } ) with expansion: SpecialException::what special exception has value of 1 Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } ) with expansion: SpecialException::what special exception has value of 2 ------------------------------------------------------------------------------- Exception message can be matched ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) ) with expansion: DerivedException::what matches "starts with: "Derived"" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) ) with expansion: DerivedException::what matches "ends with: "::what"" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) ) with expansion: DerivedException::what matches "not starts with: "::what"" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) ) with expansion: SpecialException::what matches "starts with: "Special"" ------------------------------------------------------------------------------- Exception messages can be tested for exact match ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), "expected exception" ) with expansion: "expected exception" equals: "expected exception" ------------------------------------------------------------------------------- Exception messages can be tested for different case ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) ) with expansion: "expected exception" equals: "expected exception" (case insensitive) ------------------------------------------------------------------------------- Exception messages can be tested for wildcarded ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), StartsWith( "expected" ) ) with expansion: "expected exception" starts with: "expected" Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), EndsWith( "exception" ) ) with expansion: "expected exception" ends with: "exception" Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "except" ) ) with expansion: "expected exception" contains: "except" Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) ) with expansion: "expected exception" contains: "except" (case insensitive) ------------------------------------------------------------------------------- Exceptions matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) ) with expansion: DerivedException::what exception message matches "DerivedException::what" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) ) with expansion: DerivedException::what not exception message matches "derivedexception::what" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) ) with expansion: SpecialException::what not exception message matches "DerivedException::what" Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) ) with expansion: SpecialException::what exception message matches "SpecialException::what" ------------------------------------------------------------------------------- Expected exceptions that don't throw or unexpected exceptions fail the test ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: CHECK_THROWS_AS( thisThrows(), std::string ) due to unexpected exception with message: expected exception Exception.tests.cpp:: FAILED: CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error ) because no exception was thrown where one was expected: Exception.tests.cpp:: FAILED: CHECK_NOTHROW( thisThrows() ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- FAIL aborts the test ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: This is a failure ------------------------------------------------------------------------------- FAIL does not require an argument ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: ------------------------------------------------------------------------------- FAIL_CHECK does not abort the test ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: This is a failure Message.tests.cpp:: warning: This message appears in the output ------------------------------------------------------------------------------- Factorials are computed ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( Factorial(0) == 1 ) with expansion: 1 == 1 Misc.tests.cpp:: PASSED: REQUIRE( Factorial(1) == 1 ) with expansion: 1 == 1 Misc.tests.cpp:: PASSED: REQUIRE( Factorial(2) == 2 ) with expansion: 2 == 2 Misc.tests.cpp:: PASSED: REQUIRE( Factorial(3) == 6 ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( Factorial(10) == 3628800 ) with expansion: 3628800 (0x) == 3628800 (0x) ------------------------------------------------------------------------------- Filter generator throws exception for empty generator ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_THROWS_AS( filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException ) ------------------------------------------------------------------------------- Floating point matchers: double Relative ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., WithinRel( 11.1, 0.1 ) ) with expansion: 10.0 and 11.09999999999999964 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., !WithinRel( 11.2, 0.1 ) ) with expansion: 10.0 not and 11.19999999999999929 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !WithinRel( 0., 0.99 ) ) with expansion: 1.0 not and 0.0 are within 99% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -0., WithinRel( 0. ) ) with expansion: -0.0 and 0.0 are within 2.22045e-12% of each other ------------------------------------------------------------------------------- Floating point matchers: double Relative Some subnormal values ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, WithinRel( v2 ) ) with expansion: 0.0 and 0.0 are within 2.22045e-12% of each other ------------------------------------------------------------------------------- Floating point matchers: double Margin ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinAbs( 1., 0 ) ) with expansion: 1.0 is within 0.0 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., WithinAbs( 1., 1 ) ) with expansion: 0.0 is within 1.0 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 11., !WithinAbs( 10., 0.5 ) ) with expansion: 11.0 not is within 0.5 of 10.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., !WithinAbs( 11., 0.5 ) ) with expansion: 10.0 not is within 0.5 of 11.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10., WithinAbs( -10., 0.5 ) ) with expansion: -10.0 is within 0.5 of -10.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10., WithinAbs( -9.6, 0.5 ) ) with expansion: -10.0 is within 0.5 of -9.59999999999999964 ------------------------------------------------------------------------------- Floating point matchers: double ULPs ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinULP( 1., 0 ) ) with expansion: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1. 0000000000000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1., 2. ), WithinULP( 1., 1 ) ) with expansion: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9. 9999999999999989e-01, 1.0000000000000002e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., WithinULP( nextafter( 0., 1. ), 1 ) ) with expansion: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9. 8813129168249309e-324]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinULP( nextafter( 1., 0. ), 1 ) ) with expansion: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1. 0000000000000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !WithinULP( nextafter( 1., 2. ), 0 ) ) with expansion: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinULP( 1., 0 ) ) with expansion: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1. 0000000000000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -0., WithinULP( 0., 0 ) ) with expansion: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0. 0000000000000000e+00]) ------------------------------------------------------------------------------- Floating point matchers: double Composed ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) ) with expansion: 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1. 9999999999999998e+00, 2.0000000000000004e+00]) ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) ) with expansion: 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1. 0000000000000000e+00, 1.0000000000000000e+00]) ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) ) with expansion: 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) ------------------------------------------------------------------------------- Floating point matchers: double Constructor validation ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinAbs( 1., 0. ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinAbs( 1., -1. ), std::domain_error ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinULP( 1., 0 ) ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinRel( 1., 0. ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinRel( 1., -0.2 ), std::domain_error ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinRel( 1., 1. ), std::domain_error ) ------------------------------------------------------------------------------- Floating point matchers: double IsNaN ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !IsNaN() ) with expansion: 1.0 not is NaN ------------------------------------------------------------------------------- Floating point matchers: float Relative ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, WithinRel( 11.1f, 0.1f ) ) with expansion: 10.0f and 11.10000038146972656 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, !WithinRel( 11.2f, 0.1f ) ) with expansion: 10.0f not and 11.19999980926513672 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, !WithinRel( 0.f, 0.99f ) ) with expansion: 1.0f not and 0.0 are within 99% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -0.f, WithinRel( 0.f ) ) with expansion: -0.0f and 0.0 are within 0.00119209% of each other ------------------------------------------------------------------------------- Floating point matchers: float Relative Some subnormal values ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, WithinRel( v2 ) ) with expansion: 0.0f and 0.0 are within 0.00119209% of each other ------------------------------------------------------------------------------- Floating point matchers: float Margin ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinAbs( 1.f, 0 ) ) with expansion: 1.0f is within 0.0 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinAbs( 1.f, 1 ) ) with expansion: 0.0f is within 1.0 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinAbs( -0.f, 0 ) ) with expansion: 0.0f is within 0.0 of -0.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 11.f, !WithinAbs( 10.f, 0.5f ) ) with expansion: 11.0f not is within 0.5 of 10.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, !WithinAbs( 11.f, 0.5f ) ) with expansion: 10.0f not is within 0.5 of 11.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10.f, WithinAbs( -10.f, 0.5f ) ) with expansion: -10.0f is within 0.5 of -10.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10.f, WithinAbs( -9.6f, 0.5f ) ) with expansion: -10.0f is within 0.5 of -9.60000038146972656 ------------------------------------------------------------------------------- Floating point matchers: float ULPs ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinULP( 1.f, 0 ) ) with expansion: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -1.f, WithinULP( -1.f, 0 ) ) with expansion: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+ 00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) ) with expansion: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1. 00000012e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) ) with expansion: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) ) with expansion: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) ) with expansion: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+ 00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinULP( 1.f, 0 ) ) with expansion: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -0.f, WithinULP( 0.f, 0 ) ) with expansion: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00]) ------------------------------------------------------------------------------- Floating point matchers: float Composed ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) ) with expansion: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9. 99999940e-01, 1.00000012e+00]) ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) ) with expansion: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1. 00000000e+00, 1.00000000e+00]) ) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) ) with expansion: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) ------------------------------------------------------------------------------- Floating point matchers: float Constructor validation ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinAbs( 1.f, 0.f ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinAbs( 1.f, -1.f ), std::domain_error ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinULP( 1.f, 0 ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinULP( 1.f, static_cast( -1 ) ), std::domain_error ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( WithinRel( 1.f, 0.f ) ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinRel( 1.f, -0.2f ), std::domain_error ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( WithinRel( 1.f, 1.f ), std::domain_error ) ------------------------------------------------------------------------------- Floating point matchers: float IsNaN ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !IsNaN() ) with expansion: 1.0 not is NaN ------------------------------------------------------------------------------- GENERATE can combine literals and generators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- GENERATE can combine literals and generators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- GENERATE can combine literals and generators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- GENERATE can combine literals and generators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Filtering by predicate Basic usage ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Filtering by predicate Basic usage ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Filtering by predicate Basic usage ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Filtering by predicate Throws if there are no matching values ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE_THROWS_AS( filter([] (int) {return false; }, value(1)), Catch::GeneratorException ) ------------------------------------------------------------------------------- Generators -- adapters Shortening a range ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i < 4 ) with expansion: 1 < 4 ------------------------------------------------------------------------------- Generators -- adapters Shortening a range ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i < 4 ) with expansion: 2 < 4 ------------------------------------------------------------------------------- Generators -- adapters Shortening a range ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i < 4 ) with expansion: 3 < 4 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Same type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Same type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Same type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i % 2 == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different deduced type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different deduced type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Transforming elements Different deduced type ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( i.size() == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 1 > 0 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 2 > 0 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 3 > 0 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 1 > 0 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 2 > 0 ------------------------------------------------------------------------------- Generators -- adapters Repeating a generator ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j > 0 ) with expansion: 3 > 0 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Number of elements in source is divisible by chunk size ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 2 ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() == chunk2.back() ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Number of elements in source is divisible by chunk size ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 2 ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() == chunk2.back() ) with expansion: 2 == 2 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Number of elements in source is divisible by chunk size ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 2 ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() == chunk2.back() ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Number of elements in source is not divisible by chunk size ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 2 ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() == chunk2.back() ) with expansion: 1 == 1 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() < 3 ) with expansion: 1 < 3 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Number of elements in source is not divisible by chunk size ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 2 ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() == chunk2.back() ) with expansion: 2 == 2 Generators.tests.cpp:: PASSED: REQUIRE( chunk2.front() < 3 ) with expansion: 2 < 3 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Chunk size of zero ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Chunk size of zero ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Chunk size of zero ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( chunk2.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generators -- adapters Chunking a generator into sized pieces Throws on too small generators ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE_THROWS_AS( chunk(2, value(1)), Catch::GeneratorException ) ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -3 < 1 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -2 < 1 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -1 < 1 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 4 > 1 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 4 > 2 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 4 > 3 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -3 < 2 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -2 < 2 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -1 < 2 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 8 > 1 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 8 > 2 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 8 > 3 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -3 < 3 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -2 < 3 ------------------------------------------------------------------------------- Generators -- simple one ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( j < i ) with expansion: -1 < 3 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 12 > 1 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 12 > 2 ------------------------------------------------------------------------------- Generators -- simple two ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( 4u * i > str.size() ) with expansion: 12 > 3 ------------------------------------------------------------------------------- Generators internals Single value ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 123 ) with expansion: 123 == 123 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Preset values ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Generator combinator ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 4 ) with expansion: 4 == 4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 0 ) with expansion: 0 == 0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Explicitly typed generator sequence ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get().size() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == "aa" ) with expansion: "aa" == "aa" GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == "bb" ) with expansion: "bb" == "bb" GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == "cc" ) with expansion: "cc" == "cc" GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Filter generator Simple filtering ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Filter generator Filter out multiple elements at the start and end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Filter generator Throws on construction if it can't get initial element ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_THROWS_AS( filter([](int) { return false; }, value(1)), Catch::GeneratorException ) GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_THROWS_AS( filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException ) ------------------------------------------------------------------------------- Generators internals Take generator Take less ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Take generator Take more ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Map with explicit return type ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2.0 ) with expansion: 2.0 == 2.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 4.0 ) with expansion: 4.0 == 4.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 6.0 ) with expansion: 6.0 == 6.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Map with deduced return type ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2.0 ) with expansion: 2.0 == 2.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 4.0 ) with expansion: 4.0 == 4.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 6.0 ) with expansion: 6.0 == 6.0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Repeat Singular repeat ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Repeat Actual repeat ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 3 ) with expansion: 3 == 3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive auto step Integer ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -2 ) with expansion: -2 == -2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 0 ) with expansion: 0 == 0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Negative auto step Integer ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 1 ) with expansion: 1 == 1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 0 ) with expansion: 0 == 0 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Integer Exact ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -7 ) with expansion: -7 == -7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Integer Slightly over end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -7 ) with expansion: -7 == -7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Integer Slightly under end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -7 ) with expansion: -7 == -7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Floating Point Exact ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -1.0 == Approx( -1.0 ) with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.90000000000000002 == Approx( -0.90000000000000002 ) with message: Current expected value is -0.9 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.9 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.80000000000000004 == Approx( -0.80000000000000004 ) with message: Current expected value is -0.8 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.8 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.70000000000000007 == Approx( -0.70000000000000007 ) with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.60000000000000009 == Approx( -0.60000000000000009 ) with message: Current expected value is -0.6 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.6 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.50000000000000011 == Approx( -0.50000000000000011 ) with message: Current expected value is -0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.40000000000000013 == Approx( -0.40000000000000013 ) with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.30000000000000016 == Approx( -0.30000000000000016 ) with message: Current expected value is -0.3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.20000000000000015 == Approx( -0.20000000000000015 ) with message: Current expected value is -0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.10000000000000014 == Approx( -0.10000000000000014 ) with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.00000000000000014 == Approx( -0.00000000000000014 ) with message: Current expected value is -1.38778e-16 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -1.38778e-16 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.09999999999999987 == Approx( 0.09999999999999987 ) with message: Current expected value is 0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.19999999999999987 == Approx( 0.19999999999999987 ) with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.29999999999999988 == Approx( 0.29999999999999988 ) with message: Current expected value is 0.3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.3 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.39999999999999991 == Approx( 0.39999999999999991 ) with message: Current expected value is 0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.49999999999999989 == Approx( 0.49999999999999989 ) with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.59999999999999987 == Approx( 0.59999999999999987 ) with message: Current expected value is 0.6 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.6 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.69999999999999984 == Approx( 0.69999999999999984 ) with message: Current expected value is 0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.79999999999999982 == Approx( 0.79999999999999982 ) with message: Current expected value is 0.8 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.8 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.8999999999999998 == Approx( 0.8999999999999998 ) with message: Current expected value is 0.9 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.9 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx( rangeEnd ) ) with expansion: 0.99999999999999978 == Approx( 1.0 ) GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Floating Point Slightly over end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -1.0 == Approx( -1.0 ) with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.69999999999999996 == Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.39999999999999997 == Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.09999999999999998 == Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.20000000000000001 == Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.5 == Approx( 0.5 ) with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Positive manual step Floating Point Slightly under end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -1.0 == Approx( -1.0 ) with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.69999999999999996 == Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.39999999999999997 == Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: -0.09999999999999998 == Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is -0.1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.20000000000000001 == Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: 0.5 == Approx( 0.5 ) with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true with message: Current expected value is 0.5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Negative manual step Integer Exact ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Negative manual step Integer Slightly over end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Generators internals Range Negative manual step Integer Slightly under end ------------------------------------------------------------------------------- GeneratorsImpl.tests.cpp: ............................................................................... GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 5 ) with expansion: 5 == 5 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == 2 ) with expansion: 2 == 2 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -1 ) with expansion: -1 == -1 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -4 ) with expansion: -4 == -4 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.next() ) with expansion: true GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == -7 ) with expansion: -7 == -7 GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) with expansion: !false ------------------------------------------------------------------------------- Greater-than inequalities with different epsilons ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.22 ) ) with expansion: 1.22999999999999998 >= Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.23 ) ) with expansion: 1.22999999999999998 >= Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d >= Approx( 1.24 ) ) with expansion: !(1.22999999999999998 >= Approx( 1.23999999999999999 )) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) ) with expansion: 1.22999999999999998 >= Approx( 1.23999999999999999 ) ------------------------------------------------------------------------------- Hashers with different seed produce different hash with same test case ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h1( dummy ) != h2( dummy ) ) with expansion: 3422778688 (0x) != 130711275 (0x) ------------------------------------------------------------------------------- Hashers with same seed produce same hash ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h1( dummy ) == h2( dummy ) ) with expansion: 3422778688 (0x) == 3422778688 (0x) ------------------------------------------------------------------------------- Hashing different test cases produces different result Different test name ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h( dummy1 ) != h( dummy2 ) ) with expansion: 2903002874 (0x) != 2668622104 (0x) ------------------------------------------------------------------------------- Hashing different test cases produces different result Different classname ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h( dummy1 ) != h( dummy2 ) ) with expansion: 2673152918 (0x) != 3916075712 (0x) ------------------------------------------------------------------------------- Hashing different test cases produces different result Different tags ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h( dummy1 ) != h( dummy2 ) ) with expansion: 2074929312 (0x) != 3429949824 (0x) ------------------------------------------------------------------------------- Hashing test case produces same hash across multiple calls ------------------------------------------------------------------------------- TestCaseInfoHasher.tests.cpp: ............................................................................... TestCaseInfoHasher.tests.cpp:: PASSED: REQUIRE( h( dummy ) == h( dummy ) ) with expansion: 3422778688 (0x) == 3422778688 (0x) ------------------------------------------------------------------------------- INFO and UNSCOPED_INFO can stream multiple arguments ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with messages: This info has multiple parts. This unscoped info has multiple parts. Show infos! ------------------------------------------------------------------------------- INFO and WARN do not abort tests ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: warning: this is a message this is a warning No assertions in test case 'INFO and WARN do not abort tests' ------------------------------------------------------------------------------- INFO gets logged on failure ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: REQUIRE( a == 1 ) with expansion: 2 == 1 with messages: this message should be logged so should this ------------------------------------------------------------------------------- INFO gets logged on failure, even if captured before successful assertions ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: CHECK( a == 2 ) with expansion: 2 == 2 with message: this message may be logged later Message.tests.cpp:: FAILED: CHECK( a == 1 ) with expansion: 2 == 1 with messages: this message may be logged later this message should be logged Message.tests.cpp:: FAILED: CHECK( a == 0 ) with expansion: 2 == 0 with messages: this message may be logged later this message should be logged and this, but later Message.tests.cpp:: PASSED: CHECK( a == 2 ) with expansion: 2 == 2 with messages: this message may be logged later this message should be logged and this, but later but not this ------------------------------------------------------------------------------- INFO is reset for each loop ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 0 < 10 with messages: current counter 0 i := 0 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 1 < 10 with messages: current counter 1 i := 1 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 2 < 10 with messages: current counter 2 i := 2 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 3 < 10 with messages: current counter 3 i := 3 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 4 < 10 with messages: current counter 4 i := 4 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 5 < 10 with messages: current counter 5 i := 5 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 6 < 10 with messages: current counter 6 i := 6 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 7 < 10 with messages: current counter 7 i := 7 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 8 < 10 with messages: current counter 8 i := 8 Message.tests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 9 < 10 with messages: current counter 9 i := 9 Message.tests.cpp:: FAILED: REQUIRE( i < 10 ) with expansion: 10 < 10 with messages: current counter 10 i := 10 ------------------------------------------------------------------------------- Incomplete AssertionHandler ------------------------------------------------------------------------------- AssertionHandler.tests.cpp: ............................................................................... AssertionHandler.tests.cpp:: FAILED: REQUIRE( Dummy ) due to unexpected exception with message: Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE ------------------------------------------------------------------------------- Inequality checks that should fail ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: CHECK( data.int_seven != 7 ) with expansion: 7 != 7 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: 9.100000381f != Approx( 9.10000038146972656 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: 3.14159265350000005 != Approx( 3.14159265350000005 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello != "hello" ) with expansion: "hello" != "hello" Condition.tests.cpp:: FAILED: CHECK( data.str_hello.size() != 5 ) with expansion: 5 != 5 ------------------------------------------------------------------------------- Inequality checks that should succeed ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven != 6 ) with expansion: 7 != 6 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven != 8 ) with expansion: 7 != 8 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.11f ) ) with expansion: 9.100000381f != Approx( 9.10999965667724609 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.0f ) ) with expansion: 9.100000381f != Approx( 9.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 1 ) ) with expansion: 9.100000381f != Approx( 1.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 0 ) ) with expansion: 9.100000381f != Approx( 0.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi != Approx( 3.1415 ) ) with expansion: 3.14159265350000005 != Approx( 3.14150000000000018 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello != "goodbye" ) with expansion: "hello" != "goodbye" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello != "hell" ) with expansion: "hello" != "hell" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello != "hello1" ) with expansion: "hello" != "hello1" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello.size() != 6 ) with expansion: 5 != 6 ------------------------------------------------------------------------------- JsonWriter Newly constructed JsonWriter does nothing ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "" ) with expansion: "" == "" ------------------------------------------------------------------------------- JsonWriter Calling writeObject will create an empty pair of braces ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "{\n}" ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- JsonWriter Calling writeObject with key will create an object to write the value ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE_THAT( stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) ) with expansion: "{ "int": 1, "double": 1.5, "true": true, "false": false, "string": "this is a string", "array": [ 1, 2 ] }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [ 1, 2 ] }" ) ------------------------------------------------------------------------------- JsonWriter nesting objects ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE_THAT( stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) ) with expansion: "{ "empty_object": { }, "fully_object": { "key": 1 } }" ( contains: ""empty_object": { }," and contains: ""fully_object": { "key": 1 }" ) ------------------------------------------------------------------------------- JsonWriter Calling writeArray will create an empty pair of braces ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "[\n]" ) with expansion: "[ ]" == "[ ]" ------------------------------------------------------------------------------- JsonWriter Calling writeArray creates array to write the values to ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" ) with expansion: "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]" == "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]" ------------------------------------------------------------------------------- JsonWriter Moved from JsonObjectWriter shall not insert superfluous brace ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "{\n}" ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- JsonWriter Moved from JsonArrayWriter shall not insert superfluous bracket ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "[\n]" ) with expansion: "[ ]" == "[ ]" ------------------------------------------------------------------------------- JsonWriter Custom class shall be quoted ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( stream.str() == "\"custom\"" ) with expansion: ""custom"" == ""custom"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly Quote in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\\"\"" ) with expansion: ""\""" == ""\""" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly Backslash in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\\\\"" ) with expansion: ""\\"" == ""\\"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly Forward slash in a string is **not** escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"/\"" ) with expansion: ""/"" == ""/"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly Backspace in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\b\"" ) with expansion: ""\b"" == ""\b"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly Formfeed in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\f\"" ) with expansion: ""\f"" == ""\f"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly linefeed in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\n\"" ) with expansion: ""\n"" == ""\n"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly carriage return in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\r\"" ) with expansion: ""\r"" == ""\r"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly tab in a string is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\t\"" ) with expansion: ""\t"" == ""\t"" ------------------------------------------------------------------------------- JsonWriter escapes charaters in strings properly combination of characters is escaped ------------------------------------------------------------------------------- Json.tests.cpp: ............................................................................... Json.tests.cpp:: PASSED: REQUIRE( sstream.str() == "\"\\\\/\\t\\r\\n\"" ) with expansion: ""\\/\t\r\n"" == ""\\/\t\r\n"" ------------------------------------------------------------------------------- Lambdas in assertions ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: REQUIRE( []() { return true; }() ) with expansion: true ------------------------------------------------------------------------------- Less-than inequalities with different epsilons ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.24 ) ) with expansion: 1.22999999999999998 <= Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.23 ) ) with expansion: 1.22999999999999998 <= Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d <= Approx( 1.22 ) ) with expansion: !(1.22999999999999998 <= Approx( 1.21999999999999997 )) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) ) with expansion: 1.22999999999999998 <= Approx( 1.21999999999999997 ) ------------------------------------------------------------------------------- ManuallyRegistered ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: was called ------------------------------------------------------------------------------- Matchers can be (AllOf) composed with the && operator ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) ) with expansion: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) ------------------------------------------------------------------------------- Matchers can be (AnyOf) composed with the || operator ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) ) with expansion: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) ) with expansion: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" ) ------------------------------------------------------------------------------- Matchers can be composed with both && and || ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) ) with expansion: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" ) ------------------------------------------------------------------------------- Matchers can be composed with both && and || - failing ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) ) with expansion: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" ) ------------------------------------------------------------------------------- Matchers can be negated (Not) with the ! operator ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), !ContainsSubstring( "different" ) ) with expansion: "this string contains 'abc' as a substring" not contains: "different" ------------------------------------------------------------------------------- Matchers can be negated (Not) with the ! operator - failing ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) ) with expansion: "this string contains 'abc' as a substring" not contains: "substring" ------------------------------------------------------------------------------- Mayfail test case with nested sections A 1 ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Mayfail test case with nested sections A 2 ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Mayfail test case with nested sections B 1 ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Mayfail test case with nested sections B 2 ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Mismatching exception messages failing the test ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( thisThrows(), "expected exception" ) with expansion: "expected exception" equals: "expected exception" Exception.tests.cpp:: FAILED: REQUIRE_THROWS_WITH( thisThrows(), "should fail" ) with expansion: "expected exception" equals: "should fail" ------------------------------------------------------------------------------- Multireporter calls reporters and listeners in correct order ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE( records == expected ) with expansion: { "Hello", "world", "Goodbye", "world" } == { "Hello", "world", "Goodbye", "world" } ------------------------------------------------------------------------------- Multireporter updates ReporterPreferences properly ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false ) with expansion: false == false Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false ) with expansion: false == false ------------------------------------------------------------------------------- Multireporter updates ReporterPreferences properly Adding listeners ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false ) with expansion: false == false Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true ) with expansion: true == true ------------------------------------------------------------------------------- Multireporter updates ReporterPreferences properly ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false ) with expansion: false == false Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false ) with expansion: false == false ------------------------------------------------------------------------------- Multireporter updates ReporterPreferences properly Adding reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false ) with expansion: false == false Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true ) with expansion: true == true Reporters.tests.cpp:: PASSED: REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true ) with expansion: true == true ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 3 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 4 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 5 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 6 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: -5 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: -4 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 90 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 91 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 92 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 93 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 94 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 95 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 96 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 97 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 98 > -6 ------------------------------------------------------------------------------- Nested generators and captured variables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( values > -6 ) with expansion: 99 > -6 ------------------------------------------------------------------------------- Nice descriptive name ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: warning: This one ran No assertions in test case 'Nice descriptive name' ------------------------------------------------------------------------------- Non-std exceptions can be translated ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: custom exception ------------------------------------------------------------------------------- Objects that evaluated in boolean contexts can be checked ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: CHECK( True ) with expansion: {?} Tricky.tests.cpp:: PASSED: CHECK( !False ) with expansion: true Tricky.tests.cpp:: PASSED: CHECK_FALSE( False ) with expansion: !{?} ------------------------------------------------------------------------------- Optionally static assertions ------------------------------------------------------------------------------- Compilation.tests.cpp: ............................................................................... Compilation.tests.cpp:: PASSED: with message: std::is_void::value Compilation.tests.cpp:: PASSED: with message: !(std::is_void::value) Compilation.tests.cpp:: PASSED: with message: std::is_void::value Compilation.tests.cpp:: PASSED: with message: !(std::is_void::value) ------------------------------------------------------------------------------- Ordering comparison checks that should fail ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: FAILED: CHECK( data.int_seven > 7 ) with expansion: 7 > 7 Condition.tests.cpp:: FAILED: CHECK( data.int_seven < 7 ) with expansion: 7 < 7 Condition.tests.cpp:: FAILED: CHECK( data.int_seven > 8 ) with expansion: 7 > 8 Condition.tests.cpp:: FAILED: CHECK( data.int_seven < 6 ) with expansion: 7 < 6 Condition.tests.cpp:: FAILED: CHECK( data.int_seven < 0 ) with expansion: 7 < 0 Condition.tests.cpp:: FAILED: CHECK( data.int_seven < -1 ) with expansion: 7 < -1 Condition.tests.cpp:: FAILED: CHECK( data.int_seven >= 8 ) with expansion: 7 >= 8 Condition.tests.cpp:: FAILED: CHECK( data.int_seven <= 6 ) with expansion: 7 <= 6 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: 9.100000381f < 9 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: 9.100000381f > 10 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "hello" ) with expansion: "hello" > "hello" Condition.tests.cpp:: FAILED: CHECK( data.str_hello < "hello" ) with expansion: "hello" < "hello" Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "hellp" ) with expansion: "hello" > "hellp" Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "z" ) with expansion: "hello" > "z" Condition.tests.cpp:: FAILED: CHECK( data.str_hello < "hellm" ) with expansion: "hello" < "hellm" Condition.tests.cpp:: FAILED: CHECK( data.str_hello < "a" ) with expansion: "hello" < "a" Condition.tests.cpp:: FAILED: CHECK( data.str_hello >= "z" ) with expansion: "hello" >= "z" Condition.tests.cpp:: FAILED: CHECK( data.str_hello <= "a" ) with expansion: "hello" <= "a" ------------------------------------------------------------------------------- Ordering comparison checks that should succeed ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven < 8 ) with expansion: 7 < 8 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven > 6 ) with expansion: 7 > 6 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven > 0 ) with expansion: 7 > 0 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven > -1 ) with expansion: 7 > -1 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven >= 7 ) with expansion: 7 >= 7 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven >= 6 ) with expansion: 7 >= 6 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven <= 7 ) with expansion: 7 <= 7 Condition.tests.cpp:: PASSED: REQUIRE( data.int_seven <= 8 ) with expansion: 7 <= 8 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one > 9 ) with expansion: 9.100000381f > 9 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 10 ) with expansion: 9.100000381f < 10 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 9.2 ) with expansion: 9.100000381f < 9.19999999999999929 Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello <= "hello" ) with expansion: "hello" <= "hello" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello >= "hello" ) with expansion: "hello" >= "hello" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello < "hellp" ) with expansion: "hello" < "hellp" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello < "zebra" ) with expansion: "hello" < "zebra" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello > "hellm" ) with expansion: "hello" > "hellm" Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello > "a" ) with expansion: "hello" > "a" ------------------------------------------------------------------------------- Our PCG implementation provides expected results for known seeds Default seeded ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 4242248763 (0x) == 4242248763 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1867888929 (0x) == 1867888929 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1276619030 (0x) == 1276619030 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1911218783 (0x) == 1911218783 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1827115164 (0x) == 1827115164 (0x) ------------------------------------------------------------------------------- Our PCG implementation provides expected results for known seeds Specific seed ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1472234645 (0x) == 1472234645 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 868832940 (0x) == 868832940 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 570883446 (0x) == 570883446 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 889299803 (0x) == 889299803 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 4261393167 (0x) == 4261393167 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 1472234645 (0x) == 1472234645 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 868832940 (0x) == 868832940 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 570883446 (0x) == 570883446 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 889299803 (0x) == 889299803 (0x) RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( rng() == 0x ) with expansion: 4261393167 (0x) == 4261393167 (0x) ------------------------------------------------------------------------------- Output from all sections is reported one ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: Message from section one ------------------------------------------------------------------------------- Output from all sections is reported two ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: Message from section two ------------------------------------------------------------------------------- Overloaded comma or address-of operators are not used ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed ) Matchers.tests.cpp:: PASSED: REQUIRE_THROWS_AS( &EvilMatcher(), EvilAddressOfOperatorUsed ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) ) Matchers.tests.cpp:: PASSED: REQUIRE_NOTHROW( ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() ) ------------------------------------------------------------------------------- Parse uints proper inputs ------------------------------------------------------------------------------- Parse.tests.cpp: ............................................................................... Parse.tests.cpp:: PASSED: REQUIRE( parseUInt( "0" ) == Optional{ 0 } ) with expansion: {?} == {?} Parse.tests.cpp:: PASSED: REQUIRE( parseUInt( "100" ) == Optional{ 100 } ) with expansion: {?} == {?} Parse.tests.cpp:: PASSED: REQUIRE( parseUInt( "4294967295" ) == Optional{ 4294967295 } ) with expansion: {?} == {?} Parse.tests.cpp:: PASSED: REQUIRE( parseUInt( "0x", 16 ) == Optional{ 255 } ) with expansion: {?} == {?} ------------------------------------------------------------------------------- Parse uints Bad inputs ------------------------------------------------------------------------------- Parse.tests.cpp: ............................................................................... Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "!!KJHF*#" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "-1" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "4294967296" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "42949672964294967296429496729642949672964294967296" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "2 4" ) ) with expansion: !{?} Parse.tests.cpp:: PASSED: REQUIRE_FALSE( parseUInt( "0x", 10 ) ) with expansion: !{?} ------------------------------------------------------------------------------- Parsed tags are matched case insensitive ------------------------------------------------------------------------------- TestSpecParser.tests.cpp: ............................................................................... TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.hasFilters() ) with expansion: true TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.getInvalidSpecs().empty() ) with expansion: true TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.matches( testCase ) ) with expansion: true ------------------------------------------------------------------------------- Parsing sharding-related cli flags shard-count ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--shard-count=8" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.shardCount == 8 ) with expansion: 8 == 8 ------------------------------------------------------------------------------- Parsing sharding-related cli flags Negative shard count reports error ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK_FALSE( result ) with expansion: !{?} CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) ) with expansion: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count" ------------------------------------------------------------------------------- Parsing sharding-related cli flags Zero shard count reports error ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK_FALSE( result ) with expansion: !{?} CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) ) with expansion: "Shard count must be positive" contains: "Shard count must be positive" ------------------------------------------------------------------------------- Parsing sharding-related cli flags shard-index ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--shard-index=2" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.shardIndex == 2 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- Parsing sharding-related cli flags Negative shard index reports error ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK_FALSE( result ) with expansion: !{?} CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) ) with expansion: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index" ------------------------------------------------------------------------------- Parsing sharding-related cli flags Shard index 0 is accepted ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--shard-index=0" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.shardIndex == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Parsing tags with non-alphabetical characters is pass-through ------------------------------------------------------------------------------- TestSpecParser.tests.cpp: ............................................................................... TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.hasFilters() ) with expansion: true with message: tagString := "[tag with spaces]" TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.getInvalidSpecs().empty() ) with expansion: true with message: tagString := "[tag with spaces]" TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.matches( testCase ) ) with expansion: true with message: tagString := "[tag with spaces]" ------------------------------------------------------------------------------- Parsing tags with non-alphabetical characters is pass-through ------------------------------------------------------------------------------- TestSpecParser.tests.cpp: ............................................................................... TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.hasFilters() ) with expansion: true with message: tagString := "[I said "good day" sir!]" TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.getInvalidSpecs().empty() ) with expansion: true with message: tagString := "[I said "good day" sir!]" TestSpecParser.tests.cpp:: PASSED: REQUIRE( spec.matches( testCase ) ) with expansion: true with message: tagString := "[I said "good day" sir!]" ------------------------------------------------------------------------------- Parsing warnings NoAssertions ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: REQUIRE( cli.parse( { "test", "-w", "NoAssertions" } ) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.warnings == WarnAbout::NoAssertions ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Parsing warnings NoTests is no longer supported ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: REQUIRE_FALSE( cli.parse( { "test", "-w", "NoTests" } ) ) with expansion: !{?} ------------------------------------------------------------------------------- Parsing warnings Combining multiple warnings ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: REQUIRE( cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Pointers can be compared to null ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( p == 0 ) with expansion: 0 == 0 Condition.tests.cpp:: PASSED: REQUIRE( p == pNULL ) with expansion: 0 == 0 Condition.tests.cpp:: PASSED: REQUIRE( p != 0 ) with expansion: 0x != 0 Condition.tests.cpp:: PASSED: REQUIRE( cp != 0 ) with expansion: 0x != 0 Condition.tests.cpp:: PASSED: REQUIRE( cpc != 0 ) with expansion: 0x != 0 Condition.tests.cpp:: PASSED: REQUIRE( returnsNull() == 0 ) with expansion: {null string} == 0 Condition.tests.cpp:: PASSED: REQUIRE( returnsConstNull() == 0 ) with expansion: {null string} == 0 Condition.tests.cpp:: PASSED: REQUIRE( 0 != p ) with expansion: 0 != 0x ------------------------------------------------------------------------------- Precision of floating point stringification can be set Floats ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: CHECK( str1.size() == 3 + 5 ) with expansion: 8 == 8 ToStringGeneral.tests.cpp:: PASSED: REQUIRE( str2.size() == 3 + 10 ) with expansion: 13 == 13 ------------------------------------------------------------------------------- Precision of floating point stringification can be set Double ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: CHECK( str1.size() == 2 + 5 ) with expansion: 7 == 7 ToStringGeneral.tests.cpp:: PASSED: REQUIRE( str2.size() == 2 + 15 ) with expansion: 17 == 17 ------------------------------------------------------------------------------- Predicate matcher can accept const char* ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( "foo", Predicate( []( const char* const& ) { return true; } ) ) with expansion: "foo" matches undescribed predicate ------------------------------------------------------------------------------- Process can be configured on command line empty args don't cause a crash ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} CmdLine.tests.cpp:: PASSED: CHECK( config.processName == "" ) with expansion: "" == "" ------------------------------------------------------------------------------- Process can be configured on command line default - no arguments ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} CmdLine.tests.cpp:: PASSED: CHECK( config.processName == "test" ) with expansion: "test" == "test" CmdLine.tests.cpp:: PASSED: CHECK( config.shouldDebugBreak == false ) with expansion: false == false CmdLine.tests.cpp:: PASSED: CHECK( config.abortAfter == -1 ) with expansion: -1 == -1 CmdLine.tests.cpp:: PASSED: CHECK( config.noThrow == false ) with expansion: false == false CmdLine.tests.cpp:: PASSED: CHECK( config.reporterSpecifications.empty() ) with expansion: true CmdLine.tests.cpp:: PASSED: CHECK_FALSE( cfg.hasTestFilters() ) with expansion: !false CmdLine.tests.cpp:: PASSED: CHECK( cfg.getReporterSpecs().size() == 1 ) with expansion: 1 == 1 CmdLine.tests.cpp:: PASSED: CHECK( cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } ) with expansion: {?} == {?} CmdLine.tests.cpp:: PASSED: CHECK( cfg.getProcessedReporterSpecs().size() == 1 ) with expansion: 1 == 1 CmdLine.tests.cpp:: PASSED: CHECK( cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } ) with expansion: {?} == {?} ------------------------------------------------------------------------------- Process can be configured on command line test lists Specify one test case using ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.hasTestFilters() ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false ) with expansion: false == false CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line test lists Specify one test case exclusion using exclude: ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.hasTestFilters() ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) == false ) with expansion: false == false CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line test lists Specify one test case exclusion using ~ ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.hasTestFilters() ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) == false ) with expansion: false == false CmdLine.tests.cpp:: PASSED: REQUIRE( cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line reporter -r/console ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} with message: result.errorMessage() := "" CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } ) with expansion: { {?} } == { {?} } with message: result.errorMessage() := "" ------------------------------------------------------------------------------- Process can be configured on command line reporter -r/xml ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} with message: result.errorMessage() := "" CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } ) with expansion: { {?} } == { {?} } with message: result.errorMessage() := "" ------------------------------------------------------------------------------- Process can be configured on command line reporter --reporter/junit ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} with message: result.errorMessage() := "" CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } ) with expansion: { {?} } == { {?} } with message: result.errorMessage() := "" ------------------------------------------------------------------------------- Process can be configured on command line reporter must match one of the available ones ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( !result ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Unrecognized reporter") ) with expansion: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter" ------------------------------------------------------------------------------- Process can be configured on command line reporter With output file ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} with message: result.errorMessage() := "" CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } ) with expansion: { {?} } == { {?} } with message: result.errorMessage() := "" ------------------------------------------------------------------------------- Process can be configured on command line reporter With Windows-like absolute path as output file ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( result ) with expansion: {?} with message: result.errorMessage() := "" CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } ) with expansion: { {?} } == { {?} } with message: result.errorMessage() := "" ------------------------------------------------------------------------------- Process can be configured on command line reporter Multiple reporters All with output files ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } ) with expansion: { {?}, {?} } == { {?}, {?} } ------------------------------------------------------------------------------- Process can be configured on command line reporter Multiple reporters Mixed output files and default output ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } ) with expansion: { {?}, {?} } == { {?}, {?} } ------------------------------------------------------------------------------- Process can be configured on command line reporter Multiple reporters cannot have multiple reporters with default output ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( !result ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") ) with expansion: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file." ------------------------------------------------------------------------------- Process can be configured on command line debugger -b ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-b"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.shouldDebugBreak == true ) with expansion: true == true ------------------------------------------------------------------------------- Process can be configured on command line debugger --break ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--break"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.shouldDebugBreak ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line abort -a aborts after first failure ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-a"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.abortAfter == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Process can be configured on command line abort -x 2 aborts after two failures ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-x", "2"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.abortAfter == 2 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- Process can be configured on command line abort -x must be numeric ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( !result ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") ) with expansion: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" ) ------------------------------------------------------------------------------- Process can be configured on command line abort wait-for-keypress Accepted options ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.waitForKeypress == std::get<1>(input) ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Process can be configured on command line abort wait-for-keypress Accepted options ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.waitForKeypress == std::get<1>(input) ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Process can be configured on command line abort wait-for-keypress Accepted options ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.waitForKeypress == std::get<1>(input) ) with expansion: 2 == 2 ------------------------------------------------------------------------------- Process can be configured on command line abort wait-for-keypress Accepted options ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.waitForKeypress == std::get<1>(input) ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Process can be configured on command line abort wait-for-keypress invalid options are reported ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( !result ) with expansion: true CmdLine.tests.cpp:: PASSED: REQUIRE_THAT( result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") ) with expansion: "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" ) ------------------------------------------------------------------------------- Process can be configured on command line nothrow -e ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-e"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.noThrow ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line nothrow --nothrow ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--nothrow"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.noThrow ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line output filename -o filename ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-o", "filename.ext"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultOutputFilename == "filename.ext" ) with expansion: "filename.ext" == "filename.ext" ------------------------------------------------------------------------------- Process can be configured on command line output filename --out ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--out", "filename.ext"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultOutputFilename == "filename.ext" ) with expansion: "filename.ext" == "filename.ext" ------------------------------------------------------------------------------- Process can be configured on command line combinations Single character flags can be combined ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "-abe"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: CHECK( config.abortAfter == 1 ) with expansion: 1 == 1 CmdLine.tests.cpp:: PASSED: CHECK( config.shouldDebugBreak ) with expansion: true CmdLine.tests.cpp:: PASSED: CHECK( config.noThrow == true ) with expansion: true == true ------------------------------------------------------------------------------- Process can be configured on command line use-colour without option ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Process can be configured on command line use-colour auto ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse( { "test", "--colour-mode", "default" } ) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Process can be configured on command line use-colour yes ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--colour-mode", "ansi"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultColourMode == ColourMode::ANSI ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Process can be configured on command line use-colour no ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({"test", "--colour-mode", "none"}) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.defaultColourMode == ColourMode::None ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Process can be configured on command line use-colour error ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( !result ) with expansion: true CmdLine.tests.cpp:: PASSED: CHECK_THAT( result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) ) with expansion: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of" ------------------------------------------------------------------------------- Process can be configured on command line Benchmark options samples ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--benchmark-samples=200" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkSamples == 200 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Process can be configured on command line Benchmark options resamples ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--benchmark-resamples=20000" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkResamples == 20000 ) with expansion: 20000 (0x) == 20000 (0x) ------------------------------------------------------------------------------- Process can be configured on command line Benchmark options confidence-interval ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkConfidenceInterval == Catch::Approx(0.99) ) with expansion: 0.98999999999999999 == Approx( 0.98999999999999999 ) ------------------------------------------------------------------------------- Process can be configured on command line Benchmark options no-analysis ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--benchmark-no-analysis" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkNoAnalysis ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line Benchmark options warmup-time ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: CHECK( cli.parse({ "test", "--benchmark-warmup-time=10" }) ) with expansion: {?} CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkWarmupTime == 10 ) with expansion: 10 == 10 ------------------------------------------------------------------------------- Product with differing arities - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::tuple_size::value >= 1 ) with expansion: 3 >= 1 ------------------------------------------------------------------------------- Product with differing arities - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::tuple_size::value >= 1 ) with expansion: 2 >= 1 ------------------------------------------------------------------------------- Product with differing arities - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::tuple_size::value >= 1 ) with expansion: 1 >= 1 ------------------------------------------------------------------------------- Random seed generation accepts known methods ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_NOTHROW( Catch::generateRandomSeed(method) ) ------------------------------------------------------------------------------- Random seed generation accepts known methods ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_NOTHROW( Catch::generateRandomSeed(method) ) ------------------------------------------------------------------------------- Random seed generation accepts known methods ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_NOTHROW( Catch::generateRandomSeed(method) ) ------------------------------------------------------------------------------- Random seed generation reports unknown methods ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE_THROWS( Catch::generateRandomSeed(static_cast(77)) ) ------------------------------------------------------------------------------- Range type with sentinel ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK( Catch::Detail::stringify(UsesSentinel{}) == "{ }" ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- Reconstruction should be based on stringification: #914 ------------------------------------------------------------------------------- Decomposition.tests.cpp: ............................................................................... Decomposition.tests.cpp:: FAILED: CHECK( truthy(false) ) with expansion: Hey, its truthy! ------------------------------------------------------------------------------- Regex string matcher ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) ) with expansion: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), Matches( "contains 'abc' as a substring" ) ) with expansion: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), Matches( "this string contains 'abc' as a" ) ) with expansion: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively ------------------------------------------------------------------------------- Registering reporter with '::' in name fails ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THROWS_WITH( registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique() ), "'::' is not allowed in reporter name: 'with::doublecolons'" ) with expansion: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'" ------------------------------------------------------------------------------- Regression test #1 ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( actual, !UnorderedEquals( expected ) ) with expansion: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' } ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream Automake reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: Automake ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream Automake reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: Automake ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream Automake reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: Automake ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream compact reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: compact ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream compact reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: compact ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream compact reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: compact ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream console reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: console ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream console reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: console ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream console reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: console ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JSON reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "" }, "listings": { "tags": [ { "aliases": [ "fakeTag" ], "count": 1 } ]" contains: "fakeTag" with message: Tested reporter: JSON ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JSON reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "" }, "listings": { "reporters": [ { "name": "fake reporter", "description": "fake description" } ]" contains: "fake reporter" with message: Tested reporter: JSON ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JSON reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "" }, "listings": { "tests": [ { "name": "fake test name", "class-name": "", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: JSON ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JUnit reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: " All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: JUnit ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JUnit reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: " Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: JUnit ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream JUnit reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: " All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: JUnit ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream SonarQube reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: " All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: SonarQube ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream SonarQube reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: " Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: SonarQube ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream SonarQube reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: " All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: SonarQube ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TAP reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: TAP ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TAP reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: TAP ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TAP reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: TAP ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TeamCity reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with message: Tested reporter: TeamCity ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TeamCity reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: "Available reporters: fake reporter: fake description " contains: "fake reporter" with message: Tested reporter: TeamCity ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream TeamCity reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: TeamCity ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream XML reporter lists tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) ) with expansion: " 1 fakeTag " contains: "fakeTag" with message: Tested reporter: XML ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream XML reporter lists reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) ) with expansion: " fake reporter fake description " contains: "fake reporter" with message: Tested reporter: XML ------------------------------------------------------------------------------- Reporter's write listings to provided stream ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_FALSE( factories.empty() ) with expansion: !false ------------------------------------------------------------------------------- Reporter's write listings to provided stream XML reporter lists tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: " fake test name [fakeTestTag] fake-file.cpp 123456789 " ( contains: "fake test name" and contains: "fakeTestTag" ) with message: Tested reporter: XML ------------------------------------------------------------------------------- Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: ------------------------------------------------------------------------------- SUCCEED counts as a test pass ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: with message: this is a success ------------------------------------------------------------------------------- SUCCEED does not require an argument ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: ------------------------------------------------------------------------------- Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods Given: No operations precede me ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( before == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods Given: No operations precede me When: We get the count Then: Subsequently values are higher ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( after > before ) with expansion: 1 > 0 ------------------------------------------------------------------------------- Scenario: Do that thing with the thing Given: This stuff exists And given: And some assumption When: I do this Then: it should do this ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( itDoesThis() ) with expansion: true ------------------------------------------------------------------------------- Scenario: Do that thing with the thing Given: This stuff exists And given: And some assumption When: I do this Then: it should do this And: do that ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( itDoesThat() ) with expansion: true ------------------------------------------------------------------------------- Scenario: This is a really long scenario name to see how the list command deals with wrapping 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 ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: with message: boo! ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector When: it is made larger Then: the size and capacity go up ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 BDD.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector When: it is made larger Then: the size and capacity go up And when: it is made smaller again Then: the size goes down but the capacity stays the same ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 BDD.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector When: we reserve more space Then: The capacity is increased but the size remains the same ------------------------------------------------------------------------------- BDD.tests.cpp: ............................................................................... BDD.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 BDD.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 A string sent directly to stdout A string sent directly to stderr A string sent to stderr via clog ------------------------------------------------------------------------------- Sends stuff to stdout and stderr ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... No assertions in test case 'Sends stuff to stdout and stderr' ------------------------------------------------------------------------------- Some simple comparisons between doubles ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.23 ) ) with expansion: 1.22999999999999998 == Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.22 ) ) with expansion: 1.22999999999999998 != Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.24 ) ) with expansion: 1.22999999999999998 != Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: 1.22999999999999998 == Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: 1.22999999999999998 != Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) == 1.23 ) with expansion: Approx( 1.22999999999999998 ) == 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.22 ) with expansion: Approx( 1.22999999999999998 ) != 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.24 ) with expansion: Approx( 1.22999999999999998 ) != 1.23999999999999999 Message from section one ------------------------------------------------------------------------------- Standard output from all sections is reported one ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... No assertions in section 'one' Message from section two ------------------------------------------------------------------------------- Standard output from all sections is reported two ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... No assertions in section 'two' ------------------------------------------------------------------------------- StartsWith string matcher ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) ) with expansion: "this string contains 'abc' as a substring" starts with: "This String" Matchers.tests.cpp:: FAILED: CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" starts with: "string" (case insensitive) ------------------------------------------------------------------------------- Static arrays are convertible to string Single item ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify(singular) == "{ 1 }" ) with expansion: "{ 1 }" == "{ 1 }" ------------------------------------------------------------------------------- Static arrays are convertible to string Multiple ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" ) with expansion: "{ 3, 2, 1 }" == "{ 3, 2, 1 }" ------------------------------------------------------------------------------- Static arrays are convertible to string Non-trivial inner items ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" ) with expansion: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" == "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" ------------------------------------------------------------------------------- String matchers ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string" ) ) with expansion: "this string contains 'abc' as a substring" contains: "string" Matchers.tests.cpp:: PASSED: REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" contains: "string" (case insensitive) Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "abc" ) ) with expansion: "this string contains 'abc' as a substring" contains: "abc" Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" contains: "abc" (case insensitive) Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), StartsWith( "this" ) ) with expansion: "this string contains 'abc' as a substring" starts with: "this" Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" starts with: "this" (case insensitive) Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) ) with expansion: "this string contains 'abc' as a substring" ends with: "substring" Matchers.tests.cpp:: PASSED: CHECK_THAT( testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) ) with expansion: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive) ------------------------------------------------------------------------------- StringRef Empty string ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( empty.empty() ) with expansion: true String.tests.cpp:: PASSED: REQUIRE( empty.size() == 0 ) with expansion: 0 == 0 String.tests.cpp:: PASSED: REQUIRE( std::strcmp( empty.data(), "" ) == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- StringRef From string literal ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( s.empty() == false ) with expansion: false == false String.tests.cpp:: PASSED: REQUIRE( s.size() == 5 ) with expansion: 5 == 5 String.tests.cpp:: PASSED: REQUIRE( std::strcmp( rawChars, "hello" ) == 0 ) with expansion: 0 == 0 String.tests.cpp:: PASSED: REQUIRE( s.data() == rawChars ) with expansion: "hello" == "hello" ------------------------------------------------------------------------------- StringRef From sub-string ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( original == "original" ) String.tests.cpp:: PASSED: REQUIRE_NOTHROW( original.data() ) ------------------------------------------------------------------------------- StringRef Copy construction is shallow ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( original.begin() == copy.begin() ) with expansion: "original string" == "original string" ------------------------------------------------------------------------------- StringRef Copy assignment is shallow ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( original.begin() == copy.begin() ) with expansion: "original string" == "original string" ------------------------------------------------------------------------------- StringRef Substrings zero-based substring ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( ss.empty() == false ) with expansion: false == false String.tests.cpp:: PASSED: REQUIRE( ss.size() == 5 ) with expansion: 5 == 5 String.tests.cpp:: PASSED: REQUIRE( std::strncmp( ss.data(), "hello", 5 ) == 0 ) with expansion: 0 == 0 String.tests.cpp:: PASSED: REQUIRE( ss == "hello" ) with expansion: hello == "hello" ------------------------------------------------------------------------------- StringRef Substrings non-zero-based substring ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( ss.size() == 6 ) with expansion: 6 == 6 String.tests.cpp:: PASSED: REQUIRE( std::strcmp( ss.data(), "world!" ) == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- StringRef Substrings Pointer values of full refs should match ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( s.data() == s2.data() ) with expansion: "hello world!" == "hello world!" ------------------------------------------------------------------------------- StringRef Substrings Pointer values of substring refs should also match ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( s.data() == ss.data() ) with expansion: "hello world!" == "hello world!" ------------------------------------------------------------------------------- StringRef Substrings Past the end substring ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( s.substr(s.size() + 1, 123).empty() ) with expansion: true ------------------------------------------------------------------------------- StringRef Substrings Substring off the end are trimmed ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( std::strcmp(ss.data(), "world!") == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- StringRef Substrings substring start after the end is empty ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( s.substr(1'000'000, 1).empty() ) with expansion: true ------------------------------------------------------------------------------- StringRef Comparisons are deep ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: CHECK( reinterpret_cast(buffer1) != reinterpret_cast(buffer2) ) with expansion: "Hello" != "Hello" String.tests.cpp:: PASSED: REQUIRE( left == right ) with expansion: Hello == Hello String.tests.cpp:: PASSED: REQUIRE( left != left.substr(0, 3) ) with expansion: Hello != Hel ------------------------------------------------------------------------------- StringRef from std::string implicitly constructed ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( sr == "a standard string" ) with expansion: a standard string == "a standard string" String.tests.cpp:: PASSED: REQUIRE( sr.size() == stdStr.size() ) with expansion: 17 == 17 ------------------------------------------------------------------------------- StringRef from std::string explicitly constructed ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( sr == "a standard string" ) with expansion: a standard string == "a standard string" String.tests.cpp:: PASSED: REQUIRE( sr.size() == stdStr.size() ) with expansion: 17 == 17 ------------------------------------------------------------------------------- StringRef from std::string assigned ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( sr == "a standard string" ) with expansion: a standard string == "a standard string" String.tests.cpp:: PASSED: REQUIRE( sr.size() == stdStr.size() ) with expansion: 17 == 17 ------------------------------------------------------------------------------- StringRef to std::string explicitly constructed ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( stdStr == "a stringref" ) with expansion: "a stringref" == "a stringref" String.tests.cpp:: PASSED: REQUIRE( stdStr.size() == sr.size() ) with expansion: 11 == 11 ------------------------------------------------------------------------------- StringRef to std::string assigned ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( stdStr == "a stringref" ) with expansion: "a stringref" == "a stringref" String.tests.cpp:: PASSED: REQUIRE( stdStr.size() == sr.size() ) with expansion: 11 == 11 ------------------------------------------------------------------------------- StringRef std::string += StringRef ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( lhs == "some string += the stringref contents" ) with expansion: "some string += the stringref contents" == "some string += the stringref contents" ------------------------------------------------------------------------------- StringRef StringRef + StringRef ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: REQUIRE( together == "abrakadabra" ) with expansion: "abrakadabra" == "abrakadabra" ------------------------------------------------------------------------------- StringRef at compilation time Simple constructors ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: with message: empty.size() == 0 String.tests.cpp:: PASSED: with message: empty.begin() == empty.end() String.tests.cpp:: PASSED: with message: stringref.size() == 3 String.tests.cpp:: PASSED: with message: stringref.data() == abc String.tests.cpp:: PASSED: with message: stringref.begin() == abc String.tests.cpp:: PASSED: with message: stringref.begin() != stringref.end() String.tests.cpp:: PASSED: with message: stringref.substr(10, 0).empty() String.tests.cpp:: PASSED: with message: stringref.substr(2, 1).data() == abc + 2 String.tests.cpp:: PASSED: with message: stringref[1] == 'b' String.tests.cpp:: PASSED: with message: shortened.size() == 2 String.tests.cpp:: PASSED: with message: shortened.data() == abc String.tests.cpp:: PASSED: with message: shortened.begin() != shortened.end() ------------------------------------------------------------------------------- StringRef at compilation time UDL construction ------------------------------------------------------------------------------- String.tests.cpp: ............................................................................... String.tests.cpp:: PASSED: with message: !(sr1.empty()) String.tests.cpp:: PASSED: with message: sr1.size() == 3 String.tests.cpp:: PASSED: with message: sr2.empty() String.tests.cpp:: PASSED: with message: sr2.size() == 0 ------------------------------------------------------------------------------- Stringifying char arrays with statically known sizes - char ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ------------------------------------------------------------------------------- Stringifying char arrays with statically known sizes - signed char ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ------------------------------------------------------------------------------- Stringifying char arrays with statically known sizes - unsigned char ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s ) with expansion: ""abc"" == ""abc"" ------------------------------------------------------------------------------- Stringifying std::chrono::duration helpers ------------------------------------------------------------------------------- ToStringChrono.tests.cpp: ............................................................................... ToStringChrono.tests.cpp:: PASSED: REQUIRE( minute == seconds ) with expansion: 1 m == 60 s ToStringChrono.tests.cpp:: PASSED: REQUIRE( hour != seconds ) with expansion: 1 h != 60 s ToStringChrono.tests.cpp:: PASSED: REQUIRE( micro != milli ) with expansion: 1 us != 1 ms ToStringChrono.tests.cpp:: PASSED: REQUIRE( nano != micro ) with expansion: 1 ns != 1 us ------------------------------------------------------------------------------- Stringifying std::chrono::duration with weird ratios ------------------------------------------------------------------------------- ToStringChrono.tests.cpp: ............................................................................... ToStringChrono.tests.cpp:: PASSED: REQUIRE( half_minute != femto_second ) with expansion: 1 [30/1]s != 1 fs ToStringChrono.tests.cpp:: PASSED: REQUIRE( pico_second != atto_second ) with expansion: 1 ps != 1 as ------------------------------------------------------------------------------- Stringifying std::chrono::time_point ------------------------------------------------------------------------------- ToStringChrono.tests.cpp: ............................................................................... ToStringChrono.tests.cpp:: PASSED: REQUIRE( now != later ) with expansion: {iso8601-timestamp} != {iso8601-timestamp} ------------------------------------------------------------------------------- Tabs and newlines show in output ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: CHECK( s1 == s2 ) with expansion: "if ($b == 10) { $a = 20; }" == "if ($b == 10) { $a = 20; } " ------------------------------------------------------------------------------- Tag alias can be registered against tag patterns The same tag alias can only be registered once ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: CHECK_THAT( what, ContainsSubstring( "[@zzz]" ) ) with expansion: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "[@zzz]" Tag.tests.cpp:: PASSED: CHECK_THAT( what, ContainsSubstring( "file" ) ) with expansion: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "file" Tag.tests.cpp:: PASSED: CHECK_THAT( what, ContainsSubstring( "2" ) ) with expansion: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "2" Tag.tests.cpp:: PASSED: CHECK_THAT( what, ContainsSubstring( "10" ) ) with expansion: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "10" ------------------------------------------------------------------------------- Tag alias can be registered against tag patterns Tag aliases must be of the form [@name] ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: CHECK_THROWS( registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) ) Tag.tests.cpp:: PASSED: CHECK_THROWS( registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) ) Tag.tests.cpp:: PASSED: CHECK_THROWS( registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) ) Tag.tests.cpp:: PASSED: CHECK_THROWS( registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) ) ------------------------------------------------------------------------------- Tags with spaces and non-alphanumerical characters are accepted ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: REQUIRE( testCase.tags.size() == 2 ) with expansion: 2 == 2 Tag.tests.cpp:: PASSED: REQUIRE_THAT( testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) ) with expansion: { {?}, {?} } ( Contains: {?} and Contains: {?} ) ------------------------------------------------------------------------------- Template test case method with test types specified inside std::tuple - MyTypes - 0 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Template test case method with test types specified inside std::tuple - MyTypes - 1 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Template test case method with test types specified inside std::tuple - MyTypes - 2 ------------------------------------------------------------------------------- Class.tests.cpp: ............................................................................... Class.tests.cpp:: PASSED: REQUIRE( Template_Fixture::m_a == 1 ) with expansion: 1.0 == 1 ------------------------------------------------------------------------------- Template test case with test types specified inside non-copyable and non- movable std::tuple - NonCopyableAndNonMovableTypes - 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_default_constructible::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside non-copyable and non- movable std::tuple - NonCopyableAndNonMovableTypes - 1 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_default_constructible::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_trivially_copyable::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_trivially_copyable::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside std::tuple - MyTypes - 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_arithmetic::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside std::tuple - MyTypes - 1 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_arithmetic::value ) with expansion: true ------------------------------------------------------------------------------- Template test case with test types specified inside std::tuple - MyTypes - 2 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( std::is_arithmetic::value ) with expansion: true ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - float reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - int reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::string reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTest: vectors can be sized and resized - std::tuple reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 2 * V ) with expansion: 12 == 12 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 12 >= 12 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 12 >= 12 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - (std::tuple), 6 reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 6 == 6 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 6 >= 6 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 2 * V ) with expansion: 8 == 8 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 8 >= 8 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 8 >= 8 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - float,4 reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 4 == 4 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 4 >= 4 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 2 * V ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - int,5 reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 2 * V ) with expansion: 30 == 30 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 30 >= 30 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 2 * V ) with expansion: 30 >= 30 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- TemplateTestSig: vectors can be sized and resized - std::string,15 reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == V ) with expansion: 15 == 15 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= V ) with expansion: 15 >= 15 ------------------------------------------------------------------------------- Test case with identical tags keeps just one ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: REQUIRE( testCase.tags.size() == 1 ) with expansion: 1 == 1 Tag.tests.cpp:: PASSED: REQUIRE( testCase.tags[0] == Tag( "tag1" ) ) with expansion: {?} == {?} ------------------------------------------------------------------------------- Test case with one argument ------------------------------------------------------------------------------- VariadicMacros.tests.cpp: ............................................................................... VariadicMacros.tests.cpp:: PASSED: with message: no assertions ------------------------------------------------------------------------------- Test enum bit values ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( 0x == bit30and31 ) with expansion: 3221225472 (0x) == 3221225472 ------------------------------------------------------------------------------- Test with special, characters "in name ------------------------------------------------------------------------------- CmdLine.tests.cpp: ............................................................................... CmdLine.tests.cpp:: PASSED: ------------------------------------------------------------------------------- Testing checked-if ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECKED_IF( true ) Misc.tests.cpp:: PASSED: Misc.tests.cpp:: FAILED - but was ok: CHECKED_IF( false ) Misc.tests.cpp:: PASSED: CHECKED_ELSE( true ) Misc.tests.cpp:: FAILED - but was ok: CHECKED_ELSE( false ) Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- Testing checked-if 2 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECKED_IF( true ) Misc.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Testing checked-if 3 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED - but was ok: CHECKED_ELSE( false ) Misc.tests.cpp:: FAILED: ------------------------------------------------------------------------------- Testing checked-if 4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECKED_ELSE( true ) Misc.tests.cpp:: FAILED: {Unknown expression after the reported line} due to unexpected exception with message: Uncaught exception should fail! ------------------------------------------------------------------------------- Testing checked-if 5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED - but was ok: CHECKED_ELSE( false ) Misc.tests.cpp:: FAILED: {Unknown expression after the reported line} due to unexpected exception with message: Uncaught exception should fail! ------------------------------------------------------------------------------- The NO_FAIL macro reports a failure but does not fail the test ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED - but was ok: CHECK_NOFAIL( 1 == 2 ) No assertions in test case 'The NO_FAIL macro reports a failure but does not fail the test' ------------------------------------------------------------------------------- The default listing implementation write to provided stream Listing tags ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring("[fakeTag]"s) ) with expansion: "All available tags: 1 [fakeTag] 1 tag " contains: "[fakeTag]" ------------------------------------------------------------------------------- The default listing implementation write to provided stream Listing reporters ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) ) with expansion: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" ) ------------------------------------------------------------------------------- The default listing implementation write to provided stream Listing tests ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) ) with expansion: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) ------------------------------------------------------------------------------- The default listing implementation write to provided stream Listing listeners ------------------------------------------------------------------------------- Reporters.tests.cpp: ............................................................................... Reporters.tests.cpp:: PASSED: REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) ) with expansion: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" ) ------------------------------------------------------------------------------- This test 'should' fail but doesn't ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: with message: oops! ------------------------------------------------------------------------------- Thrown string literals are translated ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: For some reason someone is throwing a string literal! ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker successfully close one section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isSuccessfullyCompleted() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isSuccessfullyCompleted() ) with expansion: true ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker fail one section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isSuccessfullyCompleted() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isSuccessfullyCompleted() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker fail one section re-enter after failed section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1b.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isSuccessfullyCompleted() ) with expansion: true ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker fail one section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isSuccessfullyCompleted() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isSuccessfullyCompleted() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker fail one section re-enter after failed section and find next section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1b.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( s2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isSuccessfullyCompleted() ) with expansion: true ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker successfully close one section, then find another ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s2.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker successfully close one section, then find another Re-enter - skips S1 and enters S2 ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1b.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( s2b.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker successfully close one section, then find another Re-enter - skips S1 and enters S2 Successfully close S2 ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s2b.isSuccessfullyCompleted() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isSuccessfullyCompleted() ) with expansion: true ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker successfully close one section, then find another ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s2.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker successfully close one section, then find another Re-enter - skips S1 and enters S2 ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1b.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( s2b.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() == false ) with expansion: false == false ------------------------------------------------------------------------------- Tracker successfully close one section, then find another Re-enter - skips S1 and enters S2 fail S2 ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( ctx.completedCycle() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s2b.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s2b.isSuccessfullyCompleted() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase2.isSuccessfullyCompleted() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase3.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1c.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( s2c.isOpen() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase3.isSuccessfullyCompleted() ) with expansion: true ------------------------------------------------------------------------------- Tracker ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isOpen() ) with expansion: true ------------------------------------------------------------------------------- Tracker open a nested section ------------------------------------------------------------------------------- PartTracker.tests.cpp: ............................................................................... PartTracker.tests.cpp:: PASSED: REQUIRE( s2.isOpen() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s2.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( s1.isComplete() ) with expansion: true PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() == false ) with expansion: false == false PartTracker.tests.cpp:: PASSED: REQUIRE( testCase.isComplete() ) with expansion: true ------------------------------------------------------------------------------- Trim strings ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: REQUIRE( trim(std::string(no_whitespace)) == no_whitespace ) with expansion: "There is no extra whitespace here" == "There is no extra whitespace here" StringManip.tests.cpp:: PASSED: REQUIRE( trim(std::string(leading_whitespace)) == no_whitespace ) with expansion: "There is no extra whitespace here" == "There is no extra whitespace here" StringManip.tests.cpp:: PASSED: REQUIRE( trim(std::string(trailing_whitespace)) == no_whitespace ) with expansion: "There is no extra whitespace here" == "There is no extra whitespace here" StringManip.tests.cpp:: PASSED: REQUIRE( trim(std::string(whitespace_at_both_ends)) == no_whitespace ) with expansion: "There is no extra whitespace here" == "There is no extra whitespace here" StringManip.tests.cpp:: PASSED: REQUIRE( trim(StringRef(no_whitespace)) == StringRef(no_whitespace) ) with expansion: There is no extra whitespace here == There is no extra whitespace here StringManip.tests.cpp:: PASSED: REQUIRE( trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) ) with expansion: There is no extra whitespace here == There is no extra whitespace here StringManip.tests.cpp:: PASSED: REQUIRE( trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) ) with expansion: There is no extra whitespace here == There is no extra whitespace here StringManip.tests.cpp:: PASSED: REQUIRE( trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) ) with expansion: There is no extra whitespace here == There is no extra whitespace here ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Container conversions Two equal containers of different container types ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, RangeEquals( c_array ) ) with expansion: { 1, 2, 3 } elements are { 1, 2, 3 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, UnorderedRangeEquals( c_array ) ) with expansion: { 1, 2, 3 } unordered elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Container conversions Two equal containers of different container types (differ in array N) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_3, !RangeEquals( array_int_4 ) ) with expansion: { 1, 2, 3 } not elements are { 1, 2, 3, 4 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_3, !UnorderedRangeEquals( array_int_4 ) ) with expansion: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Container conversions Two equal containers of different container types and value types ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, RangeEquals( vector_char_a ) ) with expansion: { 1, 2, 3 } elements are { 1, 2, 3 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, UnorderedRangeEquals( vector_char_a ) ) with expansion: { 1, 2, 3 } unordered elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Container conversions Two equal containers, one random access, one not ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: with message: ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a ) MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, RangeEquals( list_char_a ) ) with expansion: { 1, 2, 3 } elements are { 1, 2, 3 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_int_a, UnorderedRangeEquals( list_char_a ) ) with expansion: { 1, 2, 3 } unordered elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Value type Two equal containers of different value types ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_int_a, RangeEquals( vector_char_a ) ) with expansion: { 1, 2, 3 } elements are { 1, 2, 3 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_int_a, UnorderedRangeEquals( vector_char_a ) ) with expansion: { 1, 2, 3 } unordered elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Value type Two non-equal containers of different value types ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_int_a, !RangeEquals( vector_char_b ) ) with expansion: { 1, 2, 3 } not elements are { 1, 2, 2 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_int_a, !UnorderedRangeEquals( vector_char_b ) ) with expansion: { 1, 2, 3 } not unordered elements are { 1, 2, 2 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Ranges with begin that needs ADL ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( a, !RangeEquals( b ) ) with expansion: { 1, 2, 3 } not elements are { 3, 2, 1 } MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( a, UnorderedRangeEquals( b ) ) with expansion: { 1, 2, 3 } unordered elements are { 3, 2, 1 } ------------------------------------------------------------------------------- Type conversions of RangeEquals and similar Custom predicate Two equal non-empty containers (close enough) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, RangeEquals( array_a_plus_1, close_enough ) ) with expansion: { 1, 2, 3 } elements are { 2, 3, 4 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) ) with expansion: { 1, 2, 3 } unordered elements are { 2, 3, 4 } ------------------------------------------------------------------------------- Unexpected exceptions can be translated ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: 3.14000000000000012 ------------------------------------------------------------------------------- Upcasting special member functions Move constructor ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( bptr->i == 3 ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Upcasting special member functions move assignment ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( bptr->i == 3 ) with expansion: 3 == 3 ------------------------------------------------------------------------------- Usage of AllMatch range matcher Basic usage ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AllMatch(SizeIs(5)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AllMatch(Contains(0) && Contains(1)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 ) ------------------------------------------------------------------------------- Usage of AllMatch range matcher Type requires ADL found begin and end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl, AllMatch( Predicate( []( int elem ) { return elem < 6; } ) ) ) with expansion: { 1, 2, 3, 4, 5 } all match matches undescribed predicate ------------------------------------------------------------------------------- Usage of AllMatch range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, allMatch ) with expansion: { 1, 2, 3, 4, 5 } all match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of AllMatch range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, !allMatch ) with expansion: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of AllTrue range matcher Basic usage All true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AllTrue() ) with expansion: { true, true, true, true, true } contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Basic usage Empty evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AllTrue() ) with expansion: { } contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Basic usage One false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AllTrue() ) with expansion: { true, true, false, true, true } not contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Basic usage All false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AllTrue() ) with expansion: { false, false, false, false, false } not contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Contained type is convertible to bool All true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AllTrue() ) with expansion: { true, true, true, true, true } contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Contained type is convertible to bool One false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AllTrue() ) with expansion: { true, true, false, true, true } not contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Contained type is convertible to bool All false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AllTrue() ) with expansion: { false, false, false, false, false } not contains only true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, AllTrue() ) with expansion: { true, true, true, true, true } contains only true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of AllTrue range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, !AllTrue() ) with expansion: { true, true, false, true, true } not contains only true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of AnyMatch range matcher Basic usage ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AnyMatch(SizeIs(5)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AnyMatch(Contains(0) && Contains(10)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 ) ------------------------------------------------------------------------------- Usage of AnyMatch range matcher Type requires ADL found begin and end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl, AnyMatch( Predicate( []( int elem ) { return elem < 3; } ) ) ) with expansion: { 1, 2, 3, 4, 5 } any match matches undescribed predicate ------------------------------------------------------------------------------- Usage of AnyMatch range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, !anyMatch ) with expansion: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of AnyMatch range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, anyMatch ) with expansion: { 1, 2, 3, 4, 5 } any match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[1] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[2] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Basic usage All true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AnyTrue() ) with expansion: { true, true, true, true, true } contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Basic usage Empty evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AnyTrue() ) with expansion: { } not contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Basic usage One true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AnyTrue() ) with expansion: { false, false, true, false, false } contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Basic usage All false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AnyTrue() ) with expansion: { false, false, false, false, false } not contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Contained type is convertible to bool All true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AnyTrue() ) with expansion: { true, true, true, true, true } contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Contained type is convertible to bool One true evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, AnyTrue() ) with expansion: { false, false, true, false, false } contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Contained type is convertible to bool All false evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !AnyTrue() ) with expansion: { false, false, false, false, false } not contains at least one true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, AnyTrue() ) with expansion: { false, false, false, false, true } contains at least one true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of AnyTrue range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, AnyTrue() ) with expansion: { false, false, true, true, true } contains at least one true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of NoneMatch range matcher Basic usage ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, NoneMatch(SizeIs(6)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !NoneMatch(Contains(0) && Contains(1)) ) with expansion: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 ) ------------------------------------------------------------------------------- Usage of NoneMatch range matcher Type requires ADL found begin and end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl, NoneMatch( Predicate( []( int elem ) { return elem > 6; } ) ) ) with expansion: { 1, 2, 3, 4, 5 } none match matches undescribed predicate ------------------------------------------------------------------------------- Usage of NoneMatch range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, noneMatch ) with expansion: { 1, 2, 3, 4, 5 } none match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of NoneMatch range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, !noneMatch ) with expansion: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[1] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[2] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Basic usage All true evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !NoneTrue() ) with expansion: { true, true, true, true, true } not contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Basic usage Empty evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, NoneTrue() ) with expansion: { } contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Basic usage One true evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !NoneTrue() ) with expansion: { false, false, true, false, false } not contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Basic usage All false evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, NoneTrue() ) with expansion: { false, false, false, false, false } contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Contained type is convertible to bool All true evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !NoneTrue() ) with expansion: { true, true, true, true, true } not contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Contained type is convertible to bool One true evaluates to false ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, !NoneTrue() ) with expansion: { false, false, true, false, false } not contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Contained type is convertible to bool All false evaluates to true ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( data, NoneTrue() ) with expansion: { false, false, false, false, false } contains no true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Shortcircuiting All are read ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, NoneTrue() ) with expansion: { false, false, false, false, false } contains no true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[3] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[4] ) with expansion: true ------------------------------------------------------------------------------- Usage of NoneTrue range matcher Shortcircuiting Short-circuited ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked, !NoneTrue() ) with expansion: { false, false, true, true, true } not contains no true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[3] ) with expansion: !false MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked.m_derefed[4] ) with expansion: !false ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Empty container matches empty container ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( empty_vector, RangeEquals( empty_vector ) ) with expansion: { } elements are { } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Empty container does not match non-empty container ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( empty_vector, !RangeEquals( non_empty_vector ) ) with expansion: { } not elements are { 1 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( non_empty_vector, !RangeEquals( empty_vector ) ) with expansion: { 1 } not elements are { } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Two equal 1-length non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( non_empty_array, RangeEquals( non_empty_array ) ) with expansion: { 1 } elements are { 1 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Two equal-sized, equal, non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_a, RangeEquals( array_a ) ) with expansion: { 1, 2, 3 } elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Two equal-sized, non-equal, non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_a, !RangeEquals( array_b ) ) with expansion: { 1, 2, 3 } not elements are { 2, 2, 3 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_a, !RangeEquals( array_c ) ) with expansion: { 1, 2, 3 } not elements are { 1, 2, 2 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Basic usage Two non-equal-sized, non-empty containers (with same first elements) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, !RangeEquals( vector_b ) ) with expansion: { 1, 2, 3 } not elements are { 1, 2, 3, 4 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Custom predicate Two equal non-empty containers (close enough) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, RangeEquals( vector_a_plus_1, close_enough ) ) with expansion: { 1, 2, 3 } elements are { 2, 3, 4 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Custom predicate Two non-equal non-empty containers (close enough) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, !RangeEquals( vector_b, close_enough ) ) with expansion: { 1, 2, 3 } not elements are { 3, 3, 4 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Ranges that need ADL begin/end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl2 ) ) with expansion: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 } MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) ) with expansion: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 } ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Check short-circuiting behaviour Check short-circuits on failure ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked1, !RangeEquals( arr ) ) with expansion: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 } MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE_FALSE( mocked1.m_derefed[3] ) with expansion: !false ------------------------------------------------------------------------------- Usage of RangeEquals range matcher Check short-circuiting behaviour All elements are checked on success ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( mocked1, RangeEquals( arr ) ) with expansion: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 } MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[0] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[1] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[2] ) with expansion: true MatchersRanges.tests.cpp:: PASSED: REQUIRE( mocked1.m_derefed[3] ) with expansion: true ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Empty container matches empty container ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( empty_vector, UnorderedRangeEquals( empty_vector ) ) with expansion: { } unordered elements are { } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Empty container does not match non-empty container ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( empty_vector, !UnorderedRangeEquals( non_empty_vector ) ) with expansion: { } not unordered elements are { 1 } MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( non_empty_vector, !UnorderedRangeEquals( empty_vector ) ) with expansion: { 1 } not unordered elements are { } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Two equal 1-length non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( non_empty_array, UnorderedRangeEquals( non_empty_array ) ) with expansion: { 1 } unordered elements are { 1 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Two equal-sized, equal, non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_a, UnorderedRangeEquals( array_a ) ) with expansion: { 1, 2, 3 } unordered elements are { 1, 2, 3 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Two equal-sized, non-equal, non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( array_a, !UnorderedRangeEquals( array_b ) ) with expansion: { 1, 2, 3 } not unordered elements are { 2, 2, 3 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Basic usage Two non-equal-sized, non-empty containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b ) ) with expansion: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Custom predicate Two equal non-empty containers (close enough) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) ) with expansion: { 1, 10, 20 } unordered elements are { 11, 21, 2 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Custom predicate Two non-equal non-empty containers (close enough) ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b, close_enough ) ) with expansion: { 1, 10, 21 } not unordered elements are { 11, 21, 3 } ------------------------------------------------------------------------------- Usage of UnorderedRangeEquals range matcher Ranges that need ADL begin/end ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( needs_adl1, UnorderedRangeEquals( needs_adl2 ) ) with expansion: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 } ------------------------------------------------------------------------------- Usage of the SizeIs range matcher Some with stdlib containers ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( empty_vec, SizeIs(0) ) with expansion: { } has size == 0 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( empty_vec, !SizeIs(2) ) with expansion: { } not has size == 2 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( empty_vec, SizeIs(Lt(2)) ) with expansion: { } size matches is less than 2 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( arr, SizeIs(2) ) with expansion: { 0, 0 } has size == 2 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( arr, SizeIs( Lt(3)) ) with expansion: { 0, 0 } size matches is less than 3 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( arr, !SizeIs(!Lt(3)) ) with expansion: { 0, 0 } not size matches not is less than 3 MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( map, SizeIs(3) ) with expansion: { {?}, {?}, {?} } has size == 3 ------------------------------------------------------------------------------- Usage of the SizeIs range matcher Type requires ADL found size free function ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( unrelated::ADL_size{}, SizeIs(12) ) with expansion: {?} has size == 12 ------------------------------------------------------------------------------- Usage of the SizeIs range matcher Type has size member ------------------------------------------------------------------------------- MatchersRanges.tests.cpp: ............................................................................... MatchersRanges.tests.cpp:: PASSED: REQUIRE_THAT( has_size{}, SizeIs(13) ) with expansion: {?} has size == 13 ------------------------------------------------------------------------------- Use a custom approx ------------------------------------------------------------------------------- Approx.tests.cpp: ............................................................................... Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.23 ) ) with expansion: 1.22999999999999998 == Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.22 ) ) with expansion: 1.22999999999999998 == Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.24 ) ) with expansion: 1.22999999999999998 == Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d != approx( 1.25 ) ) with expansion: 1.22999999999999998 != Approx( 1.25 ) Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.23 ) with expansion: Approx( 1.22999999999999998 ) == 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.22 ) with expansion: Approx( 1.22999999999999998 ) == 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.24 ) with expansion: Approx( 1.22999999999999998 ) == 1.23999999999999999 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) != 1.25 ) with expansion: Approx( 1.22999999999999998 ) != 1.25 ------------------------------------------------------------------------------- Variadic macros Section with one argument ------------------------------------------------------------------------------- VariadicMacros.tests.cpp: ............................................................................... VariadicMacros.tests.cpp:: PASSED: with message: no assertions ------------------------------------------------------------------------------- Vector Approx matcher Empty vector is roughly equal to an empty vector ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( empty, Approx( empty ) ) with expansion: { } is approx: { } ------------------------------------------------------------------------------- Vector Approx matcher Vectors with elements A vector is approx equal to itself ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, Approx( v1 ) ) with expansion: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, Approx( { 1., 2., 3. } ) ) with expansion: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } ------------------------------------------------------------------------------- Vector Approx matcher Vectors with elements Different length ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, !Approx( temp ) ) with expansion: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 } ------------------------------------------------------------------------------- Vector Approx matcher Vectors with elements Same length, different elements ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, !Approx( v2 ) ) with expansion: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, Approx( v2 ).margin( 0.5 ) ) with expansion: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, Approx( v2 ).epsilon( 0.5 ) ) with expansion: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) ) with expansion: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } ------------------------------------------------------------------------------- Vector Approx matcher -- failing Empty and non empty vectors are not approx equal ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( empty, Approx( t1 ) ) with expansion: { } is approx: { 1.0, 2.0 } ------------------------------------------------------------------------------- Vector Approx matcher -- failing Just different vectors ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( v1, Approx( v2 ) ) with expansion: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 } ------------------------------------------------------------------------------- Vector matchers Contains (element) ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( v, VectorContains( 1 ) ) with expansion: { 1, 2, 3 } Contains: 1 Matchers.tests.cpp:: PASSED: CHECK_THAT( v, VectorContains( 2 ) ) with expansion: { 1, 2, 3 } Contains: 2 Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, ( VectorContains>( 2 ) ) ) with expansion: { 1, 2, 3 } Contains: 2 ------------------------------------------------------------------------------- Vector matchers Contains (vector) ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Contains( v2 ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Contains( { 1, 2 } ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, ( Contains, CustomAllocator>( v2 ) ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Contains( v2 ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Contains( empty ) ) with expansion: { 1, 2, 3 } Contains: { } Matchers.tests.cpp:: PASSED: CHECK_THAT( empty, Contains( empty ) ) with expansion: { } Contains: { } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, ( Contains, CustomAllocator>( v2 ) ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, Contains( v6 ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2 } ------------------------------------------------------------------------------- Vector matchers Contains (element), composed ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( v, VectorContains( 1 ) && VectorContains( 2 ) ) with expansion: { 1, 2, 3 } ( Contains: 1 and Contains: 2 ) ------------------------------------------------------------------------------- Vector matchers Equals ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Equals( v ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( empty, Equals( empty ) ) with expansion: { } Equals: { } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Equals( { 1, 2, 3 } ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, Equals( v2 ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, ( Equals, CustomAllocator>( v2 ) ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, Equals( v6 ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2, 3 } ------------------------------------------------------------------------------- Vector matchers UnorderedEquals ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: PASSED: CHECK_THAT( v, UnorderedEquals( v ) ) with expansion: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v, UnorderedEquals( { 3, 2, 1 } ) ) with expansion: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 } Matchers.tests.cpp:: PASSED: CHECK_THAT( empty, UnorderedEquals( empty ) ) with expansion: { } UnorderedEquals: { } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( permuted, UnorderedEquals( v ) ) with expansion: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: REQUIRE_THAT( permuted, UnorderedEquals( v ) ) with expansion: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5, ( UnorderedEquals, CustomAllocator>( permuted ) ) ) with expansion: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 } Matchers.tests.cpp:: PASSED: CHECK_THAT( v5_permuted, UnorderedEquals( v5 ) ) with expansion: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } ------------------------------------------------------------------------------- Vector matchers that fail Contains (element) ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( v, VectorContains( -1 ) ) with expansion: { 1, 2, 3 } Contains: -1 Matchers.tests.cpp:: FAILED: CHECK_THAT( empty, VectorContains( 1 ) ) with expansion: { } Contains: 1 ------------------------------------------------------------------------------- Vector matchers that fail Contains (vector) ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( empty, Contains( v ) ) with expansion: { } Contains: { 1, 2, 3 } Matchers.tests.cpp:: FAILED: CHECK_THAT( v, Contains( v2 ) ) with expansion: { 1, 2, 3 } Contains: { 1, 2, 4 } ------------------------------------------------------------------------------- Vector matchers that fail Equals ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( v, Equals( v2 ) ) with expansion: { 1, 2, 3 } Equals: { 1, 2 } Matchers.tests.cpp:: FAILED: CHECK_THAT( v2, Equals( v ) ) with expansion: { 1, 2 } Equals: { 1, 2, 3 } Matchers.tests.cpp:: FAILED: CHECK_THAT( empty, Equals( v ) ) with expansion: { } Equals: { 1, 2, 3 } Matchers.tests.cpp:: FAILED: CHECK_THAT( v, Equals( empty ) ) with expansion: { 1, 2, 3 } Equals: { } ------------------------------------------------------------------------------- Vector matchers that fail UnorderedEquals ------------------------------------------------------------------------------- Matchers.tests.cpp: ............................................................................... Matchers.tests.cpp:: FAILED: CHECK_THAT( v, UnorderedEquals( empty ) ) with expansion: { 1, 2, 3 } UnorderedEquals: { } Matchers.tests.cpp:: FAILED: CHECK_THAT( empty, UnorderedEquals( v ) ) with expansion: { } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp:: FAILED: CHECK_THAT( permuted, UnorderedEquals( v ) ) with expansion: { 1, 3 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp:: FAILED: CHECK_THAT( permuted, UnorderedEquals( v ) ) with expansion: { 3, 1 } UnorderedEquals: { 1, 2, 3 } ------------------------------------------------------------------------------- When checked exceptions are thrown they can be expected or unexpected ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: PASSED: REQUIRE_THROWS_AS( thisThrows(), std::domain_error ) Exception.tests.cpp:: PASSED: REQUIRE_NOTHROW( thisDoesntThrow() ) Exception.tests.cpp:: PASSED: REQUIRE_THROWS( thisThrows() ) ------------------------------------------------------------------------------- When unchecked exceptions are thrown directly they are always failures ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown during a CHECK the test should continue ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: CHECK( thisThrows() == 0 ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown during a REQUIRE the test should abort fail ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: REQUIRE( thisThrows() == 0 ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown from functions they are always failures ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: CHECK( thisThrows() == 0 ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown from sections they are always failures section name ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown, but caught, they do not affect the test ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... No assertions in test case 'When unchecked exceptions are thrown, but caught, they do not affect the test' ------------------------------------------------------------------------------- X/level/0/a ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/0/b ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/1/a ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/1/b ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: ------------------------------------------------------------------------------- XmlEncode normal string ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "normal string" ) == "normal string" ) with expansion: "normal string" == "normal string" ------------------------------------------------------------------------------- XmlEncode empty string ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "" ) == "" ) with expansion: "" == "" ------------------------------------------------------------------------------- XmlEncode string with ampersand ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "smith & jones" ) == "smith & jones" ) with expansion: "smith & jones" == "smith & jones" ------------------------------------------------------------------------------- XmlEncode string with less-than ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "smith < jones" ) == "smith < jones" ) with expansion: "smith < jones" == "smith < jones" ------------------------------------------------------------------------------- XmlEncode string with greater-than ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "smith > jones" ) == "smith > jones" ) with expansion: "smith > jones" == "smith > jones" Xml.tests.cpp:: PASSED: REQUIRE( encode( "smith ]]> jones" ) == "smith ]]> jones" ) with expansion: "smith ]]> jones" == "smith ]]> jones" ------------------------------------------------------------------------------- XmlEncode string with quotes ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( stringWithQuotes ) == stringWithQuotes ) with expansion: "don't "quote" me on that" == "don't "quote" me on that" Xml.tests.cpp:: PASSED: REQUIRE( encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't "quote" me on that" ) with expansion: "don't "quote" me on that" == "don't "quote" me on that" ------------------------------------------------------------------------------- XmlEncode string with control char (1) ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "[\x01]" ) == "[\\x01]" ) with expansion: "[\x01]" == "[\x01]" ------------------------------------------------------------------------------- XmlEncode string with control char (x7F) ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE( encode( "[\x7F]" ) == "[\\x7F]" ) with expansion: "[\x7F]" == "[\x7F]" ------------------------------------------------------------------------------- XmlWriter writes boolean attributes as true/false ------------------------------------------------------------------------------- Xml.tests.cpp: ............................................................................... Xml.tests.cpp:: PASSED: REQUIRE_THAT( stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") ) with expansion: " " ( contains: "attr1="true"" and contains: "attr2="false"" ) ------------------------------------------------------------------------------- a succeeding test can still be skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: PASSED: Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- analyse no analysis ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.mean.point.count() == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.mean.lower_bound.count() == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.mean.upper_bound.count() == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.standard_deviation.point.count() == 0 ) with expansion: 0.0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.standard_deviation.lower_bound.count() == 0 ) with expansion: 0.0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.standard_deviation.upper_bound.count() == 0 ) with expansion: 0.0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.total() == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.low_mild == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.low_severe == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.high_mild == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.high_severe == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outliers.samples_seen == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( analysis.outlier_variance == 0 ) with expansion: 0.0 == 0 ------------------------------------------------------------------------------- array -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( empty ) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( oneValue ) == "{ 42 }" ) with expansion: "{ 42 }" == "{ 42 }" ToStringVector.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" ) with expansion: "{ 42, 250 }" == "{ 42, 250 }" ------------------------------------------------------------------------------- benchmark function call without chronometer ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( model.started == 1 ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.finished == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.started == 1 ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.finished == 1 ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( called == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- benchmark function call with chronometer ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( model.started == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.finished == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.started == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( model.finished == 0 ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: CHECK( called == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- boolean member ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( obj.prop != 0 ) with expansion: 0x != 0 ------------------------------------------------------------------------------- checkedElse ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECKED_ELSE( flag ) with expansion: true Misc.tests.cpp:: PASSED: REQUIRE( testCheckedElse( true ) ) with expansion: true ------------------------------------------------------------------------------- checkedElse, failing ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED - but was ok: CHECKED_ELSE( flag ) with expansion: false Misc.tests.cpp:: FAILED: REQUIRE( testCheckedElse( false ) ) with expansion: false ------------------------------------------------------------------------------- checkedIf ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECKED_IF( flag ) with expansion: true Misc.tests.cpp:: PASSED: REQUIRE( testCheckedIf( true ) ) with expansion: true ------------------------------------------------------------------------------- checkedIf, failing ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED - but was ok: CHECKED_IF( flag ) with expansion: false Misc.tests.cpp:: FAILED: REQUIRE( testCheckedIf( false ) ) with expansion: false ------------------------------------------------------------------------------- classify_outliers none ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 0 == 0 ------------------------------------------------------------------------------- classify_outliers low severe ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 1 == 1 ------------------------------------------------------------------------------- classify_outliers low mild ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 1 == 1 ------------------------------------------------------------------------------- classify_outliers high mild ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 1 == 1 ------------------------------------------------------------------------------- classify_outliers high severe ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 1 == 1 ------------------------------------------------------------------------------- classify_outliers mixed ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.samples_seen == static_cast(x.size()) ) with expansion: 6 == 6 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_severe == los ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.low_mild == lom ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_mild == him ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.high_severe == his ) with expansion: 0 == 0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( o.total() == los + lom + him + his ) with expansion: 2 == 2 ------------------------------------------------------------------------------- comparisons between const int variables ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( unsigned_char_var == 1 ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( unsigned_short_var == 1 ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( unsigned_int_var == 1 ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( unsigned_long_var == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- comparisons between int variables ------------------------------------------------------------------------------- Condition.tests.cpp: ............................................................................... Condition.tests.cpp:: PASSED: REQUIRE( long_var == unsigned_char_var ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( long_var == unsigned_short_var ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( long_var == unsigned_int_var ) with expansion: 1 == 1 Condition.tests.cpp:: PASSED: REQUIRE( long_var == unsigned_long_var ) with expansion: 1 == 1 ------------------------------------------------------------------------------- convertToBits ------------------------------------------------------------------------------- FloatingPoint.tests.cpp: ............................................................................... FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( 0.f ) == 0 ) with expansion: 0 == 0 FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( -0.f ) == ( 1ULL << 31 ) ) with expansion: 2147483648 (0x) == 2147483648 (0x) FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( 0. ) == 0 ) with expansion: 0 == 0 FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( -0. ) == ( 1ULL << 63 ) ) with expansion: 9223372036854775808 (0x) == 9223372036854775808 (0x) FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( std::numeric_limits::denorm_min() ) == 1 ) with expansion: 1 == 1 FloatingPoint.tests.cpp:: PASSED: CHECK( convertToBits( std::numeric_limits::denorm_min() ) == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- dynamic skipping works with generators ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: explicitly with message: skipping because answer = 41 ------------------------------------------------------------------------------- dynamic skipping works with generators ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: PASSED: ------------------------------------------------------------------------------- dynamic skipping works with generators ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: explicitly with message: skipping because answer = 43 ------------------------------------------------------------------------------- empty tags are not allowed ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: REQUIRE_THROWS( Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) ) ------------------------------------------------------------------------------- erfc_inv ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) ) with expansion: -0.09203687623843014 == Approx( -0.09203687623843015 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) ) with expansion: -0.05980291115763361 == Approx( -0.05980291115763361 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) ) with expansion: 1.38590382434967774 == Approx( 1.38590382434967796 ) ------------------------------------------------------------------------------- estimate_clock_resolution ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res.mean.count() == rate ) with expansion: 2000.0 == 2000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res.outliers.total() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- even more nested SECTION tests c d (leaf) ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- even more nested SECTION tests c e (leaf) ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- even more nested SECTION tests f (leaf) ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- failed assertions before SKIP cause test case to fail ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: FAILED: CHECK( 3 == 4 ) Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- failing for some generator values causes entire test case to fail ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: FAILED: ------------------------------------------------------------------------------- failing for some generator values causes entire test case to fail ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- failing for some generator values causes entire test case to fail ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: FAILED: ------------------------------------------------------------------------------- failing for some generator values causes entire test case to fail ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- failing in some unskipped sections causes entire test case to fail skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- failing in some unskipped sections causes entire test case to fail not skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: FAILED: ------------------------------------------------------------------------------- first tag ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... No assertions in test case 'first tag' loose text artifact ------------------------------------------------------------------------------- has printf ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... No assertions in test case 'has printf' ------------------------------------------------------------------------------- is_unary_function ------------------------------------------------------------------------------- Clara.tests.cpp: ............................................................................... Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: Catch::Clara::Detail::is_unary_function::value Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) Clara.tests.cpp:: PASSED: with message: !(Catch::Clara::Detail::is_unary_function::value) ------------------------------------------------------------------------------- just failure ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: Previous info should not be seen ------------------------------------------------------------------------------- just failure after unscoped info ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: explicitly with message: previous unscoped info SHOULD not be seen ------------------------------------------------------------------------------- just info ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... No assertions in test case 'just info' ------------------------------------------------------------------------------- just unscoped info ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... No assertions in test case 'just unscoped info' ------------------------------------------------------------------------------- long long ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( l == std::numeric_limits::max() ) with expansion: 9223372036854775807 (0x) == 9223372036854775807 (0x) ------------------------------------------------------------------------------- looped SECTION tests b is currently: 0 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: CHECK( b > a ) with expansion: 0 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 1 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: CHECK( b > a ) with expansion: 1 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 2 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 2 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 3 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 3 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 4 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 4 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 5 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 5 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 6 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 6 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 7 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 7 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 8 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 8 > 1 ------------------------------------------------------------------------------- looped SECTION tests b is currently: 9 ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( b > a ) with expansion: 9 > 1 ------------------------------------------------------------------------------- looped tests ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[0] (1) is even Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[1] (1) is even Misc.tests.cpp:: PASSED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 0 == 0 with message: Testing if fib[2] (2) is even Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[3] (3) is even Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[4] (5) is even Misc.tests.cpp:: PASSED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 0 == 0 with message: Testing if fib[5] (8) is even Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[6] (13) is even Misc.tests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[7] (21) is even ------------------------------------------------------------------------------- makeStream recognizes %debug stream name ------------------------------------------------------------------------------- Stream.tests.cpp: ............................................................................... Stream.tests.cpp:: PASSED: REQUIRE_NOTHROW( Catch::makeStream( "%debug" ) ) ------------------------------------------------------------------------------- make_unique reimplementation From lvalue copies ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE_FALSE( lval.has_moved ) with expansion: !false ------------------------------------------------------------------------------- make_unique reimplementation From rvalue moves ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( rval.has_moved ) with expansion: true ------------------------------------------------------------------------------- make_unique reimplementation Variadic constructor ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr == std::tuple{1, 2., 3} ) with expansion: {?} == {?} ------------------------------------------------------------------------------- mean ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( m == 19. ) with expansion: 19.0 == 19.0 ------------------------------------------------------------------------------- measure ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( x == 17 ) with expansion: 17 == 17 InternalBenchmark.tests.cpp:: PASSED: CHECK( x == 23 ) with expansion: 23 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( r.elapsed.count() == 42 ) with expansion: 42 == 42 InternalBenchmark.tests.cpp:: PASSED: CHECK( r.result == 23 ) with expansion: 23 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( r.iterations == 1 ) with expansion: 1 == 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( s.elapsed.count() == 69 ) with expansion: 69 == 69 InternalBenchmark.tests.cpp:: PASSED: CHECK( s.result == 17 ) with expansion: 17 == 17 InternalBenchmark.tests.cpp:: PASSED: CHECK( s.iterations == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- mix info, unscoped info and warning ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: warning: info unscoped info and warn may mix Message.tests.cpp:: warning: info unscoped info they are not cleared after warnings No assertions in test case 'mix info, unscoped info and warning' ------------------------------------------------------------------------------- more nested SECTION tests doesn't equal equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: REQUIRE( a == b ) with expansion: 1 == 2 ------------------------------------------------------------------------------- more nested SECTION tests doesn't equal not equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 ------------------------------------------------------------------------------- more nested SECTION tests doesn't equal less than ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a < b ) with expansion: 1 < 2 ------------------------------------------------------------------------------- nested SECTION tests doesn't equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 Misc.tests.cpp:: PASSED: REQUIRE( b != a ) with expansion: 2 != 1 ------------------------------------------------------------------------------- nested SECTION tests doesn't equal not equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 a------------------------------------------------------------------------------- nested sections can be skipped dynamically at runtime A ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... No assertions in section 'A' ! b1------------------------------------------------------------------------------- nested sections can be skipped dynamically at runtime B B1 ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... No assertions in section 'B1' ! ------------------------------------------------------------------------------- nested sections can be skipped dynamically at runtime B B2 ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ! ------------------------------------------------------------------------------- non streamable - with conv. op ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( s == "7" ) with expansion: "7" == "7" ------------------------------------------------------------------------------- non-copyable objects ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: CHECK( ti == typeid(int) ) with expansion: {?} == {?} ------------------------------------------------------------------------------- normal_quantile ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) ) with expansion: 0.13015979861484195 == Approx( 0.13015979861484198 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) ) with expansion: 0.08457408802851875 == Approx( 0.08457408802851875 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) ) with expansion: -1.95996398454005405 == Approx( -1.95996398454005449 ) ------------------------------------------------------------------------------- not allowed ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- not prints unscoped info from previous failures ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: REQUIRE( true ) with message: this MAY be seen only for the FIRST assertion IF info is printed for passing assertions Message.tests.cpp:: PASSED: REQUIRE( true ) with message: this MAY be seen only for the SECOND assertion IF info is printed for passing assertions Message.tests.cpp:: FAILED: REQUIRE( false ) with message: this SHOULD be seen ------------------------------------------------------------------------------- null strings ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( makeString( false ) != static_cast(0) ) with expansion: "valid string" != {null string} Misc.tests.cpp:: PASSED: REQUIRE( makeString( true ) == static_cast(0) ) with expansion: {null string} == {null string} ------------------------------------------------------------------------------- null_ptr ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( ptr.get() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- pair > -> toString ------------------------------------------------------------------------------- ToStringPair.tests.cpp: ............................................................................... ToStringPair.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" ) with expansion: "{ { 42, "Arthur" }, { "Ford", 24 } }" == "{ { 42, "Arthur" }, { "Ford", 24 } }" ------------------------------------------------------------------------------- parseEnums No enums ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "" ), Equals( std::vector{} ) ) with expansion: { } Equals: { } ------------------------------------------------------------------------------- parseEnums One enum value ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector{"Value1"} ) ) with expansion: { Value1 } Equals: { Value1 } ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "Value1" ), Equals( std::vector{"Value1"} ) ) with expansion: { Value1 } Equals: { Value1 } ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "EnumName::Value1" ), Equals(std::vector{"Value1"} ) ) with expansion: { Value1 } Equals: { Value1 } ------------------------------------------------------------------------------- parseEnums Multiple enum values ------------------------------------------------------------------------------- ToString.tests.cpp: ............................................................................... ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector{"Value1", "Value2"} ) ) with expansion: { Value1, Value2 } Equals: { Value1, Value2 } ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector{"Value1", "Value2", "Value3"} ) ) with expansion: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } ToString.tests.cpp:: PASSED: CHECK_THAT( parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector{"Value1", "Value2", "Value3"} ) ) with expansion: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } ------------------------------------------------------------------------------- pointer to class ------------------------------------------------------------------------------- Tricky.tests.cpp: ............................................................................... Tricky.tests.cpp:: PASSED: REQUIRE( p == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- print unscoped info if passing unscoped info is printed ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: PASSED: REQUIRE( true ) with message: this MAY be seen IF info is printed for passing assertions ------------------------------------------------------------------------------- prints unscoped info on failure ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: REQUIRE( false ) with messages: this SHOULD be seen this SHOULD also be seen ------------------------------------------------------------------------------- prints unscoped info only for the first assertion ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: CHECK( false ) with message: this SHOULD be seen only ONCE Message.tests.cpp:: PASSED: CHECK( true ) Message.tests.cpp:: PASSED: CHECK( true ) with message: this MAY also be seen only ONCE IF info is printed for passing assertions Message.tests.cpp:: PASSED: CHECK( true ) ------------------------------------------------------------------------------- random SECTION tests doesn't equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 Misc.tests.cpp:: PASSED: REQUIRE( b != a ) with expansion: 2 != 1 ------------------------------------------------------------------------------- random SECTION tests not equal ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 ------------------------------------------------------------------------------- replaceInPlace replace single char ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, "b", "z") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "azcdefcg" ) with expansion: "azcdefcg" == "azcdefcg" ------------------------------------------------------------------------------- replaceInPlace replace two chars ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, "c", "z") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "abzdefzg" ) with expansion: "abzdefzg" == "abzdefzg" ------------------------------------------------------------------------------- replaceInPlace replace first char ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, "a", "z") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "zbcdefcg" ) with expansion: "zbcdefcg" == "zbcdefcg" ------------------------------------------------------------------------------- replaceInPlace replace last char ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, "g", "z") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "abcdefcz" ) with expansion: "abcdefcz" == "abcdefcz" ------------------------------------------------------------------------------- replaceInPlace replace all chars ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, letters, "replaced") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "replaced" ) with expansion: "replaced" == "replaced" ------------------------------------------------------------------------------- replaceInPlace replace no chars ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK_FALSE( Catch::replaceInPlace(letters, "x", "z") ) with expansion: !false StringManip.tests.cpp:: PASSED: CHECK( letters == letters ) with expansion: "abcdefcg" == "abcdefcg" ------------------------------------------------------------------------------- replaceInPlace no replace in already-replaced string lengthening ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(letters, "c", "cc") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( letters == "abccdefccg" ) with expansion: "abccdefccg" == "abccdefccg" ------------------------------------------------------------------------------- replaceInPlace no replace in already-replaced string shortening ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(s, "--", "-") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( s == "--" ) with expansion: "--" == "--" ------------------------------------------------------------------------------- replaceInPlace escape ' ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK( Catch::replaceInPlace(s, "'", "|'") ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( s == "didn|'t" ) with expansion: "didn|'t" == "didn|'t" ------------------------------------------------------------------------------- request an unknown %-starting stream fails ------------------------------------------------------------------------------- Stream.tests.cpp: ............................................................................... Stream.tests.cpp:: PASSED: REQUIRE_THROWS( Catch::makeStream( "%somestream" ) ) ------------------------------------------------------------------------------- resolution ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res.size() == count ) with expansion: 10 == 10 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) InternalBenchmark.tests.cpp:: PASSED: REQUIRE( res[i] == rate ) with expansion: 1000.0 == 1000 (0x) ------------------------------------------------------------------------------- run_for_at_least, chronometer ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 1 >= 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 2 >= 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 4 >= 2 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 8 >= 4 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 16 >= 8 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 32 >= 16 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 64 >= 32 InternalBenchmark.tests.cpp:: PASSED: CHECK( meter.runs() >= old_runs ) with expansion: 128 >= 64 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.elapsed >= time ) with expansion: 128 ns >= 100 ns InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.result == Timing.iterations + 17 ) with expansion: 145 == 145 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.iterations >= time.count() ) with expansion: 128 >= 100 ------------------------------------------------------------------------------- run_for_at_least, int ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 1 >= 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 2 >= 1 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 4 >= 2 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 8 >= 4 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 16 >= 8 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 32 >= 16 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 64 >= 32 InternalBenchmark.tests.cpp:: PASSED: CHECK( x >= old_x ) with expansion: 128 >= 64 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.elapsed >= time ) with expansion: 128 ns >= 100 ns InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.result == Timing.iterations + 17 ) with expansion: 145 == 145 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( Timing.iterations >= time.count() ) with expansion: 128 >= 100 ------------------------------------------------------------------------------- second tag ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... No assertions in test case 'second tag' ------------------------------------------------------------------------------- sections can be skipped dynamically at runtime not skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: PASSED: ------------------------------------------------------------------------------- sections can be skipped dynamically at runtime skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- sections can be skipped dynamically at runtime also not skipped ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: PASSED: ------------------------------------------------------------------------------- send a single char to INFO ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: FAILED: REQUIRE( false ) with message: 3 ------------------------------------------------------------------------------- sends information to INFO ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: REQUIRE( false ) with messages: hi i := 7 ------------------------------------------------------------------------------- shortened hide tags are split apart ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: REQUIRE_THAT( testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) ) with expansion: { {?}, {?} } ( Contains: {?} and Contains: {?} ) ------------------------------------------------------------------------------- skipped tests can optionally provide a reason ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: explicitly with message: skipping because answer = 43 ------------------------------------------------------------------------------- splitString ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK_THAT( splitStringRef("", ','), Equals(std::vector()) ) with expansion: { } Equals: { } StringManip.tests.cpp:: PASSED: CHECK_THAT( splitStringRef("abc", ','), Equals(std::vector{"abc"}) ) with expansion: { abc } Equals: { abc } StringManip.tests.cpp:: PASSED: CHECK_THAT( splitStringRef("abc,def", ','), Equals(std::vector{"abc", "def"}) ) with expansion: { abc, def } Equals: { abc, def } ------------------------------------------------------------------------------- stacks unscoped info in loops ------------------------------------------------------------------------------- Message.tests.cpp: ............................................................................... Message.tests.cpp:: FAILED: CHECK( false ) with messages: Count 1 to 3... 1 2 3 Message.tests.cpp:: FAILED: CHECK( false ) with messages: Count 4 to 6... 4 5 6 ------------------------------------------------------------------------------- startsWith ------------------------------------------------------------------------------- StringManip.tests.cpp: ............................................................................... StringManip.tests.cpp:: PASSED: CHECK_FALSE( startsWith("", 'c') ) with expansion: !false StringManip.tests.cpp:: PASSED: CHECK( startsWith(std::string("abc"), 'a') ) with expansion: true StringManip.tests.cpp:: PASSED: CHECK( startsWith("def"_catch_sr, 'd') ) with expansion: true ------------------------------------------------------------------------------- std::map is convertible string empty ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( emptyMap ) == "{ }" ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- std::map is convertible string single item ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" ) with expansion: "{ { "one", 1 } }" == "{ { "one", 1 } }" ------------------------------------------------------------------------------- std::map is convertible string several items ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" ) with expansion: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" == "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" ------------------------------------------------------------------------------- std::pair -> toString ------------------------------------------------------------------------------- ToStringPair.tests.cpp: ............................................................................... ToStringPair.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" ) with expansion: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" ------------------------------------------------------------------------------- std::pair -> toString ------------------------------------------------------------------------------- ToStringPair.tests.cpp: ............................................................................... ToStringPair.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" ) with expansion: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" ------------------------------------------------------------------------------- std::set is convertible string empty ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( emptySet ) == "{ }" ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- std::set is convertible string single item ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( set ) == "{ \"one\" }" ) with expansion: "{ "one" }" == "{ "one" }" ------------------------------------------------------------------------------- std::set is convertible string several items ------------------------------------------------------------------------------- ToStringGeneral.tests.cpp: ............................................................................... ToStringGeneral.tests.cpp:: PASSED: REQUIRE( Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" ) with expansion: "{ "abc", "def", "ghi" }" == "{ "abc", "def", "ghi" }" ------------------------------------------------------------------------------- std::vector > -> toString ------------------------------------------------------------------------------- ToStringPair.tests.cpp: ............................................................................... ToStringPair.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" ) with expansion: "{ { "green", 55 } }" == "{ { "green", 55 } }" ------------------------------------------------------------------------------- stdout and stderr streams have %-starting name ------------------------------------------------------------------------------- Stream.tests.cpp: ............................................................................... Stream.tests.cpp:: PASSED: REQUIRE( Catch::makeStream( "%stderr" )->isConsole() ) with expansion: true Stream.tests.cpp:: PASSED: REQUIRE( Catch::makeStream( "%stdout" )->isConsole() ) with expansion: true ------------------------------------------------------------------------------- stringify ranges ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" ) with expansion: "op<<(streamable_range)" == "op<<(streamable_range)" ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" ) with expansion: "stringmaker(streamable_range)" == "stringmaker(streamable_range)" ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" ) with expansion: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }" ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(disabled_range{}) == "{?}" ) with expansion: "{?}" == "{?}" ------------------------------------------------------------------------------- stringify( has_maker ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker" ) with expansion: "StringMaker" == "StringMaker" ------------------------------------------------------------------------------- stringify( has_maker_and_operator ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker" ) with expansion: "StringMaker" == "StringMaker" ------------------------------------------------------------------------------- stringify( has_neither ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(item) == "{?}" ) with expansion: "{?}" == "{?}" ------------------------------------------------------------------------------- stringify( has_operator ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" ) with expansion: "operator<<( has_operator )" == "operator<<( has_operator )" ------------------------------------------------------------------------------- stringify( has_template_operator ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" ) with expansion: "operator<<( has_template_operator )" == "operator<<( has_template_operator )" ------------------------------------------------------------------------------- stringify( vectors ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker }" ) with expansion: "{ StringMaker }" == "{ StringMaker }" ------------------------------------------------------------------------------- stringify( vectors ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker }" ) with expansion: "{ StringMaker }" == "{ StringMaker }" ------------------------------------------------------------------------------- stringify( vectors ) ------------------------------------------------------------------------------- ToStringWhich.tests.cpp: ............................................................................... ToStringWhich.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" ) with expansion: "{ operator<<( has_operator ) }" == "{ operator<<( has_operator ) }" ------------------------------------------------------------------------------- strlen3 ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( data.str.size() == data.len ) with expansion: 3 == 3 ------------------------------------------------------------------------------- strlen3 ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( data.str.size() == data.len ) with expansion: 3 == 3 ------------------------------------------------------------------------------- strlen3 ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( data.str.size() == data.len ) with expansion: 5 == 5 ------------------------------------------------------------------------------- strlen3 ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( data.str.size() == data.len ) with expansion: 4 == 4 ------------------------------------------------------------------------------- tables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( strlen(std::get<0>(data)) == static_cast(std::get<1>(data)) ) with expansion: 5 == 5 ------------------------------------------------------------------------------- tables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( strlen(std::get<0>(data)) == static_cast(std::get<1>(data)) ) with expansion: 6 == 6 ------------------------------------------------------------------------------- tables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( strlen(std::get<0>(data)) == static_cast(std::get<1>(data)) ) with expansion: 5 == 5 ------------------------------------------------------------------------------- tables ------------------------------------------------------------------------------- Generators.tests.cpp: ............................................................................... Generators.tests.cpp:: PASSED: REQUIRE( strlen(std::get<0>(data)) == static_cast(std::get<1>(data)) ) with expansion: 6 == 6 ------------------------------------------------------------------------------- tags with dots in later positions are not parsed as hidden ------------------------------------------------------------------------------- Tag.tests.cpp: ............................................................................... Tag.tests.cpp:: PASSED: REQUIRE( testcase.tags.size() == 1 ) with expansion: 1 == 1 Tag.tests.cpp:: PASSED: REQUIRE( testcase.tags[0].original == "magic.tag"_catch_sr ) with expansion: magic.tag == magic.tag ------------------------------------------------------------------------------- tests can be skipped dynamically at runtime ------------------------------------------------------------------------------- Skip.tests.cpp: ............................................................................... Skip.tests.cpp:: SKIPPED: ------------------------------------------------------------------------------- thrown std::strings are translated ------------------------------------------------------------------------------- Exception.tests.cpp: ............................................................................... Exception.tests.cpp:: FAILED: due to unexpected exception with message: Why would you throw a std::string? ------------------------------------------------------------------------------- toString on const wchar_t const pointer returns the string contents ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( result == "\"wide load\"" ) with expansion: ""wide load"" == ""wide load"" ------------------------------------------------------------------------------- toString on const wchar_t pointer returns the string contents ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( result == "\"wide load\"" ) with expansion: ""wide load"" == ""wide load"" ------------------------------------------------------------------------------- toString on wchar_t const pointer returns the string contents ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( result == "\"wide load\"" ) with expansion: ""wide load"" == ""wide load"" ------------------------------------------------------------------------------- toString on wchar_t returns the string contents ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: CHECK( result == "\"wide load\"" ) with expansion: ""wide load"" == ""wide load"" ------------------------------------------------------------------------------- toString(enum class w/operator<<) ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e0) == "E2/V0" ) with expansion: "E2/V0" == "E2/V0" EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e1) == "E2/V1" ) with expansion: "E2/V1" == "E2/V1" EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e3) == "Unknown enum value 10" ) with expansion: "Unknown enum value 10" == "Unknown enum value 10" ------------------------------------------------------------------------------- toString(enum class) ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e0) == "0" ) with expansion: "0" == "0" EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e1) == "1" ) with expansion: "1" == "1" ------------------------------------------------------------------------------- toString(enum w/operator<<) ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e0) == "E2{0}" ) with expansion: "E2{0}" == "E2{0}" EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e1) == "E2{1}" ) with expansion: "E2{1}" == "E2{1}" ------------------------------------------------------------------------------- toString(enum) ------------------------------------------------------------------------------- EnumToString.tests.cpp: ............................................................................... EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e0) == "0" ) with expansion: "0" == "0" EnumToString.tests.cpp:: PASSED: CHECK( ::Catch::Detail::stringify(e1) == "1" ) with expansion: "1" == "1" ------------------------------------------------------------------------------- tuple<> ------------------------------------------------------------------------------- ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: CHECK( "{ }" == ::Catch::Detail::stringify(type{}) ) with expansion: "{ }" == "{ }" ToStringTuple.tests.cpp:: PASSED: CHECK( "{ }" == ::Catch::Detail::stringify(value) ) with expansion: "{ }" == "{ }" ------------------------------------------------------------------------------- tuple ------------------------------------------------------------------------------- ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: CHECK( "1.5f" == ::Catch::Detail::stringify(float(1.5)) ) with expansion: "1.5f" == "1.5f" ToStringTuple.tests.cpp:: PASSED: CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) ) with expansion: "{ 1.5f, 0 }" == "{ 1.5f, 0 }" ------------------------------------------------------------------------------- tuple ------------------------------------------------------------------------------- ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: CHECK( "{ 0 }" == ::Catch::Detail::stringify(type{0}) ) with expansion: "{ 0 }" == "{ 0 }" ------------------------------------------------------------------------------- tuple ------------------------------------------------------------------------------- ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: CHECK( "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) ) with expansion: "{ "hello", "world" }" == "{ "hello", "world" }" ------------------------------------------------------------------------------- tuple,tuple<>,float> ------------------------------------------------------------------------------- ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: CHECK( "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) ) with expansion: "{ { 42 }, { }, 1.5f }" == "{ { 42 }, { }, 1.5f }" ------------------------------------------------------------------------------- uniform samples ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: CHECK( e.point == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( e.upper_bound == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( e.lower_bound == 23 ) with expansion: 23.0 == 23 InternalBenchmark.tests.cpp:: PASSED: CHECK( e.confidence_interval == 0.95 ) with expansion: 0.94999999999999996 == 0.94999999999999996 ------------------------------------------------------------------------------- uniform_integer_distribution can return the bounds ------------------------------------------------------------------------------- RandomNumberGeneration.tests.cpp: ............................................................................... RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( dist.a() == -10 ) with expansion: -10 == -10 RandomNumberGeneration.tests.cpp:: PASSED: REQUIRE( dist.b() == 10 ) with expansion: 10 == 10 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Default constructed unique_ptr is empty ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE_FALSE( ptr ) with expansion: !{?} UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr.get() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Take ownership of allocation ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr ) with expansion: {?} UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr == 0 ) with expansion: 0 == 0 UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr.get() == naked_ptr ) with expansion: 0x == 0x ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Take ownership of allocation Plain reset deallocates ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE_FALSE( ptr ) with expansion: !{?} UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr.get() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Take ownership of allocation ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr ) with expansion: {?} UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr == 0 ) with expansion: 0 == 0 UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr.get() == naked_ptr ) with expansion: 0x == 0x ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Take ownership of allocation Reset replaces ownership ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr ) with expansion: {?} UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr.get() != 0 ) with expansion: 0x != 0 UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr == 2 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Release releases ownership ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: CHECK_FALSE( ptr ) with expansion: !{?} UniquePtr.tests.cpp:: PASSED: CHECK( ptr.get() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Move constructor ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE_FALSE( ptr1 ) with expansion: !{?} UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr2 ) with expansion: {?} UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality Move assignment ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE_FALSE( ptr2 ) with expansion: !{?} UniquePtr.tests.cpp:: PASSED: REQUIRE( ptr1 ) with expansion: {?} UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr1 == 2 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- unique_ptr reimplementation: basic functionality free swap ------------------------------------------------------------------------------- UniquePtr.tests.cpp: ............................................................................... UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr1 == 2 ) with expansion: 2 == 2 UniquePtr.tests.cpp:: PASSED: REQUIRE( *ptr2 == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- vec> -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(v) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" ) with expansion: "{ { "hello" }, { "world" } }" == "{ { "hello" }, { "world" } }" ------------------------------------------------------------------------------- vector -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(bools) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(bools) == "{ true }" ) with expansion: "{ true }" == "{ true }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(bools) == "{ true, false }" ) with expansion: "{ true, false }" == "{ true, false }" ------------------------------------------------------------------------------- vector -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" ) with expansion: "{ 42 }" == "{ 42 }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" ) with expansion: "{ 42, 250 }" == "{ 42, 250 }" ------------------------------------------------------------------------------- vector -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" ) with expansion: "{ 42 }" == "{ 42 }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" ) with expansion: "{ 42, 250 }" == "{ 42, 250 }" ------------------------------------------------------------------------------- vector -> toString ------------------------------------------------------------------------------- ToStringVector.tests.cpp: ............................................................................... ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ }" ) with expansion: "{ }" == "{ }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\" }" ) with expansion: "{ "hello" }" == "{ "hello" }" ToStringVector.tests.cpp:: PASSED: REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" ) with expansion: "{ "hello", "world" }" == "{ "hello", "world" }" ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized resizing bigger changes size and capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized resizing smaller changes size but not capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized resizing smaller changes size but not capacity We can use the 'swap trick' to reset the capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized reserving bigger changes capacity but not size ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized reserving smaller does not change size or capacity ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 Misc.tests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- warmup ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() ) with expansion: 160000000 (0x) > 100 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( (end - start) > Catch::Benchmark::Detail::warmup_time ) with expansion: 310016000 ns > 100 ms ------------------------------------------------------------------------------- weighted_average_quantile ------------------------------------------------------------------------------- InternalBenchmark.tests.cpp: ............................................................................... InternalBenchmark.tests.cpp:: PASSED: REQUIRE( q1 == 14.5 ) with expansion: 14.5 == 14.5 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( med == 18. ) with expansion: 18.0 == 18.0 InternalBenchmark.tests.cpp:: PASSED: REQUIRE( q3 == 23. ) with expansion: 23.0 == 23.0 ------------------------------------------------------------------------------- xmlentitycheck embedded xml: it should be possible to embed xml characters, such as <, " or &, or even whole documents within an attribute ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: ------------------------------------------------------------------------------- xmlentitycheck encoded chars: these should all be encoded: &&&"""<<<&"<<&" ------------------------------------------------------------------------------- Misc.tests.cpp: ............................................................................... Misc.tests.cpp:: PASSED: =============================================================================== test cases: 418 | 312 passed | 86 failed | 6 skipped | 14 failed as expected assertions: 2259 | 2077 passed | 147 failed | 35 failed as expected