~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CatchSelfTest is a host application. Run with -? for options ------------------------------------------------------------------------------- Some simple comparisons between doubles ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( d == Approx( 1.23 ) ) with expansion: 1.23 == Approx( 1.23 ) ApproxTests.cpp:: PASSED: REQUIRE( d != Approx( 1.22 ) ) with expansion: 1.23 != Approx( 1.22 ) ApproxTests.cpp:: PASSED: REQUIRE( d != Approx( 1.24 ) ) with expansion: 1.23 != Approx( 1.24 ) ApproxTests.cpp:: PASSED: REQUIRE( Approx( d ) == 1.23 ) with expansion: Approx( 1.23 ) == 1.23 ApproxTests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.22 ) with expansion: Approx( 1.23 ) != 1.22 ApproxTests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.24 ) with expansion: Approx( 1.23 ) != 1.24 ------------------------------------------------------------------------------- Approximate comparisons with different epsilons ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( d != Approx( 1.231 ) ) with expansion: 1.23 != Approx( 1.231 ) ApproxTests.cpp:: PASSED: REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) ) with expansion: 1.23 == Approx( 1.231 ) ------------------------------------------------------------------------------- Approximate comparisons with floats ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( 1.23f == Approx( 1.23f ) ) with expansion: 1.23 == Approx( 1.2300000191 ) ApproxTests.cpp:: PASSED: REQUIRE( 0.0f == Approx( 0.0f ) ) with expansion: 0 == Approx( 0.0 ) ------------------------------------------------------------------------------- Approximate comparisons with ints ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( 1 == Approx( 1 ) ) with expansion: 1 == Approx( 1.0 ) ApproxTests.cpp:: PASSED: REQUIRE( 0 == Approx( 0 ) ) with expansion: 0 == Approx( 0.0 ) ------------------------------------------------------------------------------- Approximate comparisons with mixed numeric types ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( 1.0f == Approx( 1 ) ) with expansion: 1 == Approx( 1.0 ) ApproxTests.cpp:: PASSED: REQUIRE( 0 == Approx( dZero) ) with expansion: 0 == Approx( 0.0 ) ApproxTests.cpp:: PASSED: REQUIRE( 0 == Approx( dSmall ).epsilon( 0.001 ) ) with expansion: 0 == Approx( 0.00001 ) ApproxTests.cpp:: PASSED: REQUIRE( 1.234f == Approx( dMedium ) ) with expansion: 1.234 == Approx( 1.234 ) ApproxTests.cpp:: PASSED: REQUIRE( dMedium == Approx( 1.234f ) ) with expansion: 1.234 == Approx( 1.2339999676 ) ------------------------------------------------------------------------------- Use a custom approx ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( d == approx( 1.23 ) ) with expansion: 1.23 == Approx( 1.23 ) ApproxTests.cpp:: PASSED: REQUIRE( d == approx( 1.22 ) ) with expansion: 1.23 == Approx( 1.22 ) ApproxTests.cpp:: PASSED: REQUIRE( d == approx( 1.24 ) ) with expansion: 1.23 == Approx( 1.24 ) ApproxTests.cpp:: PASSED: REQUIRE( d != approx( 1.25 ) ) with expansion: 1.23 != Approx( 1.25 ) ApproxTests.cpp:: PASSED: REQUIRE( approx( d ) == 1.23 ) with expansion: Approx( 1.23 ) == 1.23 ApproxTests.cpp:: PASSED: REQUIRE( approx( d ) == 1.22 ) with expansion: Approx( 1.23 ) == 1.22 ApproxTests.cpp:: PASSED: REQUIRE( approx( d ) == 1.24 ) with expansion: Approx( 1.23 ) == 1.24 ApproxTests.cpp:: PASSED: REQUIRE( approx( d ) != 1.25 ) with expansion: Approx( 1.23 ) != 1.25 ------------------------------------------------------------------------------- Approximate PI ------------------------------------------------------------------------------- ApproxTests.cpp: ............................................................................... ApproxTests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) ) with expansion: 3.1428571429 == Approx( 3.141 ) ApproxTests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) ) with expansion: 3.1428571429 != Approx( 3.141 ) ------------------------------------------------------------------------------- A METHOD_AS_TEST_CASE based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... ClassTests.cpp:: PASSED: REQUIRE( s == "hello" ) with expansion: "hello" == "hello" ------------------------------------------------------------------------------- A METHOD_AS_TEST_CASE based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... ClassTests.cpp:: FAILED: REQUIRE( s == "world" ) with expansion: "hello" == "world" ------------------------------------------------------------------------------- A TEST_CASE_METHOD based test run that succeeds ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... ClassTests.cpp:: PASSED: REQUIRE( m_a == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- A TEST_CASE_METHOD based test run that fails ------------------------------------------------------------------------------- ClassTests.cpp: ............................................................................... ClassTests.cpp:: FAILED: REQUIRE( m_a == 2 ) with expansion: 1 == 2 ------------------------------------------------------------------------------- Equality checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven == 7 ) with expansion: 7 == 7 ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one == Approx( 9.1f ) ) with expansion: 9.1 == Approx( 9.1000003815 ) ConditionTests.cpp:: PASSED: REQUIRE( data.double_pi == Approx( 3.1415926535 ) ) with expansion: 3.1415926535 == Approx( 3.1415926535 ) ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello == "hello" ) with expansion: "hello" == "hello" ConditionTests.cpp:: PASSED: REQUIRE( "hello" == data.str_hello ) with expansion: "hello" == "hello" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello.size() == 5 ) with expansion: 5 == 5 ConditionTests.cpp:: PASSED: REQUIRE( x == Approx( 1.3 ) ) with expansion: 1.3 == Approx( 1.3 ) ------------------------------------------------------------------------------- Equality checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: FAILED: CHECK( data.int_seven == 6 ) with expansion: 7 == 6 ConditionTests.cpp:: FAILED: CHECK( data.int_seven == 8 ) with expansion: 7 == 8 ConditionTests.cpp:: FAILED: CHECK( data.int_seven == 0 ) with expansion: 7 == 0 ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: 9.1 == Approx( 9.1099996567 ) ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: 9.1 == Approx( 9.0 ) ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: 9.1 == Approx( 1.0 ) ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: 9.1 == Approx( 0.0 ) ConditionTests.cpp:: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: 3.1415926535 == Approx( 3.1415 ) ConditionTests.cpp:: FAILED: CHECK( data.str_hello == "goodbye" ) with expansion: "hello" == "goodbye" ConditionTests.cpp:: FAILED: CHECK( data.str_hello == "hell" ) with expansion: "hello" == "hell" ConditionTests.cpp:: FAILED: CHECK( data.str_hello == "hello1" ) with expansion: "hello" == "hello1" ConditionTests.cpp:: FAILED: CHECK( data.str_hello.size() == 6 ) with expansion: 5 == 6 ConditionTests.cpp:: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: 1.3 == Approx( 1.301 ) ------------------------------------------------------------------------------- Inequality checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven != 6 ) with expansion: 7 != 6 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven != 8 ) with expansion: 7 != 8 ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.11f ) ) with expansion: 9.1 != Approx( 9.1099996567 ) ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.0f ) ) with expansion: 9.1 != Approx( 9.0 ) ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 1 ) ) with expansion: 9.1 != Approx( 1.0 ) ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 0 ) ) with expansion: 9.1 != Approx( 0.0 ) ConditionTests.cpp:: PASSED: REQUIRE( data.double_pi != Approx( 3.1415 ) ) with expansion: 3.1415926535 != Approx( 3.1415 ) ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello != "goodbye" ) with expansion: "hello" != "goodbye" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello != "hell" ) with expansion: "hello" != "hell" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello != "hello1" ) with expansion: "hello" != "hello1" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello.size() != 6 ) with expansion: 5 != 6 ------------------------------------------------------------------------------- Inequality checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: FAILED: CHECK( data.int_seven != 7 ) with expansion: 7 != 7 ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: 9.1 != Approx( 9.1000003815 ) ConditionTests.cpp:: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: 3.1415926535 != Approx( 3.1415926535 ) ConditionTests.cpp:: FAILED: CHECK( data.str_hello != "hello" ) with expansion: "hello" != "hello" ConditionTests.cpp:: FAILED: CHECK( data.str_hello.size() != 5 ) with expansion: 5 != 5 ------------------------------------------------------------------------------- Ordering comparison checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven < 8 ) with expansion: 7 < 8 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven > 6 ) with expansion: 7 > 6 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven > 0 ) with expansion: 7 > 0 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven > -1 ) with expansion: 7 > -1 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven >= 7 ) with expansion: 7 >= 7 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven >= 6 ) with expansion: 7 >= 6 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven <= 7 ) with expansion: 7 <= 7 ConditionTests.cpp:: PASSED: REQUIRE( data.int_seven <= 8 ) with expansion: 7 <= 8 ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one > 9 ) with expansion: 9.1 > 9 ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 10 ) with expansion: 9.1 < 10 ConditionTests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 9.2 ) with expansion: 9.1 < 9.2 ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello <= "hello" ) with expansion: "hello" <= "hello" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello >= "hello" ) with expansion: "hello" >= "hello" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello < "hellp" ) with expansion: "hello" < "hellp" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello < "zebra" ) with expansion: "hello" < "zebra" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello > "hellm" ) with expansion: "hello" > "hellm" ConditionTests.cpp:: PASSED: REQUIRE( data.str_hello > "a" ) with expansion: "hello" > "a" ------------------------------------------------------------------------------- Ordering comparison checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: FAILED: CHECK( data.int_seven > 7 ) with expansion: 7 > 7 ConditionTests.cpp:: FAILED: CHECK( data.int_seven < 7 ) with expansion: 7 < 7 ConditionTests.cpp:: FAILED: CHECK( data.int_seven > 8 ) with expansion: 7 > 8 ConditionTests.cpp:: FAILED: CHECK( data.int_seven < 6 ) with expansion: 7 < 6 ConditionTests.cpp:: FAILED: CHECK( data.int_seven < 0 ) with expansion: 7 < 0 ConditionTests.cpp:: FAILED: CHECK( data.int_seven < -1 ) with expansion: 7 < -1 ConditionTests.cpp:: FAILED: CHECK( data.int_seven >= 8 ) with expansion: 7 >= 8 ConditionTests.cpp:: FAILED: CHECK( data.int_seven <= 6 ) with expansion: 7 <= 6 ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: 9.1 < 9 ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: 9.1 > 10 ConditionTests.cpp:: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: 9.1 > 9.2 ConditionTests.cpp:: FAILED: CHECK( data.str_hello > "hello" ) with expansion: "hello" > "hello" ConditionTests.cpp:: FAILED: CHECK( data.str_hello < "hello" ) with expansion: "hello" < "hello" ConditionTests.cpp:: FAILED: CHECK( data.str_hello > "hellp" ) with expansion: "hello" > "hellp" ConditionTests.cpp:: FAILED: CHECK( data.str_hello > "z" ) with expansion: "hello" > "z" ConditionTests.cpp:: FAILED: CHECK( data.str_hello < "hellm" ) with expansion: "hello" < "hellm" ConditionTests.cpp:: FAILED: CHECK( data.str_hello < "a" ) with expansion: "hello" < "a" ConditionTests.cpp:: FAILED: CHECK( data.str_hello >= "z" ) with expansion: "hello" >= "z" ConditionTests.cpp:: FAILED: CHECK( data.str_hello <= "a" ) with expansion: "hello" <= "a" ------------------------------------------------------------------------------- Comparisons with int literals don't warn when mixing signed/ unsigned ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( i == 1 ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( ui == 2 ) with expansion: 2 == 2 ConditionTests.cpp:: PASSED: REQUIRE( l == 3 ) with expansion: 3 == 3 ConditionTests.cpp:: PASSED: REQUIRE( ul == 4 ) with expansion: 4 == 4 ConditionTests.cpp:: PASSED: REQUIRE( c == 5 ) with expansion: 5 == 5 ConditionTests.cpp:: PASSED: REQUIRE( uc == 6 ) with expansion: 6 == 6 ConditionTests.cpp:: PASSED: REQUIRE( 1 == i ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( 2 == ui ) with expansion: 2 == 2 ConditionTests.cpp:: PASSED: REQUIRE( 3 == l ) with expansion: 3 == 3 ConditionTests.cpp:: PASSED: REQUIRE( 4 == ul ) with expansion: 4 == 4 ConditionTests.cpp:: PASSED: REQUIRE( 5 == c ) with expansion: 5 == 5 ConditionTests.cpp:: PASSED: REQUIRE( 6 == uc ) with expansion: 6 == 6 ConditionTests.cpp:: PASSED: REQUIRE( (std::numeric_limits::max)() > ul ) with expansion: 0x > 4 ------------------------------------------------------------------------------- comparisons between int variables ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( long_var == unsigned_char_var ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( long_var == unsigned_short_var ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( long_var == unsigned_int_var ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( long_var == unsigned_long_var ) with expansion: 1 == 1 ------------------------------------------------------------------------------- comparisons between const int variables ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( unsigned_char_var == 1 ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( unsigned_short_var == 1 ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( unsigned_int_var == 1 ) with expansion: 1 == 1 ConditionTests.cpp:: PASSED: REQUIRE( unsigned_long_var == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Comparisons between unsigned ints and negative signed ints match c++ standard behaviour ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: CHECK( ( -1 > 2u ) ) with expansion: true ConditionTests.cpp:: PASSED: CHECK( -1 > 2u ) with expansion: -1 > 2 ConditionTests.cpp:: PASSED: CHECK( ( 2u < -1 ) ) with expansion: true ConditionTests.cpp:: PASSED: CHECK( 2u < -1 ) with expansion: 2 < -1 ConditionTests.cpp:: PASSED: CHECK( ( minInt > 2u ) ) with expansion: true ConditionTests.cpp:: PASSED: CHECK( minInt > 2u ) with expansion: -2147483648 > 2 ------------------------------------------------------------------------------- Comparisons between ints where one side is computed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: CHECK( 54 == 6*9 ) with expansion: 54 == 54 ------------------------------------------------------------------------------- Pointers can be compared to null ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( p == __null ) with expansion: __null == 0 ConditionTests.cpp:: PASSED: REQUIRE( p == pNULL ) with expansion: __null == __null ConditionTests.cpp:: PASSED: REQUIRE( p != __null ) with expansion: 0x != 0 ConditionTests.cpp:: PASSED: REQUIRE( cp != __null ) with expansion: 0x != 0 ConditionTests.cpp:: PASSED: REQUIRE( cpc != __null ) with expansion: 0x != 0 ConditionTests.cpp:: PASSED: REQUIRE( returnsNull() == __null ) with expansion: {null string} == 0 ConditionTests.cpp:: PASSED: REQUIRE( returnsConstNull() == __null ) with expansion: {null string} == 0 ConditionTests.cpp:: PASSED: REQUIRE( __null != p ) with expansion: 0 != 0x ------------------------------------------------------------------------------- 'Not' checks that should succeed ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: PASSED: REQUIRE( false == false ) ConditionTests.cpp:: PASSED: REQUIRE( true == true ) ConditionTests.cpp:: PASSED: REQUIRE( !false ) with expansion: true ConditionTests.cpp:: PASSED: REQUIRE_FALSE( false ) ConditionTests.cpp:: PASSED: REQUIRE( !falseValue ) with expansion: true ConditionTests.cpp:: PASSED: REQUIRE_FALSE( falseValue ) with expansion: !false ConditionTests.cpp:: PASSED: REQUIRE( !(1 == 2) ) with expansion: true ConditionTests.cpp:: PASSED: REQUIRE_FALSE( 1 == 2 ) with expansion: !(1 == 2) ------------------------------------------------------------------------------- 'Not' checks that should fail ------------------------------------------------------------------------------- ConditionTests.cpp: ............................................................................... ConditionTests.cpp:: FAILED: CHECK( false != false ) ConditionTests.cpp:: FAILED: CHECK( true != true ) ConditionTests.cpp:: FAILED: CHECK( !true ) with expansion: false ConditionTests.cpp:: FAILED: CHECK_FALSE( true ) ConditionTests.cpp:: FAILED: CHECK( !trueValue ) with expansion: false ConditionTests.cpp:: FAILED: CHECK_FALSE( trueValue ) with expansion: !true ConditionTests.cpp:: FAILED: CHECK( !(1 == 1) ) with expansion: false ConditionTests.cpp:: FAILED: CHECK_FALSE( 1 == 1 ) with expansion: !(1 == 1) ------------------------------------------------------------------------------- When checked exceptions are thrown they can be expected or unexpected ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: PASSED: REQUIRE_THROWS_AS( thisThrows() ) ExceptionTests.cpp:: PASSED: REQUIRE_NOTHROW( thisDoesntThrow() ) ExceptionTests.cpp:: PASSED: REQUIRE_THROWS( thisThrows() ) ------------------------------------------------------------------------------- Expected exceptions that don't throw or unexpected exceptions fail the test ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: CHECK_THROWS_AS( thisThrows() ) due to unexpected exception with message: expected exception ExceptionTests.cpp:: FAILED: CHECK_THROWS_AS( thisDoesntThrow() ) because no exception was thrown where one was expected: ExceptionTests.cpp:: FAILED: CHECK_NOTHROW( thisThrows() ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown directly they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- An unchecked exception reports the line of the last assertion ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: PASSED: CHECK( 1 == 1 ) ExceptionTests.cpp:: FAILED: {Unknown expression after the reported line} due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown from sections they are always failures section name ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: due to unexpected exception with message: unexpected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown from functions they are always failures ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.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 ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: REQUIRE( thisThrows() == 0 ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown during a CHECK the test should abort and fail ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: CHECK( thisThrows() == 0 ) due to unexpected exception with message: expected exception ------------------------------------------------------------------------------- When unchecked exceptions are thrown, but caught, they do not affect the test ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... No assertions in test case 'When unchecked exceptions are thrown, but caught, they do not affect the test' ------------------------------------------------------------------------------- Unexpected custom exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: due to unexpected exception with message: custom exception ------------------------------------------------------------------------------- Custom exceptions can be translated when testing for nothrow ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.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 ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: REQUIRE_THROWS_AS( throwCustom() ) due to unexpected exception with message: custom exception - not std ------------------------------------------------------------------------------- Unexpected exceptions can be translated ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: FAILED: due to unexpected exception with message: 3.14 ------------------------------------------------------------------------------- NotImplemented exception ------------------------------------------------------------------------------- ExceptionTests.cpp: ............................................................................... ExceptionTests.cpp:: PASSED: REQUIRE_THROWS( thisFunctionNotImplemented( 7 ) ) ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 200 == 200 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 202 == 202 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 204 == 204 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 206 == 206 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 208 == 208 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 210 == 210 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 212 == 212 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 2 == 2 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 4 == 4 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 6 == 6 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 8 == 8 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 10 == 10 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 30 == 30 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 40 == 40 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 42 == 42 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generators over two ranges ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( i, 2 ) == i*2 ) with expansion: 72 == 72 GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( multiply( j, 2 ) == j*2 ) with expansion: 214 == 214 ------------------------------------------------------------------------------- Generator over a range of pairs ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( i->first == i->second-1 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- Generator over a range of pairs ------------------------------------------------------------------------------- GeneratorTests.cpp: ............................................................................... GeneratorTests.cpp:: PASSED: CATCH_REQUIRE( i->first == i->second-1 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- INFO and WARN do not abort tests ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: warning: this is a message this is a warning No assertions in test case 'INFO and WARN do not abort tests' ------------------------------------------------------------------------------- SUCCEED counts as a test pass ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: PASSED: with message: this is a success ------------------------------------------------------------------------------- INFO gets logged on failure ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.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 ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: PASSED: CHECK( a == 2 ) with expansion: 2 == 2 with message: this message may be logged later MessageTests.cpp:: FAILED: CHECK( a == 1 ) with expansion: 2 == 1 with message: this message should be logged MessageTests.cpp:: FAILED: CHECK( a == 0 ) with expansion: 2 == 0 with message: and this, but later MessageTests.cpp:: PASSED: CHECK( a == 2 ) with expansion: 2 == 2 with message: but not this ------------------------------------------------------------------------------- FAIL aborts the test ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: explicitly with message: This is a failure ------------------------------------------------------------------------------- FAIL does not require an argument ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: ------------------------------------------------------------------------------- SUCCESS does not require an argument ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: PASSED: ------------------------------------------------------------------------------- Output from all sections is reported one ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: explicitly with message: Message from section one ------------------------------------------------------------------------------- Output from all sections is reported two ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: explicitly with message: Message from section two Message from section one ------------------------------------------------------------------------------- Standard output from all sections is reported one ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... No assertions in section 'one' Message from section two ------------------------------------------------------------------------------- Standard output from all sections is reported two ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... No assertions in section 'two' ------------------------------------------------------------------------------- SCOPED_INFO is reset for each loop ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 0 < 10 with messages: current counter 0 i := 0 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 1 < 10 with messages: current counter 1 i := 1 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 2 < 10 with messages: current counter 2 i := 2 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 3 < 10 with messages: current counter 3 i := 3 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 4 < 10 with messages: current counter 4 i := 4 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 5 < 10 with messages: current counter 5 i := 5 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 6 < 10 with messages: current counter 6 i := 6 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 7 < 10 with messages: current counter 7 i := 7 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 8 < 10 with messages: current counter 8 i := 8 MessageTests.cpp:: PASSED: REQUIRE( i < 10 ) with expansion: 9 < 10 with messages: current counter 9 i := 9 MessageTests.cpp:: FAILED: REQUIRE( i < 10 ) with expansion: 10 < 10 with messages: current counter 10 i := 10 ------------------------------------------------------------------------------- The NO_FAIL macro reports a failure but does not fail the test ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.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' ------------------------------------------------------------------------------- just info ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... No assertions in test case 'just info' ------------------------------------------------------------------------------- just failure ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: explicitly with message: Previous info should not be seen ------------------------------------------------------------------------------- sends information to INFO ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: FAILED: REQUIRE( false ) with messages: hi i := 7 ------------------------------------------------------------------------------- Pointers can be converted to strings ------------------------------------------------------------------------------- MessageTests.cpp: ............................................................................... MessageTests.cpp:: warning: actual address of p: 0x MessageTests.cpp:: warning: toString(p): 0x No assertions in test case 'Pointers can be converted to strings' ------------------------------------------------------------------------------- random SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 MiscTests.cpp:: PASSED: REQUIRE( b != a ) with expansion: 2 != 1 ------------------------------------------------------------------------------- random SECTION tests s2 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 ------------------------------------------------------------------------------- nested SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 MiscTests.cpp:: PASSED: REQUIRE( b != a ) with expansion: 2 != 1 ------------------------------------------------------------------------------- nested SECTION tests s1 s2 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( a != b ) with expansion: 1 != 2 ------------------------------------------------------------------------------- more nested SECTION tests s1 s2 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: REQUIRE( a == b ) with expansion: 1 == 2 ------------------------------------------------------------------------------- even more nested SECTION tests c d (leaf) ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in section 'd (leaf)' ------------------------------------------------------------------------------- even more nested SECTION tests c e (leaf) ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in section 'e (leaf)' ------------------------------------------------------------------------------- even more nested SECTION tests f (leaf) ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in section 'f (leaf)' ------------------------------------------------------------------------------- looped SECTION tests s1 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK( b > a ) with expansion: 0 > 1 ------------------------------------------------------------------------------- looped tests ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[0] (1) is even MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[1] (1) is even MiscTests.cpp:: PASSED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 0 == 0 with message: Testing if fib[2] (2) is even MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[3] (3) is even MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[4] (5) is even MiscTests.cpp:: PASSED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 0 == 0 with message: Testing if fib[5] (8) is even MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[6] (13) is even MiscTests.cpp:: FAILED: CHECK( ( fib[i] % 2 ) == 0 ) with expansion: 1 == 0 with message: Testing if fib[7] (21) is even A string sent directly to stdout A string sent directly to stderr ------------------------------------------------------------------------------- Sends stuff to stdout and stderr ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in test case 'Sends stuff to stdout and stderr' ------------------------------------------------------------------------------- null strings ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( makeString( false ) != static_cast(__null) ) with expansion: "valid string" != {null string} MiscTests.cpp:: PASSED: REQUIRE( makeString( true ) == static_cast(__null) ) with expansion: {null string} == {null string} ------------------------------------------------------------------------------- checkedIf ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: CHECKED_IF( flag ) with expansion: true MiscTests.cpp:: PASSED: REQUIRE( testCheckedIf( true ) ) with expansion: true ------------------------------------------------------------------------------- checkedIf, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECKED_IF( flag ) with expansion: false MiscTests.cpp:: FAILED: REQUIRE( testCheckedIf( false ) ) with expansion: false ------------------------------------------------------------------------------- checkedElse ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: CHECKED_ELSE( flag ) with expansion: true MiscTests.cpp:: PASSED: REQUIRE( testCheckedElse( true ) ) with expansion: true ------------------------------------------------------------------------------- checkedElse, failing ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECKED_ELSE( flag ) with expansion: false MiscTests.cpp:: FAILED: REQUIRE( testCheckedElse( false ) ) with expansion: false ------------------------------------------------------------------------------- xmlentitycheck embedded xml ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in section 'embedded xml' ------------------------------------------------------------------------------- xmlentitycheck encoded chars ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in section 'encoded chars' ------------------------------------------------------------------------------- send a single char to INFO ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: REQUIRE( false ) with message: 3 ------------------------------------------------------------------------------- atomic if ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( x == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- String matchers ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE_THAT( testStringForMatching() Contains( "string" ) ) with expansion: "this string contains 'abc' as a substring" contains: "string" MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() Contains( "abc" ) ) with expansion: "this string contains 'abc' as a substring" contains: "abc" MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() StartsWith( "this" ) ) with expansion: "this string contains 'abc' as a substring" starts with: "this" MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() EndsWith( "substring" ) ) with expansion: "this string contains 'abc' as a substring" ends with: "substring" ------------------------------------------------------------------------------- Contains string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK_THAT( testStringForMatching() Contains( "not there" ) ) with expansion: "this string contains 'abc' as a substring" contains: "not there" ------------------------------------------------------------------------------- StartsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK_THAT( testStringForMatching() StartsWith( "string" ) ) with expansion: "this string contains 'abc' as a substring" starts with: "string" ------------------------------------------------------------------------------- EndsWith string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK_THAT( testStringForMatching() EndsWith( "this" ) ) with expansion: "this string contains 'abc' as a substring" ends with: "this" ------------------------------------------------------------------------------- Equals string matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK_THAT( testStringForMatching() Equals( "something else" ) ) with expansion: "this string contains 'abc' as a substring" equals: "something else" ------------------------------------------------------------------------------- Equals string matcher, with NULL ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE_THAT( "" Equals(__null) ) with expansion: "" equals: "" ------------------------------------------------------------------------------- AllOf matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) ) with expansion: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" ) ------------------------------------------------------------------------------- AnyOf matcher ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) ) with expansion: "this string contains 'abc' as a substring" ( contains: "string" or contains: "not there" ) MiscTests.cpp:: PASSED: CHECK_THAT( testStringForMatching() AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) ) with expansion: "this string contains 'abc' as a substring" ( contains: "not there" or contains: "string" ) ------------------------------------------------------------------------------- Equals ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.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" ------------------------------------------------------------------------------- Factorials are computed ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( Factorial(0) == 1 ) with expansion: 1 == 1 MiscTests.cpp:: PASSED: REQUIRE( Factorial(1) == 1 ) with expansion: 1 == 1 MiscTests.cpp:: PASSED: REQUIRE( Factorial(2) == 2 ) with expansion: 2 == 2 MiscTests.cpp:: PASSED: REQUIRE( Factorial(3) == 6 ) with expansion: 6 == 6 MiscTests.cpp:: PASSED: REQUIRE( Factorial(10) == 3628800 ) with expansion: 0x == 3628800 ------------------------------------------------------------------------------- An empty test with no assertions ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in test case 'An empty test with no assertions' ------------------------------------------------------------------------------- Nice descriptive name ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: warning: This one ran No assertions in test case 'Nice descriptive name' ------------------------------------------------------------------------------- first tag ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in test case 'first tag' ------------------------------------------------------------------------------- second tag ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... No assertions in test case 'second tag' ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized resizing bigger changes size and capacity ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized resizing smaller changes size but not capacity ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 MiscTests.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 ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.capacity() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized reserving bigger changes capacity but not size ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- vectors can be sized and resized ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- vectors can be sized and resized reserving smaller does not change size or capacity ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 MiscTests.cpp:: PASSED: REQUIRE( v.capacity() >= 5 ) with expansion: 5 >= 5 ------------------------------------------------------------------------------- A couple of nested sections followed by a failure Outer Inner ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: with message: that's not flying - that's failing in style ------------------------------------------------------------------------------- A couple of nested sections followed by a failure ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: explicitly with message: to infinity and beyond ------------------------------------------------------------------------------- not allowed ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: PASSED: ------------------------------------------------------------------------------- Tabs and newlines show in output ------------------------------------------------------------------------------- MiscTests.cpp: ............................................................................... MiscTests.cpp:: FAILED: CHECK( s1 == s2 ) with expansion: "if ($b == 10) { $a= 20; }" == "if ($b == 10) { $a = 20; } " ------------------------------------------------------------------------------- Process can be configured on command line default - no arguments ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: CHECK( config.shouldDebugBreak == false ) with expansion: false == false TestMain.cpp:: PASSED: CHECK( config.abortAfter == -1 ) with expansion: -1 == -1 TestMain.cpp:: PASSED: CHECK( config.noThrow == false ) with expansion: false == false TestMain.cpp:: PASSED: CHECK( config.reporterName.empty() ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line test lists 1 test ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( cfg.testSpec().matches( fakeTestCase( "notIncluded" ) ) == false ) with expansion: false == false TestMain.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: ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( cfg.testSpec().matches( fakeTestCase( "test1" ) ) == false ) with expansion: false == false TestMain.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 ~ ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( cfg.testSpec().matches( fakeTestCase( "test1" ) ) == false ) with expansion: false == false TestMain.cpp:: PASSED: REQUIRE( cfg.testSpec().matches( fakeTestCase( "alwaysIncluded" ) ) ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line reporter -r/console ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.reporterName == "console" ) with expansion: "console" == "console" ------------------------------------------------------------------------------- Process can be configured on command line reporter -r/xml ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.reporterName == "xml" ) with expansion: "xml" == "xml" ------------------------------------------------------------------------------- Process can be configured on command line reporter --reporter/junit ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.reporterName == "junit" ) with expansion: "junit" == "junit" ------------------------------------------------------------------------------- Process can be configured on command line debugger -b ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.shouldDebugBreak == true ) with expansion: true == true ------------------------------------------------------------------------------- Process can be configured on command line debugger --break ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.shouldDebugBreak ) with expansion: true ------------------------------------------------------------------------------- Process can be configured on command line abort -a aborts after first failure ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.abortAfter == 1 ) with expansion: 1 == 1 ------------------------------------------------------------------------------- Process can be configured on command line abort -x 2 aborts after two failures ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.abortAfter == 2 ) with expansion: 2 == 2 ------------------------------------------------------------------------------- Process can be configured on command line abort -x must be greater than zero ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ) Contains( "greater than zero" ) ) with expansion: "Value after -x or --abortAfter must be greater than zero - while parsing: (-x, --abortx )" contains: "greater than zero" ------------------------------------------------------------------------------- Process can be configured on command line abort -x must be numeric ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ) Contains( "-x" ) ) with expansion: "Unable to convert oops to destination type - while parsing: (-x, --abortx )" contains: "-x" ------------------------------------------------------------------------------- Process can be configured on command line nothrow -e ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.noThrow == true ) with expansion: true == true ------------------------------------------------------------------------------- Process can be configured on command line nothrow --nothrow ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.noThrow == true ) with expansion: true == true ------------------------------------------------------------------------------- Process can be configured on command line output filename -o filename ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.outputFilename == "filename.ext" ) with expansion: "filename.ext" == "filename.ext" ------------------------------------------------------------------------------- Process can be configured on command line output filename --out ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: REQUIRE( config.outputFilename == "filename.ext" ) with expansion: "filename.ext" == "filename.ext" ------------------------------------------------------------------------------- Process can be configured on command line combinations Single character flags can be combined ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_NOTHROW( parseIntoConfig( argv, config ) ) TestMain.cpp:: PASSED: CHECK( config.abortAfter == 1 ) with expansion: 1 == 1 TestMain.cpp:: PASSED: CHECK( config.shouldDebugBreak ) with expansion: true TestMain.cpp:: PASSED: CHECK( config.noThrow == true ) with expansion: true == true ------------------------------------------------------------------------------- Long strings can be wrapped plain string No wrapping ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 80 ) ).toString() == testString ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 18 ) ).toString() == testString ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped plain string Wrapped once ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 17 ) ).toString() == "one two three\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 16 ) ).toString() == "one two three\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 14 ) ).toString() == "one two three\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 13 ) ).toString() == "one two three\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 12 ) ).toString() == "one two\nthree four" ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped plain string Wrapped twice ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 9 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 8 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 7 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped plain string Wrapped three times ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 6 ) ).toString() == "one\ntwo\nthree\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 5 ) ).toString() == "one\ntwo\nthree\nfour" ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped plain string Short wrap ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( "abcdef", TextAttributes().setWidth( 4 ) ).toString() == "abc-\ndef" ) with expansion: "abc- def" == "abc- def" TestMain.cpp:: PASSED: CHECK( Text( "abcdefg", TextAttributes().setWidth( 4 ) ).toString() == "abc-\ndefg" ) with expansion: "abc- defg" == "abc- defg" TestMain.cpp:: PASSED: CHECK( Text( "abcdefgh", TextAttributes().setWidth( 4 ) ).toString() == "abc-\ndef-\ngh" ) with expansion: "abc- def- gh" == "abc- def- gh" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 4 ) ).toString() == "one\ntwo\nthr-\nee\nfour" ) with expansion: "one two thr- ee four" == "one two thr- ee four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 3 ) ).toString() == "one\ntwo\nth-\nree\nfo-\nur" ) with expansion: "one two th- ree fo- ur" == "one two th- ree fo- ur" ------------------------------------------------------------------------------- Long strings can be wrapped plain string As container ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: REQUIRE( text.size() == 4 ) with expansion: 4 == 4 TestMain.cpp:: PASSED: CHECK( text[0] == "one" ) with expansion: "one" == "one" TestMain.cpp:: PASSED: CHECK( text[1] == "two" ) with expansion: "two" == "two" TestMain.cpp:: PASSED: CHECK( text[2] == "three" ) with expansion: "three" == "three" TestMain.cpp:: PASSED: CHECK( text[3] == "four" ) with expansion: "four" == "four" ------------------------------------------------------------------------------- Long strings can be wrapped plain string Indent first line differently ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( text.toString() == " one two\n three\n four" ) with expansion: " one two three four" == " one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped With newlines No wrapping ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 80 ) ).toString() == testString ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 18 ) ).toString() == testString ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 10 ) ).toString() == testString ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped With newlines Trailing newline ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( "abcdef\n", TextAttributes().setWidth( 10 ) ).toString() == "abcdef\n" ) with expansion: "abcdef " == "abcdef " TestMain.cpp:: PASSED: CHECK( Text( "abcdef", TextAttributes().setWidth( 6 ) ).toString() == "abcdef" ) with expansion: "abcdef" == "abcdef" TestMain.cpp:: PASSED: CHECK( Text( "abcdef\n", TextAttributes().setWidth( 6 ) ).toString() == "abcdef\n" ) with expansion: "abcdef " == "abcdef " ------------------------------------------------------------------------------- Long strings can be wrapped With newlines Wrapped once ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 9 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 8 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 7 ) ).toString() == "one two\nthree\nfour" ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped With newlines Wrapped twice ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 6 ) ).toString() == "one\ntwo\nthree\nfour" ) with expansion: "one two three four" == "one two three four" ------------------------------------------------------------------------------- Long strings can be wrapped With tabs ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( testString, TextAttributes().setWidth( 15 ) ).toString() == "one two three\n four\n five\n six" ) with expansion: "one two three four five six" == "one two three four five six" hello hello ------------------------------------------------------------------------------- Strings can be rendered with colour ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... No assertions in test case 'Strings can be rendered with colour' ------------------------------------------------------------------------------- Text can be formatted using the Text class ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK( Text( "hi there" ).toString() == "hi there" ) with expansion: "hi there" == "hi there" TestMain.cpp:: PASSED: CHECK( Text( "hi there", narrow ).toString() == "hi\nthere" ) with expansion: "hi there" == "hi there" ------------------------------------------------------------------------------- Long text is truncted ------------------------------------------------------------------------------- TestMain.cpp: ............................................................................... TestMain.cpp:: PASSED: CHECK_THAT( t.toString() EndsWith( "... message truncated due to excessive size" ) ) with expansion: "***************************************************************************- ***- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ****************************************************************************- **- ****************************************************************************- **- ************************ ... message truncated due to excessive size ------------------------------------------------------------------------------- Parsing a std::pair ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( (std::pair( 1, 2 )) == aNicePair ) with expansion: std::pair( 1, 2 ) == std::pair( 1, 2 ) ------------------------------------------------------------------------------- Where the is more to the expression after the RHS[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: warning: Uncomment the code in this test to check that it gives a sensible compiler error No assertions in test case 'Where the is more to the expression after the RHS[failing]' ------------------------------------------------------------------------------- Where the LHS is not a simple value[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: warning: Uncomment the code in this test to check that it gives a sensible compiler error No assertions in test case 'Where the LHS is not a simple value[failing]' ------------------------------------------------------------------------------- A failing expression with a non streamable type is still captured[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: FAILED: CHECK( &o1 == &o2 ) with expansion: 0x == 0x TrickyTests.cpp:: FAILED: CHECK( o1 == o2 ) with expansion: {?} == {?} ------------------------------------------------------------------------------- string literals of different sizes can be compared[failing] ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: FAILED: REQUIRE( std::string( "first" ) == "second" ) with expansion: "first" == "second" ------------------------------------------------------------------------------- An expression with side-effects should only be evaluated once ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( i++ == 7 ) with expansion: 7 == 7 TrickyTests.cpp:: PASSED: REQUIRE( i++ == 8 ) with expansion: 8 == 8 ------------------------------------------------------------------------------- Operators at different namespace levels not hijacked by Koenig lookup ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( 0x == o ) with expansion: 0x == {?} ------------------------------------------------------------------------------- Demonstrate that a non-const == is not used ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( t == 1u ) with expansion: {?} == 1 ------------------------------------------------------------------------------- Test enum bit values ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( 0x == bit30and31 ) with expansion: 0x == 3221225472 ------------------------------------------------------------------------------- boolean member ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( obj.prop != __null ) with expansion: 0x != 0 ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated compare to true ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( is_true::value == true ) with expansion: true == true TrickyTests.cpp:: PASSED: REQUIRE( true == is_true::value ) with expansion: true == true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated compare to false ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( is_true::value == false ) with expansion: false == false TrickyTests.cpp:: PASSED: REQUIRE( false == is_true::value ) with expansion: false == false ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated negation ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( !is_true::value ) with expansion: true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated double negation ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( !!is_true::value ) with expansion: true ------------------------------------------------------------------------------- (unimplemented) static bools can be evaluated direct ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( is_true::value ) with expansion: true TrickyTests.cpp:: PASSED: REQUIRE_FALSE( is_true::value ) with expansion: !false ------------------------------------------------------------------------------- Objects that evaluated in boolean contexts can be checked ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: CHECK( True ) with expansion: true TrickyTests.cpp:: PASSED: CHECK( !False ) with expansion: true TrickyTests.cpp:: PASSED: CHECK_FALSE( False ) with expansion: !false ------------------------------------------------------------------------------- Assertions then sections ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- Assertions then sections A section ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- Assertions then sections A section Another section ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- Assertions then sections ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- Assertions then sections A section ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- Assertions then sections A section Another other section ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( Catch::isTrue( true ) ) with expansion: true ------------------------------------------------------------------------------- non streamable - with conv. op ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( s == "7" ) with expansion: "7" == "7" ------------------------------------------------------------------------------- Comparing function pointers ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( a ) with expansion: true TrickyTests.cpp:: PASSED: REQUIRE( a == &foo ) with expansion: 0x == 0x ------------------------------------------------------------------------------- Comparing member function pointers ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: CHECK( m == &S::f ) with expansion: 0x == 0x ------------------------------------------------------------------------------- pointer to class ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( p == 0 ) with expansion: __null == 0 ------------------------------------------------------------------------------- null_ptr ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: REQUIRE( ptr.get() == nullptr ) with expansion: __null == nullptr ------------------------------------------------------------------------------- X/level/0/a ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/0/b ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/1/a ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: ------------------------------------------------------------------------------- X/level/1/b ------------------------------------------------------------------------------- TrickyTests.cpp: ............................................................................... TrickyTests.cpp:: PASSED: ------------------------------------------------------------------------------- Parse test names and tags Empty test spec should have no filters ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Test spec from empty string should have no filters ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches(tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Test spec from just a comma should have no filters ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Test spec from name should have one filter ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Test spec from quoted name should have one filter ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Test spec from name should have one filter ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Wildcard at the start ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( parseTestSpec( "*a" ).matches( tcA ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Wildcard at the end ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( parseTestSpec( "a*" ).matches( tcA ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Wildcard at both ends ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( parseTestSpec( "*a*" ).matches( tcA ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Redundant wildcard at the start ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Redundant wildcard at the end ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Redundant wildcard at both ends ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Wildcard at both ends, redundant at start ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Just wildcard ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Single tag ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Single tag, two matches ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Two tags ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Two tags, spare separated ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags Wildcarded name and tag ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags Single tag exclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags One tag exclusion and one tag inclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags One tag exclusion and one wldcarded name inclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags One tag exclusion, using exclude:, and one wldcarded name inclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags name exclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Parse test names and tags wildcarded name exclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags wildcarded name exclusion with tag inclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags wildcarded name exclusion, using exclude:, with tag inclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags two wildcarded names ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags empty tag ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags empty quoted name ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == false ) with expansion: false == false ------------------------------------------------------------------------------- Parse test names and tags quoted string followed by tag exclusion ------------------------------------------------------------------------------- CmdLineTests.cpp: ............................................................................... CmdLineTests.cpp:: PASSED: CHECK( spec.hasFilters() == true ) with expansion: true == true CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcA ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcB ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcC ) == false ) with expansion: false == false CmdLineTests.cpp:: PASSED: CHECK( spec.matches( tcD ) == true ) with expansion: true == true ------------------------------------------------------------------------------- Anonymous test case 1 ------------------------------------------------------------------------------- VariadicMacrosTests.cpp: ............................................................................... VariadicMacrosTests.cpp:: PASSED: with message: anonymous test case ------------------------------------------------------------------------------- Test case with one argument ------------------------------------------------------------------------------- VariadicMacrosTests.cpp: ............................................................................... VariadicMacrosTests.cpp:: PASSED: with message: no assertions ------------------------------------------------------------------------------- Variadic macros Section with one argument ------------------------------------------------------------------------------- VariadicMacrosTests.cpp: ............................................................................... VariadicMacrosTests.cpp:: PASSED: with message: no assertions ------------------------------------------------------------------------------- Scenario: Do that thing with the thing Given: This stuff exists When: I do this Then: it should do this ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: REQUIRE( itDoesThis() ) with expansion: true ------------------------------------------------------------------------------- Scenario: Do that thing with the thing Given: This stuff exists When: I do this Then: it should do this And: do that ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: REQUIRE( itDoesThat() ) with expansion: true ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.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 ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: REQUIRE( v.size() == 10 ) with expansion: 10 == 10 BDDTests.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 ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: REQUIRE( v.size() == 5 ) with expansion: 5 == 5 BDDTests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 ------------------------------------------------------------------------------- Scenario: Vector resizing affects size and capacity Given: an empty vector ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.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 ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: REQUIRE( v.capacity() >= 10 ) with expansion: 10 >= 10 BDDTests.cpp:: PASSED: REQUIRE( v.size() == 0 ) with expansion: 0 == 0 ------------------------------------------------------------------------------- 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 ------------------------------------------------------------------------------- BDDTests.cpp: ............................................................................... BDDTests.cpp:: PASSED: with message: boo! ------------------------------------------------------------------------------- section tracking ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false ------------------------------------------------------------------------------- section tracking test case with no sections ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.isCompleted() ) with expansion: true ------------------------------------------------------------------------------- section tracking ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false ------------------------------------------------------------------------------- section tracking test case with one section ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.enterSection( section1Name ) ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.isCompleted() ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.enterSection( section1Name ) ) with expansion: !false ------------------------------------------------------------------------------- section tracking ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false ------------------------------------------------------------------------------- section tracking test case with two consecutive sections ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.enterSection( section1Name ) ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.enterSection( section2Name ) ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.enterSection( section1Name ) ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.enterSection( section2Name ) ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.isCompleted() ) with expansion: true ------------------------------------------------------------------------------- section tracking ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false ------------------------------------------------------------------------------- section tracking test case with one section within another ------------------------------------------------------------------------------- SectionTrackerTests.cpp: ............................................................................... SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.enterSection( section1Name ) ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.enterSection( section2Name ) ) with expansion: true SectionTrackerTests.cpp:: PASSED: CHECK_FALSE( testCaseTracker.isCompleted() ) with expansion: !false SectionTrackerTests.cpp:: PASSED: CHECK( testCaseTracker.isCompleted() ) with expansion: true =============================================================================== 124 test cases - 55 failed (715 assertions - 112 failed)