Filters: ~[!nonportable]~[!benchmark]~[approvals]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<exe-name> is a <version> host application.
Run with -? for options

Randomness seeded to: 1

-------------------------------------------------------------------------------
# A test name that starts with a #
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  yay

-------------------------------------------------------------------------------
#1005: Comparing pointer to int and long (NULL can be either on various
       systems)
-------------------------------------------------------------------------------
Decomposition.tests.cpp:<line number>
...............................................................................

Decomposition.tests.cpp:<line number>: PASSED:
  REQUIRE( fptr == 0 )
with expansion:
  0 == 0

Decomposition.tests.cpp:<line number>: PASSED:
  REQUIRE( fptr == 0l )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
#1027
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( y.v == 0 )
with expansion:
  0 == 0

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == y.v )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
#1027: Bitfields can be captured
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( y.v == 0 )
with expansion:
  0 == 0

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == y.v )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
#1147
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 == t2 )
with expansion:
  {?} == {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 != t2 )
with expansion:
  {?} != {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 < t2 )
with expansion:
  {?} < {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 > t2 )
with expansion:
  {?} > {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 <= t2 )
with expansion:
  {?} <= {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 >= t2 )
with expansion:
  {?} >= {?}

-------------------------------------------------------------------------------
#1175 - Hidden Test
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1238
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::memcmp(uarr, "123", sizeof(uarr)) == 0 )
with expansion:
  0 == 0
with messages:
  uarr := "123"
  sarr := "456"

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::memcmp(sarr, "456", sizeof(sarr)) == 0 )
with expansion:
  0 == 0
with messages:
  uarr := "123"
  sarr := "456"

-------------------------------------------------------------------------------
#1245
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1403
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( h1 == h2 )
with expansion:
  [1403 helper] == [1403 helper]

-------------------------------------------------------------------------------
#1455 - INFO and WARN can start with a linebreak
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:

This info message starts with a linebreak

This warning message starts with a linebreak


No assertions in test case '#1455 - INFO and WARN can start with a linebreak'

This would not be caught previously
Nor would this
-------------------------------------------------------------------------------
#1514: stderr/stdout is not captured in tests aborted by an exception
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: FAILED:
explicitly with message:
  1514

-------------------------------------------------------------------------------
#1548
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::is_same<TypeList<int>, TypeList<int>>::value )
with expansion:
  true

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  outside assertions
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with messages:
  answer := 42
  expected exception

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  inside REQUIRE_NOTHROW
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_NOTHROW( thisThrows() )
due to unexpected exception with messages:
  answer := 42
  expected exception

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  inside REQUIRE_THROWS
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( thisThrows() )
with message:
  answer := 42

-------------------------------------------------------------------------------
#809
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( 42 == f )
with expansion:
  42 == {?}

-------------------------------------------------------------------------------
#833
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( a == t )
with expansion:
  3 == 3

Compilation.tests.cpp:<line number>: PASSED:
  CHECK( a == t )
with expansion:
  3 == 3

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( throws_int(true) )

Compilation.tests.cpp:<line number>: PASSED:
  CHECK_THROWS_AS( throws_int(true), int )

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( throws_int(false) )

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "aaa", Catch::EndsWith("aaa") )
with expansion:
  "aaa" ends with: "aaa"

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( templated_tests<int>(3) )
with expansion:
  true

-------------------------------------------------------------------------------
#835 -- errno should not be touched by Catch
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( f() == 0 )
with expansion:
  1 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( errno == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
#872
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( x == 4 )
with expansion:
  {?} == 4
with message:
  dummy := 0

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
'Not' checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( false != false )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( true != true )

===============================================================================
test cases: 19 | 14 passed | 3 failed | 2 failed as expected
assertions: 42 | 35 passed | 4 failed | 3 failed as expected

