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 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( !true )
with expansion:
  false

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( true )
with expansion:
  !true

Condition.tests.cpp:<line number>: FAILED:
  CHECK( !trueValue )
with expansion:
  false

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( trueValue )
with expansion:
  !true

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

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( 1 == 1 )

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

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( false == false )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( true == true )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !false )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( false )
with expansion:
  !false

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !falseValue )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( falseValue )
with expansion:
  !false

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !(1 == 2) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( 1 == 2 )

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  compare to true
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<true>::value == true )
with expansion:
  true == true

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true == is_true<true>::value )
with expansion:
  true == true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  compare to false
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<false>::value == false )
with expansion:
  false == false

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( false == is_true<false>::value )
with expansion:
  false == false

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  negation
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( !is_true<false>::value )
with expansion:
  true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  double negation
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( !!is_true<true>::value )
with expansion:
  true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  direct
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<true>::value )
with expansion:
  true

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( is_true<false>::value )
with expansion:
  !false

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
A METHOD_AS_TEST_CASE based test run that fails
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( s == "world" )
with expansion:
  "hello" == "world"

-------------------------------------------------------------------------------
A METHOD_AS_TEST_CASE based test run that succeeds
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( s == "hello" )
with expansion:
  "hello" == "hello"

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails -
Template_Foo_2<float, 6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  6 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails -
Template_Foo_2<int, 2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  2 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array
<float, 6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  6 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array
<int, 2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  2 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds -
Template_Foo_2<float,6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  6 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds -
Template_Foo_2<int,2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  2 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::
array<float,6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  6 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::
array<int,2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  2 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1.0 == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1.0f == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0f == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  1 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  3 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  6 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  6 > 0

-------------------------------------------------------------------------------
A TEST_CASE_METHOD based test run that fails
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( m_a == 2 )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
A TEST_CASE_METHOD based test run that succeeds
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
A Template product test case - Foo<float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - Foo<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - std::vector<float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - std::vector<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case with array signature - Bar<float, 42>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  42 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - Bar<int, 9>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  9 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - std::array<float, 42>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  42 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - std::array<int, 9>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  9 > 0

-------------------------------------------------------------------------------
A comparison that uses literals instead of the normal constructor
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.23_a )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.22_a )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( -d == -1.23_a )
with expansion:
  -1.23 == Approx( -1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.2_a .epsilon(.1) )
with expansion:
  1.23 == Approx( 1.2 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.2_a .epsilon(.001) )
with expansion:
  1.23 != Approx( 1.2 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1_a .epsilon(.3) )
with expansion:
  1.23 == Approx( 1.0 )

-------------------------------------------------------------------------------
A couple of nested sections followed by a failure
  Outer
  Inner
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  that's not flying - that's failing in style

-------------------------------------------------------------------------------
A couple of nested sections followed by a failure
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
explicitly with message:
  to infinity and beyond

-------------------------------------------------------------------------------
A failing expression with a non streamable type is still captured
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: FAILED:
  CHECK( &o1 == &o2 )
with expansion:
  0x<hex digits> == 0x<hex digits>

Tricky.tests.cpp:<line number>: FAILED:
  CHECK( o1 == o2 )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
Absolute margin
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 != Approx(100.0) )
with expansion:
  104.0 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 == Approx(100.0).margin(5) )
with expansion:
  104.0 == Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 == Approx(100.0).margin(4) )
with expansion:
  104.0 == Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 != Approx(100.0).margin(3) )
with expansion:
  104.0 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 100.3 != Approx(100.0) )
with expansion:
  100.3 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 100.3 == Approx(100.0).margin(0.5) )
with expansion:
  100.3 == Approx( 100.0 )

-------------------------------------------------------------------------------
An empty test with no assertions
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'An empty test with no assertions'

-------------------------------------------------------------------------------
An expression with side-effects should only be evaluated once
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( i++ == 7 )
with expansion:
  7 == 7

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( i++ == 8 )
with expansion:
  8 == 8

-------------------------------------------------------------------------------
An unchecked exception reports the line of the last assertion
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  CHECK( 1 == 1 )

Exception.tests.cpp:<line number>: FAILED:
  {Unknown expression after the reported line}
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
Anonymous test case 1
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  anonymous test case

-------------------------------------------------------------------------------
Approx setters validate their arguments
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).margin(0) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).margin(1234656) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).margin(-2), std::domain_error )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).epsilon(0) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).epsilon(1) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).epsilon(-0.001), std::domain_error )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).epsilon(1.0001), std::domain_error )

-------------------------------------------------------------------------------
Approx with exactly-representable margin
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.25f == Approx(0.0f).margin(0.25f) )
with expansion:
  0.25f == Approx( 0.0 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.0f == Approx(0.25f).margin(0.25f) )
with expansion:
  0.0f == Approx( 0.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.5f == Approx(0.25f).margin(0.25f) )
with expansion:
  0.5f == Approx( 0.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 245.0f == Approx(245.25f).margin(0.25f) )
with expansion:
  245.0f == Approx( 245.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 245.5f == Approx(245.25f).margin(0.25f) )
with expansion:
  245.5f == Approx( 245.25 )

-------------------------------------------------------------------------------
Approximate PI
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) )
with expansion:
  3.1428571429 == Approx( 3.141 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) )
with expansion:
  3.1428571429 != Approx( 3.141 )

-------------------------------------------------------------------------------
Approximate comparisons with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.231 ) )
with expansion:
  1.23 != Approx( 1.231 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) )
with expansion:
  1.23 == Approx( 1.231 )

-------------------------------------------------------------------------------
Approximate comparisons with floats
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.23f == Approx( 1.23f ) )
with expansion:
  1.23f == Approx( 1.2300000191 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0.0f == Approx( 0.0f ) )
with expansion:
  0.0f == Approx( 0.0 )

-------------------------------------------------------------------------------
Approximate comparisons with ints
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

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

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

-------------------------------------------------------------------------------
Approximate comparisons with mixed numeric types
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.0f == Approx( 1 ) )
with expansion:
  1.0f == Approx( 1.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == Approx( dZero) )
with expansion:
  0 == Approx( 0.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == Approx( dSmall ).margin( 0.001 ) )
with expansion:
  0 == Approx( 0.00001 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.234f == Approx( dMedium ) )
with expansion:
  1.234f == Approx( 1.234 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( dMedium == Approx( 1.234f ) )
with expansion:
  1.234 == Approx( 1.2339999676 )

-------------------------------------------------------------------------------
Arbitrary predicate matcher
  Function pointer
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, Predicate<int>(alwaysTrue, "always true") )
with expansion:
  1 matches predicate: "always true"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, !Predicate<int>(alwaysFalse, "always false") )
with expansion:
  1 not matches predicate: "always false"

-------------------------------------------------------------------------------
Arbitrary predicate matcher
  Lambdas + different type
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "Hello olleH", Predicate<std::string>( [] (std::string const& str) -> bool { return str.front() == str.back(); }, "First and last character should be equal") )
with expansion:
  "Hello olleH" matches predicate: "First and last character should be equal"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "This wouldn't pass", !Predicate<std::string>( [] (std::string const& str) -> bool { return str.front() == str.back(); } ) )
with expansion:
  "This wouldn't pass" not matches undescribed predicate

-------------------------------------------------------------------------------
Assertions then sections
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
  Another section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
  Another other section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
CAPTURE can deal with complex expressions
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  a := 1
  b := 2
  c := 3
  a + b := 3
  a+b := 3
  c > b := true
  a == 1 := true

-------------------------------------------------------------------------------
CAPTURE can deal with complex expressions involving commas
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  std::vector<int>{1, 2, 3}[0, 1, 2] := 3
  std::vector<int>{1, 2, 3}[(0, 1)] := 2
  std::vector<int>{1, 2, 3}[0] := 1
  (helper_1436<int, int>{12, -12}) := { 12, -12 }
  (helper_1436<int, int>(-12, 12)) := { -12, 12 }
  (1, 2) := 2
  (2, 3) := 3

-------------------------------------------------------------------------------
CAPTURE parses string and character constants
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  ("comma, in string", "escaped, \", ") := "escaped, ", "
  "single quote in string,'," := "single quote in string,',"
  "some escapes, \\,\\\\" := "some escapes, \,\\"
  "some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[
  <"
  '"' := '"'
  '\'' := '''
  ',' := ','
  '}' := '}'
  ')' := ')'
  '(' := '('
  '{' := '{'

-------------------------------------------------------------------------------
Capture and info messages
  Capture should stringify like assertions
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  i := 2

-------------------------------------------------------------------------------
Capture and info messages
  Info should NOT stringify the way assertions do
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  3

-------------------------------------------------------------------------------
Character pretty printing
  Specifically escaped
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( tab == '\t' )
with expansion:
  '\t' == '\t'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( newline == '\n' )
with expansion:
  '\n' == '\n'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( carr_return == '\r' )
with expansion:
  '\r' == '\r'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( form_feed == '\f' )
with expansion:
  '\f' == '\f'

-------------------------------------------------------------------------------
Character pretty printing
  General chars
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( space == ' ' )
with expansion:
  ' ' == ' '

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'a' == 'a'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'z' == 'z'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'A' == 'A'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'Z' == 'Z'

-------------------------------------------------------------------------------
Character pretty printing
  Low ASCII
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( null_terminator == '\0' )
with expansion:
  0 == 0

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  2 == 2

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  3 == 3

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  4 == 4

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
Commas in various macros are allowed
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
with expansion:
  !({ 1, 2 } == { 1, 2, 3 })

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
with expansion:
  !({ 1, 2 } == { 1, 2, 3 })

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_NOFAIL( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  CHECKED_IF( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

Tricky.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

-------------------------------------------------------------------------------
Comparing function pointers
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( a )
with expansion:
  0x<hex digits>

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( a == &foo )
with expansion:
  0x<hex digits> == 0x<hex digits>

-------------------------------------------------------------------------------
Comparison ops
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( SimplePcg32{} == SimplePcg32{} )
with expansion:
  {?} == {?}

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( SimplePcg32{ 0 } != SimplePcg32{} )
with expansion:
  {?} != {?}

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( SimplePcg32{ 1 } == SimplePcg32{ 2 } )
with expansion:
  !({?} == {?})

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( SimplePcg32{ 1 } != SimplePcg32{ 1 } )
with expansion:
  !({?} != {?})

-------------------------------------------------------------------------------
Comparison with explicitly convertible types
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td == Approx(10.0) )
with expansion:
  StrongDoubleTypedef(10) == Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(10.0) == td )
with expansion:
  Approx( 10.0 ) == StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td != Approx(11.0) )
with expansion:
  StrongDoubleTypedef(10) != Approx( 11.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(11.0) != td )
with expansion:
  Approx( 11.0 ) != StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td <= Approx(10.0) )
with expansion:
  StrongDoubleTypedef(10) <= Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td <= Approx(11.0) )
with expansion:
  StrongDoubleTypedef(10) <= Approx( 11.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(10.0) <= td )
with expansion:
  Approx( 10.0 ) <= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(9.0) <= td )
with expansion:
  Approx( 9.0 ) <= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td >= Approx(9.0) )
with expansion:
  StrongDoubleTypedef(10) >= Approx( 9.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td >= Approx(td) )
with expansion:
  StrongDoubleTypedef(10) >= Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(td) >= td )
with expansion:
  Approx( 10.0 ) >= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(11.0) >= td )
with expansion:
  Approx( 11.0 ) >= StrongDoubleTypedef(10)

-------------------------------------------------------------------------------
Comparisons between ints where one side is computed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  CHECK( 54 == 6*9 )
with expansion:
  54 == 54

-------------------------------------------------------------------------------
Comparisons between unsigned ints and negative signed ints match c++ standard
behaviour
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( -1 > 2u ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( -1 > 2u )
with expansion:
  -1 > 2

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( 2u < -1 ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( 2u < -1 )
with expansion:
  2 < -1

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( minInt > 2u ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( minInt > 2u )
with expansion:
  -2147483648 > 2

-------------------------------------------------------------------------------
Comparisons with int literals don't warn when mixing signed/ unsigned
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

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

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( ui == 2 )
with expansion:
  2 == 2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( l == 3 )
with expansion:
  3 == 3

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( ul == 4 )
with expansion:
  4 == 4

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( c == 5 )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( uc == 6 )
with expansion:
  6 == 6

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

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 2 == ui )
with expansion:
  2 == 2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 3 == l )
with expansion:
  3 == 3

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 4 == ul )
with expansion:
  4 == 4

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 5 == c )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 6 == uc )
with expansion:
  6 == 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( (std::numeric_limits<uint32_t>::max)() > ul )
with expansion:
  4294967295 (0x<hex digits>) > 4

-------------------------------------------------------------------------------
Composed matchers are distinct
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching2(), !composed1 )
with expansion:
  "some completely different text that contains one common word" not (
  contains: "string" or contains: "random" )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching2(), composed2 )
with expansion:
  "some completely different text that contains one common word" ( contains:
  "string" or contains: "random" or contains: "different" )

-------------------------------------------------------------------------------
Contains string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Contains("not there", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" contains: "not there" (case
  insensitive)

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Contains("STRING") )
with expansion:
  "this string contains 'abc' as a substring" contains: "STRING"

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  Final validation
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

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

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( make_data().size() == test_count )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
Custom exceptions can be translated when testing for nothrow
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_NOTHROW( throwCustom() )
due to unexpected exception with message:
  custom exception - not std

-------------------------------------------------------------------------------
Custom exceptions can be translated when testing for throwing as something else
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_AS( throwCustom(), std::exception )
due to unexpected exception with message:
  custom exception - not std

-------------------------------------------------------------------------------
Custom std-exceptions can be custom translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  custom std exception

-------------------------------------------------------------------------------
Default scale is invisible to comparison
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 101.000001 != Approx(100).epsilon(0.01) )
with expansion:
  101.000001 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) )
with expansion:
  0.00001 != Approx( 0.0000001 )

-------------------------------------------------------------------------------
Directly creating an EnumInfo
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(0) == "Value1" )
with expansion:
  Value1 == "Value1"

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(1) == "Value2" )
with expansion:
  Value2 == "Value2"

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(3) == "{** unexpected enum value **}" )
with expansion:
  {** unexpected enum value **}
  ==
  "{** unexpected enum value **}"

-------------------------------------------------------------------------------
EndsWith string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), EndsWith("Substring") )
with expansion:
  "this string contains 'abc' as a substring" ends with: "Substring"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), EndsWith("this", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" ends with: "this" (case
  insensitive)

-------------------------------------------------------------------------------
Enums can quickly have stringification enabled using REGISTER_ENUM
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value1 ) == "Value1" )
with expansion:
  "Value1" == "Value1"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value2 ) == "Value2" )
with expansion:
  "Value2" == "Value2"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value3 ) == "Value3" )
with expansion:
  "Value3" == "Value3"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" )
with expansion:
  "{** unexpected enum value **}"
  ==
  "{** unexpected enum value **}"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( ec3 ) == "Value2" )
with expansion:
  "Value2" == "Value2"

-------------------------------------------------------------------------------
Enums in namespaces can quickly have stringification enabled using
REGISTER_ENUM
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( Bikeshed::Colours::Red ) == "Red" )
with expansion:
  "Red" == "Red"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( Bikeshed::Colours::Blue ) == "Blue" )
with expansion:
  "Blue" == "Blue"

-------------------------------------------------------------------------------
Epsilon only applies to Approx's value
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 101.01 != Approx(100).epsilon(0.01) )
with expansion:
  101.01 != Approx( 100.0 )

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

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 6 )
with expansion:
  7 == 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 8 )
with expansion:
  7 == 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 0 )
with expansion:
  7 == 0

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 9.11f ) )
with expansion:
  9.1f == Approx( 9.1099996567 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 9.0f ) )
with expansion:
  9.1f == Approx( 9.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 1 ) )
with expansion:
  9.1f == Approx( 1.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 0 ) )
with expansion:
  9.1f == Approx( 0.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.double_pi == Approx( 3.1415 ) )
with expansion:
  3.1415926535 == Approx( 3.1415 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "goodbye" )
with expansion:
  "hello" == "goodbye"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "hell" )
with expansion:
  "hello" == "hell"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "hello1" )
with expansion:
  "hello" == "hello1"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello.size() == 6 )
with expansion:
  5 == 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( x == Approx( 1.301 ) )
with expansion:
  1.3 == Approx( 1.301 )

-------------------------------------------------------------------------------
Equality checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven == 7 )
with expansion:
  7 == 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one == Approx( 9.1f ) )
with expansion:
  9.1f == Approx( 9.1000003815 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.double_pi == Approx( 3.1415926535 ) )
with expansion:
  3.1415926535 == Approx( 3.1415926535 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello == "hello" )
with expansion:
  "hello" == "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( "hello" == data.str_hello )
with expansion:
  "hello" == "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello.size() == 5 )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( x == Approx( 1.3 ) )
with expansion:
  1.3 == Approx( 1.3 )

-------------------------------------------------------------------------------
Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Equals("this string contains 'abc' as a substring") )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'abc' as a substring"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Equals("this string contains 'ABC' as a substring", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'abc' as a substring" (case insensitive)

-------------------------------------------------------------------------------
Equals string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Equals("this string contains 'ABC' as a substring") )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'ABC' as a substring"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Equals("something else", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" equals: "something else" (case
  insensitive)

-------------------------------------------------------------------------------
Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" )
with expansion:
  "This exception has overridden what() method"
  ==
  "This exception has overridden what() method"

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" )
with expansion:
  "OperatorException" == "OperatorException"

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" )
with expansion:
  "StringMakerException"
  ==
  "StringMakerException"

-------------------------------------------------------------------------------
Exception matchers that fail
  No exception
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{1} )
because no exception was thrown where one was expected:

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{1} )
because no exception was thrown where one was expected:

-------------------------------------------------------------------------------
Exception matchers that fail
  Type mismatch
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( throwsAsInt(1), SpecialException, ExceptionMatcher{1} )
due to unexpected exception with message:
  Unknown exception

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( throwsAsInt(1), SpecialException, ExceptionMatcher{1} )
due to unexpected exception with message:
  Unknown exception

-------------------------------------------------------------------------------
Exception matchers that fail
  Contents are wrong
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( throwsSpecialException(3), SpecialException, ExceptionMatcher{1} )
with expansion:
  SpecialException::what special exception has value of 1

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException(4), SpecialException, ExceptionMatcher{1} )
with expansion:
  SpecialException::what special exception has value of 1

-------------------------------------------------------------------------------
Exception matchers that succeed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THROWS_MATCHES( throwsSpecialException(1), SpecialException, ExceptionMatcher{1} )
with expansion:
  SpecialException::what special exception has value of 1

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException(2), SpecialException, ExceptionMatcher{2} )
with expansion:
  SpecialException::what special exception has value of 2

-------------------------------------------------------------------------------
Exception messages can be tested for
  exact match
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
with expansion:
  "expected exception" equals: "expected exception"

-------------------------------------------------------------------------------
Exception messages can be tested for
  different case
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) )
with expansion:
  "expected exception" equals: "expected exception" (case insensitive)

-------------------------------------------------------------------------------
Exception messages can be tested for
  wildcarded
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), StartsWith( "expected" ) )
with expansion:
  "expected exception" starts with: "expected"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), EndsWith( "exception" ) )
with expansion:
  "expected exception" ends with: "exception"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), Contains( "except" ) )
with expansion:
  "expected exception" contains: "except"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), Contains( "exCept", Catch::CaseSensitive::No ) )
with expansion:
  "expected exception" contains: "except" (case insensitive)

-------------------------------------------------------------------------------
Exceptions matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, Message("DerivedException::what") )
with expansion:
  DerivedException::what exception message matches "DerivedException::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, !Message("derivedexception::what") )
with expansion:
  DerivedException::what not exception message matches "derivedexception::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException(2), SpecialException, !Message("DerivedException::what") )
with expansion:
  SpecialException::what not exception message matches "DerivedException::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException(2), SpecialException, Message("SpecialException::what") )
with expansion:
  SpecialException::what exception message matches "SpecialException::what"

-------------------------------------------------------------------------------
Expected exceptions that don't throw or unexpected exceptions fail the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_AS( thisThrows(), std::string )
due to unexpected exception with message:
  expected exception

Exception.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
because no exception was thrown where one was expected:

Exception.tests.cpp:<line number>: FAILED:
  CHECK_NOTHROW( thisThrows() )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
FAIL aborts the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  This is a failure

-------------------------------------------------------------------------------
FAIL does not require an argument
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
FAIL_CHECK does not abort the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  This is a failure

Message.tests.cpp:<line number>: warning:
  This message appears in the output

-------------------------------------------------------------------------------
Factorials are computed
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

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

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(3) == 6 )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(10) == 3628800 )
with expansion:
  3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)

-------------------------------------------------------------------------------
Floating point matchers: double
  Relative
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., WithinRel(11.1, 0.1) )
with expansion:
  10.0 and 11.1 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., !WithinRel(11.2, 0.1) )
with expansion:
  10.0 not and 11.2 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !WithinRel(0., 0.99) )
with expansion:
  1.0 not and 0 are within 99% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0., WithinRel(0.) )
with expansion:
  -0.0 and 0 are within 2.22045e-12% of each other

-------------------------------------------------------------------------------
Floating point matchers: double
  Relative
  Some subnormal values
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, WithinRel(v2) )
with expansion:
  0.0 and 2.22507e-308 are within 2.22045e-12% of each other

-------------------------------------------------------------------------------
Floating point matchers: double
  Margin
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs(1., 0) )
with expansion:
  1.0 is within 0.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., WithinAbs(1., 1) )
with expansion:
  0.0 is within 1.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., !WithinAbs(1., 0.99) )
with expansion:
  0.0 not is within 0.99 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., !WithinAbs(1., 0.99) )
with expansion:
  0.0 not is within 0.99 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 11., !WithinAbs(10., 0.5) )
with expansion:
  11.0 not is within 0.5 of 10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., !WithinAbs(11., 0.5) )
with expansion:
  10.0 not is within 0.5 of 11.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10., WithinAbs(-10., 0.5) )
with expansion:
  -10.0 is within 0.5 of -10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10., WithinAbs(-9.6, 0.5) )
with expansion:
  -10.0 is within 0.5 of -9.6

-------------------------------------------------------------------------------
Floating point matchers: double
  ULPs
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP(1., 0) )
with expansion:
  1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( nextafter(1., 2.), WithinULP(1., 1) )
with expansion:
  1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.
  0000000000000002e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., WithinULP(nextafter(0., 1.), 1) )
with expansion:
  0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.
  8813129168249309e-324])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP(nextafter(1., 0.), 1) )
with expansion:
  1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !WithinULP(nextafter(1., 2.), 0) )
with expansion:
  1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00,
  1.0000000000000002e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP(1., 0) )
with expansion:
  1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0., WithinULP(0., 0) )
with expansion:
  -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.
  0000000000000000e+00])

-------------------------------------------------------------------------------
Floating point matchers: double
  Composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs(1., 0.5) || WithinULP(2., 1) )
with expansion:
  1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.
  9999999999999998e+00, 2.0000000000000004e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs(2., 0.5) || WithinULP(1., 0) )
with expansion:
  1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.
  0000000000000000e+00, 1.0000000000000000e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.0001, WithinAbs(0., 0.001) || WithinRel(0., 0.1) )
with expansion:
  0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other )

-------------------------------------------------------------------------------
Floating point matchers: double
  Constructor validation
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinAbs(1., 0.) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinAbs(1., -1.), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinULP(1., 0) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinRel(1., 0.) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel(1., -0.2), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel(1., 1.), std::domain_error )

-------------------------------------------------------------------------------
Floating point matchers: float
  Relative
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, WithinRel(11.1f, 0.1f) )
with expansion:
  10.0f and 11.1 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, !WithinRel(11.2f, 0.1f) )
with expansion:
  10.0f not and 11.2 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, !WithinRel(0.f, 0.99f) )
with expansion:
  1.0f not and 0 are within 99% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0.f, WithinRel(0.f) )
with expansion:
  -0.0f and 0 are within 0.00119209% of each other

-------------------------------------------------------------------------------
Floating point matchers: float
  Relative
  Some subnormal values
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, WithinRel(v2) )
with expansion:
  0.0f and 1.17549e-38 are within 0.00119209% of each other

-------------------------------------------------------------------------------
Floating point matchers: float
  Margin
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs(1.f, 0) )
with expansion:
  1.0f is within 0.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinAbs(1.f, 1) )
with expansion:
  0.0f is within 1.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, !WithinAbs(1.f, 0.99f) )
with expansion:
  0.0f not is within 0.9900000095 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, !WithinAbs(1.f, 0.99f) )
with expansion:
  0.0f not is within 0.9900000095 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinAbs(-0.f, 0) )
with expansion:
  0.0f is within 0.0 of -0.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 11.f, !WithinAbs(10.f, 0.5f) )
with expansion:
  11.0f not is within 0.5 of 10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, !WithinAbs(11.f, 0.5f) )
with expansion:
  10.0f not is within 0.5 of 11.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10.f, WithinAbs(-10.f, 0.5f) )
with expansion:
  -10.0f is within 0.5 of -10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10.f, WithinAbs(-9.6f, 0.5f) )
with expansion:
  -10.0f is within 0.5 of -9.6000003815

-------------------------------------------------------------------------------
Floating point matchers: float
  ULPs
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP(1.f, 0) )
with expansion:
  1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( nextafter(1.f, 2.f), WithinULP(1.f, 1) )
with expansion:
  1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinULP(nextafter(0.f, 1.f), 1) )
with expansion:
  0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP(nextafter(1.f, 0.f), 1) )
with expansion:
  1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, !WithinULP(nextafter(1.f, 2.f), 0) )
with expansion:
  1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+
  00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP(1.f, 0) )
with expansion:
  1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0.f, WithinULP(0.f, 0) )
with expansion:
  -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])

-------------------------------------------------------------------------------
Floating point matchers: float
  Composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs(1.f, 0.5) || WithinULP(1.f, 1) )
with expansion:
  1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.
  99999940e-01, 1.00000012e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs(2.f, 0.5) || WithinULP(1.f, 0) )
with expansion:
  1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.
  00000000e+00, 1.00000000e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.0001f, WithinAbs(0.f, 0.001f) || WithinRel(0.f, 0.1f) )
with expansion:
  0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other )

-------------------------------------------------------------------------------
Floating point matchers: float
  Constructor validation
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinAbs(1.f, 0.f) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinAbs(1.f, -1.f), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinULP(1.f, 0) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinULP(1.f, static_cast<uint64_t>(-1)), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinRel(1.f, 0.f) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel(1.f, -0.2f), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel(1.f, 1.f), std::domain_error )

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Throws if there are no matching values
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter([] (int) {return false; }, value(1)), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  1 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  2 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  3 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  2 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  2 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is not divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  1 == 1

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() < 3 )
with expansion:
  1 < 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is not divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() < 3 )
with expansion:
  2 < 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Throws on too small generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( chunk(2, value(1)), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 1

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 1

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 2

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 2

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 3

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 3

-------------------------------------------------------------------------------
Generators internals
  Single value
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 123 )
with expansion:
  123 == 123

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Preset values
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Generator combinator
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4 )
with expansion:
  4 == 4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Explicitly typed generator sequence
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get().size() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "aa" )
with expansion:
  "aa" == "aa"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "bb" )
with expansion:
  "bb" == "bb"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "cc" )
with expansion:
  "cc" == "cc"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Filter generator
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter([] (int) { return false; }, value(1)), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators internals
  Take generator
  Take less
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Take generator
  Take more
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Map with explicit return type
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2.0 )
with expansion:
  2.0 == 2.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4.0 )
with expansion:
  4.0 == 4.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 6.0 )
with expansion:
  6.0 == 6.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Map with deduced return type
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2.0 )
with expansion:
  2.0 == 2.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4.0 )
with expansion:
  4.0 == 4.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 6.0 )
with expansion:
  6.0 == 6.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Repeat
  Singular repeat
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Repeat
  Actual repeat
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive auto step
  Integer
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -2 )
with expansion:
  -2 == -2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative auto step
  Integer
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.9 == Approx( -0.9 )
with message:
  Current expected value is -0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.8 == Approx( -0.8 )
with message:
  Current expected value is -0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.6 == Approx( -0.6 )
with message:
  Current expected value is -0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.5 == Approx( -0.5 )
with message:
  Current expected value is -0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.3 == Approx( -0.3 )
with message:
  Current expected value is -0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.2 == Approx( -0.2 )
with message:
  Current expected value is -0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.0 == Approx( -0.0 )
with message:
  Current expected value is -1.38778e-16

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1.38778e-16

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.1 == Approx( 0.1 )
with message:
  Current expected value is 0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.3 == Approx( 0.3 )
with message:
  Current expected value is 0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.4 == Approx( 0.4 )
with message:
  Current expected value is 0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.6 == Approx( 0.6 )
with message:
  Current expected value is 0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.7 == Approx( 0.7 )
with message:
  Current expected value is 0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.8 == Approx( 0.8 )
with message:
  Current expected value is 0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.9 == Approx( 0.9 )
with message:
  Current expected value is 0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx( rangeEnd ) )
with expansion:
  1.0 == Approx( 1.0 )

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Greater-than inequalities with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.22 ) )
with expansion:
  1.23 >= Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.23 ) )
with expansion:
  1.23 >= Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( d >= Approx( 1.24 ) )
with expansion:
  !(1.23 >= Approx( 1.24 ))

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) )
with expansion:
  1.23 >= Approx( 1.24 )

-------------------------------------------------------------------------------
INFO and WARN do not abort tests
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:
  this is a message
  this is a warning


No assertions in test case 'INFO and WARN do not abort tests'

-------------------------------------------------------------------------------
INFO gets logged on failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( a == 1 )
with expansion:
  2 == 1
with messages:
  this message should be logged
  so should this

-------------------------------------------------------------------------------
INFO gets logged on failure, even if captured before successful assertions
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  CHECK( a == 2 )
with expansion:
  2 == 2
with message:
  this message may be logged later

Message.tests.cpp:<line number>: FAILED:
  CHECK( a == 1 )
with expansion:
  2 == 1
with messages:
  this message may be logged later
  this message should be logged

Message.tests.cpp:<line number>: FAILED:
  CHECK( a == 0 )
with expansion:
  2 == 0
with messages:
  this message may be logged later
  this message should be logged
  and this, but later

Message.tests.cpp:<line number>: PASSED:
  CHECK( a == 2 )
with expansion:
  2 == 2
with messages:
  this message may be logged later
  this message should be logged
  and this, but later
  but not this

-------------------------------------------------------------------------------
INFO is reset for each loop
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  0 < 10
with messages:
  current counter 0
  i := 0

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  1 < 10
with messages:
  current counter 1
  i := 1

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  2 < 10
with messages:
  current counter 2
  i := 2

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  3 < 10
with messages:
  current counter 3
  i := 3

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  4 < 10
with messages:
  current counter 4
  i := 4

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  5 < 10
with messages:
  current counter 5
  i := 5

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  6 < 10
with messages:
  current counter 6
  i := 6

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  7 < 10
with messages:
  current counter 7
  i := 7

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  8 < 10
with messages:
  current counter 8
  i := 8

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  9 < 10
with messages:
  current counter 9
  i := 9

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( i < 10 )
with expansion:
  10 < 10
with messages:
  current counter 10
  i := 10

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

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven != 7 )
with expansion:
  7 != 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one != Approx( 9.1f ) )
with expansion:
  9.1f != Approx( 9.1000003815 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.double_pi != Approx( 3.1415926535 ) )
with expansion:
  3.1415926535 != Approx( 3.1415926535 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello != "hello" )
with expansion:
  "hello" != "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello.size() != 5 )
with expansion:
  5 != 5

-------------------------------------------------------------------------------
Inequality checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven != 6 )
with expansion:
  7 != 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven != 8 )
with expansion:
  7 != 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 9.11f ) )
with expansion:
  9.1f != Approx( 9.1099996567 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
with expansion:
  9.1f != Approx( 9.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 1 ) )
with expansion:
  9.1f != Approx( 1.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 0 ) )
with expansion:
  9.1f != Approx( 0.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.double_pi != Approx( 3.1415 ) )
with expansion:
  3.1415926535 != Approx( 3.1415 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "goodbye" )
with expansion:
  "hello" != "goodbye"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "hell" )
with expansion:
  "hello" != "hell"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "hello1" )
with expansion:
  "hello" != "hello1"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello.size() != 6 )
with expansion:
  5 != 6

-------------------------------------------------------------------------------
Less-than inequalities with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.24 ) )
with expansion:
  1.23 <= Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.23 ) )
with expansion:
  1.23 <= Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( d <= Approx( 1.22 ) )
with expansion:
  !(1.23 <= Approx( 1.22 ))

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) )
with expansion:
  1.23 <= Approx( 1.22 )

-------------------------------------------------------------------------------
ManuallyRegistered
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Matchers can be (AllOf) composed with the && operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Contains("string") && Contains("abc") && Contains("substring") && Contains("contains") )
with expansion:
  "this string contains 'abc' as a substring" ( contains: "string" and
  contains: "abc" and contains: "substring" and contains: "contains" )

-------------------------------------------------------------------------------
Matchers can be (AnyOf) composed with the || operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Contains("string") || Contains("different") || Contains("random") )
with expansion:
  "this string contains 'abc' as a substring" ( contains: "string" or contains:
  "different" or contains: "random" )

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching2(), Contains("string") || Contains("different") || Contains("random") )
with expansion:
  "some completely different text that contains one common word" ( contains:
  "string" or contains: "different" or contains: "random" )

-------------------------------------------------------------------------------
Matchers can be composed with both && and ||
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), (Contains("string") || Contains("different")) && Contains("substring") )
with expansion:
  "this string contains 'abc' as a substring" ( ( contains: "string" or
  contains: "different" ) and contains: "substring" )

-------------------------------------------------------------------------------
Matchers can be composed with both && and || - failing
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), (Contains("string") || Contains("different")) && Contains("random") )
with expansion:
  "this string contains 'abc' as a substring" ( ( contains: "string" or
  contains: "different" ) and contains: "random" )

-------------------------------------------------------------------------------
Matchers can be negated (Not) with the ! operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), !Contains("different") )
with expansion:
  "this string contains 'abc' as a substring" not contains: "different"

-------------------------------------------------------------------------------
Matchers can be negated (Not) with the ! operator - failing
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), !Contains("substring") )
with expansion:
  "this string contains 'abc' as a substring" not contains: "substring"

-------------------------------------------------------------------------------
Mismatching exception messages failing the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
with expansion:
  "expected exception" equals: "expected exception"

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
with expansion:
  "expected exception" equals: "should fail"

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  3 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  4 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  5 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  6 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  -5 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  -4 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  90 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  91 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  92 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  93 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  94 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  95 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  96 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  97 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  98 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  99 > -6

-------------------------------------------------------------------------------
Nice descriptive name
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: warning:
  This one ran


No assertions in test case 'Nice descriptive name'

-------------------------------------------------------------------------------
Non-std exceptions can be translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  custom exception

-------------------------------------------------------------------------------
Objects that evaluated in boolean contexts can be checked
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( True )
with expansion:
  {?}

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( !False )
with expansion:
  true

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( False )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Optionally static assertions
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
with message:
  std::is_void<void>::value

Compilation.tests.cpp:<line number>: PASSED:
with message:
  !(std::is_void<int>::value)

-------------------------------------------------------------------------------
Ordering comparison checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven > 7 )
with expansion:
  7 > 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 7 )
with expansion:
  7 < 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven > 8 )
with expansion:
  7 > 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 6 )
with expansion:
  7 < 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 0 )
with expansion:
  7 < 0

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < -1 )
with expansion:
  7 < -1

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven >= 8 )
with expansion:
  7 >= 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven <= 6 )
with expansion:
  7 <= 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one < 9 )
with expansion:
  9.1f < 9

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one > 10 )
with expansion:
  9.1f > 10

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one > 9.2 )
with expansion:
  9.1f > 9.2

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "hello" )
with expansion:
  "hello" > "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "hello" )
with expansion:
  "hello" < "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "hellp" )
with expansion:
  "hello" > "hellp"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "z" )
with expansion:
  "hello" > "z"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "hellm" )
with expansion:
  "hello" < "hellm"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "a" )
with expansion:
  "hello" < "a"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello >= "z" )
with expansion:
  "hello" >= "z"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello <= "a" )
with expansion:
  "hello" <= "a"

-------------------------------------------------------------------------------
Ordering comparison checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven < 8 )
with expansion:
  7 < 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > 6 )
with expansion:
  7 > 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > 0 )
with expansion:
  7 > 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > -1 )
with expansion:
  7 > -1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven >= 7 )
with expansion:
  7 >= 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven >= 6 )
with expansion:
  7 >= 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven <= 7 )
with expansion:
  7 <= 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven <= 8 )
with expansion:
  7 <= 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one > 9 )
with expansion:
  9.1f > 9

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one < 10 )
with expansion:
  9.1f < 10

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one < 9.2 )
with expansion:
  9.1f < 9.2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello <= "hello" )
with expansion:
  "hello" <= "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello >= "hello" )
with expansion:
  "hello" >= "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello < "hellp" )
with expansion:
  "hello" < "hellp"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello < "zebra" )
with expansion:
  "hello" < "zebra"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello > "hellm" )
with expansion:
  "hello" > "hellm"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello > "a" )
with expansion:
  "hello" > "a"

-------------------------------------------------------------------------------
Our PCG implementation provides expected results for known seeds
  Default seeded
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4242248763 (0x<hex digits>)
  ==
  4242248763 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1867888929 (0x<hex digits>)
  ==
  1867888929 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1276619030 (0x<hex digits>)
  ==
  1276619030 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1911218783 (0x<hex digits>)
  ==
  1911218783 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1827115164 (0x<hex digits>)
  ==
  1827115164 (0x<hex digits>)

-------------------------------------------------------------------------------
Our PCG implementation provides expected results for known seeds
  Specific seed
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1472234645 (0x<hex digits>)
  ==
  1472234645 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  868832940 (0x<hex digits>)
  ==
  868832940 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  570883446 (0x<hex digits>)
  ==
  570883446 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  889299803 (0x<hex digits>)
  ==
  889299803 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4261393167 (0x<hex digits>)
  ==
  4261393167 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1472234645 (0x<hex digits>)
  ==
  1472234645 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  868832940 (0x<hex digits>)
  ==
  868832940 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  570883446 (0x<hex digits>)
  ==
  570883446 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  889299803 (0x<hex digits>)
  ==
  889299803 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4261393167 (0x<hex digits>)
  ==
  4261393167 (0x<hex digits>)

-------------------------------------------------------------------------------
Output from all sections is reported
  one
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Message from section one

-------------------------------------------------------------------------------
Output from all sections is reported
  two
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Message from section two

-------------------------------------------------------------------------------
Parse test names and tags
  Empty test spec should have no filters
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Test spec from empty string should have no filters
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches(tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: 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
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Test spec from name should have one filter
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Test spec from quoted name should have one filter
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Test spec from name should have one filter
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Wildcard at the start
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( parseTestSpec( "*a" ).matches( tcA ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Wildcard at the end
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( parseTestSpec( "a*" ).matches( tcA ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Wildcard at both ends
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( parseTestSpec( "*a*" ).matches( tcA ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Redundant wildcard at the start
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Redundant wildcard at the end
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Redundant wildcard at both ends
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Wildcard at both ends, redundant at start
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Just wildcard
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Single tag
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Single tag, two matches
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Two tags
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Two tags, spare separated
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Wildcarded name and tag
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  Single tag exclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  One tag exclusion and one tag inclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  One tag exclusion and one wldcarded name inclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: 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
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  name exclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  wildcarded name exclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  wildcarded name exclusion with tag inclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  wildcarded name exclusion, using exclude:, with tag inclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  two wildcarded names
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  empty tag
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  empty quoted name
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Parse test names and tags
  quoted string followed by tag exclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.hasFilters() == true )
with expansion:
  true == true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcA ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcB ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcC ) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( tcD ) == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Parse test names and tags
  Leading and trailing spaces in test spec
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "  aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "  aardvark" ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( " aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "aardvark" ) ) )
with expansion:
  true

-------------------------------------------------------------------------------
Parse test names and tags
  Leading and trailing spaces in test name
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "  aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "  aardvark" ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( " aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "aardvark " ) ) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches( fakeTestCase( "aardvark" ) ) )
with expansion:
  true

-------------------------------------------------------------------------------
Parse test names and tags
  Shortened hide tags are split apart when parsing
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches(fakeTestCase("hidden and foo", "[.][foo]")) )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( spec.matches(fakeTestCase("only foo", "[foo]")) )
with expansion:
  !false

-------------------------------------------------------------------------------
Parse test names and tags
  Shortened hide tags also properly handle exclusion
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( spec.matches(fakeTestCase("hidden and foo", "[.][foo]")) )
with expansion:
  !false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( spec.matches(fakeTestCase("only foo", "[foo]")) )
with expansion:
  !false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( spec.matches(fakeTestCase("only hidden", "[.]")) )
with expansion:
  !false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( spec.matches(fakeTestCase("neither foo nor hidden", "[bar]")) )
with expansion:
  true

-------------------------------------------------------------------------------
Pointers can be compared to null
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

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

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( p == pNULL )
with expansion:
  0 == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( p != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( cp != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( cpc != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( returnsNull() == 0 )
with expansion:
  {null string} == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( returnsConstNull() == 0 )
with expansion:
  {null string} == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 != p )
with expansion:
  0 != 0x<hex digits>

-------------------------------------------------------------------------------
Precision of floating point stringification can be set
  Floats
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( str1.size() == 3 + 5 )
with expansion:
  8 == 8

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( str2.size() == 3 + 10 )
with expansion:
  13 == 13

-------------------------------------------------------------------------------
Precision of floating point stringification can be set
  Double
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( str1.size() == 2 + 5 )
with expansion:
  7 == 7

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( str2.size() == 2 + 15 )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
Predicate matcher can accept const char*
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "foo", Predicate<const char*>([] (const char* const&) { return true; }) )
with expansion:
  "foo" matches undescribed predicate

-------------------------------------------------------------------------------
Process can be configured on command line
  empty args don't cause a crash
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.processName == "" )
with expansion:
  "" == ""

-------------------------------------------------------------------------------
Process can be configured on command line
  default - no arguments
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.processName == "test" )
with expansion:
  "test" == "test"

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.shouldDebugBreak == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.abortAfter == -1 )
with expansion:
  -1 == -1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.noThrow == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.reporterName == "console" )
with expansion:
  "console" == "console"

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( cfg.hasTestFilters() )
with expansion:
  !false

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case using
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("notIncluded")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case exclusion using exclude:
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("alwaysIncluded")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case exclusion using ~
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("test1")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(fakeTestCase("alwaysIncluded")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  -r/console
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-r", "console"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterName == "console" )
with expansion:
  "console" == "console"

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  -r/xml
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-r", "xml"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterName == "xml" )
with expansion:
  "xml" == "xml"

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  --reporter/junit
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--reporter", "junit"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterName == "junit" )
with expansion:
  "junit" == "junit"

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  Only one reporter is accepted
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( cli.parse({ "test", "-r", "xml", "-r", "junit" }) )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  must match one of the available ones
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), Contains("Unrecognized reporter") )
with expansion:
  "Unrecognized reporter, 'unsupported'. Check available with --list-reporters"
  contains: "Unrecognized reporter"

-------------------------------------------------------------------------------
Process can be configured on command line
  debugger
  -b
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-b"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shouldDebugBreak == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Process can be configured on command line
  debugger
  --break
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--break"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shouldDebugBreak )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -a aborts after first failure
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-a"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.abortAfter == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -x 2 aborts after two failures
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-x", "2"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.abortAfter == 2 )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -x must be numeric
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), Contains("convert") && Contains("oops") )
with expansion:
  "Unable to convert 'oops' to destination type" ( contains: "convert" and
  contains: "oops" )

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  invalid options are reported
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), Contains("never") && Contains("both") )
with expansion:
  "keypress argument must be one of: never, start, exit or both. 'sometimes'
  not recognised" ( contains: "never" and contains: "both" )

-------------------------------------------------------------------------------
Process can be configured on command line
  nothrow
  -e
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-e"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.noThrow )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  nothrow
  --nothrow
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--nothrow"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.noThrow )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  output filename
  -o filename
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-o", "filename.ext"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.outputFilename == "filename.ext" )
with expansion:
  "filename.ext" == "filename.ext"

-------------------------------------------------------------------------------
Process can be configured on command line
  output filename
  --out
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--out", "filename.ext"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: 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
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-abe"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.abortAfter == 1 )
with expansion:
  1 == 1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.shouldDebugBreak )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.noThrow == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  without option
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.useColour == UseColour::Auto )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  auto
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--use-colour", "auto"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.useColour == UseColour::Auto )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  yes
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--use-colour", "yes"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.useColour == UseColour::Yes )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  no
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--use-colour", "no"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.useColour == UseColour::No )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  error
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_THAT( result.errorMessage(), Contains( "colour mode must be one of" ) )
with expansion:
  "colour mode must be one of: auto, yes or no. 'wrong' not recognised"
  contains: "colour mode must be one of"

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  samples
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-samples=200" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkSamples == 200 )
with expansion:
  200 == 200

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  resamples
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-resamples=20000" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkResamples == 20000 )
with expansion:
  20000 (0x<hex digits>) == 20000 (0x<hex digits>)

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  confidence-interval
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkConfidenceInterval == Catch::Detail::Approx(0.99) )
with expansion:
  0.99 == Approx( 0.99 )

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  no-analysis
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-no-analysis" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkNoAnalysis )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  warmup-time
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-warmup-time=10" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkWarmupTime == 10 )
with expansion:
  10 == 10

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int, double, float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  3 >= 1

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int, double>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  2 >= 1

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  1 >= 1

-------------------------------------------------------------------------------
Reconstruction should be based on stringification: #914
-------------------------------------------------------------------------------
Decomposition.tests.cpp:<line number>
...............................................................................

Decomposition.tests.cpp:<line number>: FAILED:
  CHECK( truthy(false) )
with expansion:
  Hey, its truthy!

-------------------------------------------------------------------------------
Regex string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches("this STRING contains 'abc' as a substring") )
with expansion:
  "this string contains 'abc' as a substring" matches "this STRING contains
  'abc' as a substring" case sensitively

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches("contains 'abc' as a substring") )
with expansion:
  "this string contains 'abc' as a substring" matches "contains 'abc' as a
  substring" case sensitively

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches("this string contains 'abc' as a") )
with expansion:
  "this string contains 'abc' as a substring" matches "this string contains
  'abc' as a" case sensitively

-------------------------------------------------------------------------------
Regression test #1
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( actual, !UnorderedEquals(expected) )
with expansion:
  { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }

-------------------------------------------------------------------------------
SUCCEED counts as a test pass
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with message:
  this is a success

-------------------------------------------------------------------------------
SUCCEED does not require an argument
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
          methods
      Given: No operations precede me
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
          methods
      Given: No operations precede me
       When: We get the count
       Then: Subsequently values are higher
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( after > before )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
      Given: This stuff exists
  And given: And some assumption
       When: I do this
       Then: it should do this
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( itDoesThis() )
with expansion:
  true

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
      Given: This stuff exists
  And given: And some assumption
       When: I do this
       Then: it should do this
        And: do that
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( itDoesThat() )
with expansion:
  true

-------------------------------------------------------------------------------
Scenario: This is a really long scenario name to see how the list command deals
          with wrapping
      Given: A section name that is so long that it cannot fit in a single
             console width
       When: The test headers are printed as part of the normal running of the
             scenario
       Then: The, deliberately very long and overly verbose (you see what I did
             there?) section names must wrap, along with an indent
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
with message:
  boo!

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: it is made larger
       Then: the size and capacity go up
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: it is made larger
       Then: the size and capacity go up
   And when: it is made smaller again
       Then: the size goes down but the capacity stays the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: we reserve more space
       Then: The capacity is increased but the size remains the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

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

A string sent directly to stdout
A string sent directly to stderr
A string sent to stderr via clog
-------------------------------------------------------------------------------
Sends stuff to stdout and stderr
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'Sends stuff to stdout and stderr'

-------------------------------------------------------------------------------
Some simple comparisons between doubles
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == Approx( 1.23 ) )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.22 ) )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.24 ) )
with expansion:
  1.23 != Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.23_a )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.22_a )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) == 1.23 )
with expansion:
  Approx( 1.23 ) == 1.23

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) != 1.22 )
with expansion:
  Approx( 1.23 ) != 1.22

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) != 1.24 )
with expansion:
  Approx( 1.23 ) != 1.24

Message from section one
-------------------------------------------------------------------------------
Standard output from all sections is reported
  one
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in section 'one'

Message from section two
-------------------------------------------------------------------------------
Standard output from all sections is reported
  two
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in section 'two'

-------------------------------------------------------------------------------
StartsWith string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), StartsWith("This String") )
with expansion:
  "this string contains 'abc' as a substring" starts with: "This String"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), StartsWith("string", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "string" (case
  insensitive)

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(singular) == "{ 1 }" )
with expansion:
  "{ 1 }" == "{ 1 }"

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Multiple
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" )
with expansion:
  "{ 3, 2, 1 }" == "{ 3, 2, 1 }"

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Non-trivial inner items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" )
with expansion:
  "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
  ==
  "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"

-------------------------------------------------------------------------------
String matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching(), Contains("string") )
with expansion:
  "this string contains 'abc' as a substring" contains: "string"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching(), Contains("string", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" contains: "string" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Contains("abc") )
with expansion:
  "this string contains 'abc' as a substring" contains: "abc"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Contains("aBC", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" contains: "abc" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), StartsWith("this") )
with expansion:
  "this string contains 'abc' as a substring" starts with: "this"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), StartsWith("THIS", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "this" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), EndsWith("substring") )
with expansion:
  "this string contains 'abc' as a substring" ends with: "substring"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), EndsWith(" SuBsTrInG", Catch::CaseSensitive::No) )
with expansion:
  "this string contains 'abc' as a substring" ends with: " substring" (case
  insensitive)

-------------------------------------------------------------------------------
StringRef
  Empty string
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( empty.empty() )
with expansion:
  true

String.tests.cpp:<line number>: PASSED:
  REQUIRE( empty.size() == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE( empty.isNullTerminated() )
with expansion:
  true

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( empty.c_str(), "" ) == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  From string literal
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.empty() == false )
with expansion:
  false == false

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.size() == 5 )
with expansion:
  5 == 5

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.isNullTerminated() )
with expansion:
  true

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( rawChars, "hello" ) == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( s.c_str() )

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.c_str() == rawChars )
with expansion:
  "hello" == "hello"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == rawChars )
with expansion:
  "hello" == "hello"

-------------------------------------------------------------------------------
StringRef
  From sub-string
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( original == "original" )

String.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( original.isNullTerminated() )
with expansion:
  !false

String.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( original.c_str() )

String.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( original.data() )

-------------------------------------------------------------------------------
StringRef
  Substrings
  zero-based substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.empty() == false )
with expansion:
  false == false

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.size() == 5 )
with expansion:
  5 == 5

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strncmp( ss.data(), "hello", 5 ) == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss == "hello" )
with expansion:
  hello == "hello"

-------------------------------------------------------------------------------
StringRef
  Substrings
  non-zero-based substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.size() == 6 )
with expansion:
  6 == 6

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( ss.c_str(), "world!" ) == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  Substrings
  Pointer values of full refs should match
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == s2.data() )
with expansion:
  "hello world!" == "hello world!"

-------------------------------------------------------------------------------
StringRef
  Substrings
  Pointer values of substring refs should also match
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == ss.data() )
with expansion:
  "hello world!" == "hello world!"

-------------------------------------------------------------------------------
StringRef
  Substrings
  Past the end substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.substr(s.size() + 1, 123).empty() )
with expansion:
  true

-------------------------------------------------------------------------------
StringRef
  Substrings
  Substring off the end are trimmed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp(ss.c_str(), "world!") == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  Comparisons are deep
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  CHECK( (char*)buffer1 != (char*)buffer2 )
with expansion:
  "Hello" != "Hello"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( left == right )
with expansion:
  Hello == Hello

String.tests.cpp:<line number>: PASSED:
  REQUIRE( left != left.substr(0, 3) )
with expansion:
  Hello != Hel

-------------------------------------------------------------------------------
StringRef
  from std::string
  implicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  from std::string
  explicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  from std::string
  assigned
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  to std::string
  explicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr == "a stringref" )
with expansion:
  "a stringref" == "a stringref"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr.size() == sr.size() )
with expansion:
  11 == 11

-------------------------------------------------------------------------------
StringRef
  to std::string
  assigned
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr == "a stringref" )
with expansion:
  "a stringref" == "a stringref"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr.size() == sr.size() )
with expansion:
  11 == 11

-------------------------------------------------------------------------------
StringRef at compilation time
  Simple constructors
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
with message:
  StringRef{}.size() == 0

String.tests.cpp:<line number>: PASSED:
with message:
  StringRef{ "abc", 3 }.size() == 3

String.tests.cpp:<line number>: PASSED:
with message:
  StringRef{ "abc", 3 }.isNullTerminated()

String.tests.cpp:<line number>: PASSED:
with message:
  StringRef{ "abc", 2 }.size() == 2

String.tests.cpp:<line number>: PASSED:
with message:
  !(StringRef{ "abc", 2 }.isNullTerminated())

-------------------------------------------------------------------------------
StringRef at compilation time
  UDL construction
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
with message:
  !(sr1.empty())

String.tests.cpp:<line number>: PASSED:
with message:
  sr1.size() == 3

String.tests.cpp:<line number>: PASSED:
with message:
  sr1.isNullTerminated()

String.tests.cpp:<line number>: PASSED:
with message:
  sr2.empty()

String.tests.cpp:<line number>: PASSED:
with message:
  sr2.size() == 0

String.tests.cpp:<line number>: PASSED:
with message:
  sr2.isNullTerminated()

-------------------------------------------------------------------------------
Stringifying std::chrono::duration helpers
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( minute == seconds )
with expansion:
  1 m == 60 s

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( hour != seconds )
with expansion:
  1 h != 60 s

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( micro != milli )
with expansion:
  1 us != 1 ms

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( nano != micro )
with expansion:
  1 ns != 1 us

-------------------------------------------------------------------------------
Stringifying std::chrono::duration with weird ratios
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( half_minute != femto_second )
with expansion:
  1 [30/1]s != 1 fs

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( pico_second != atto_second )
with expansion:
  1 ps != 1 as

-------------------------------------------------------------------------------
Stringifying std::chrono::time_point<system_clock>
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( now != later )
with expansion:
  {iso8601-timestamp}
  !=
  {iso8601-timestamp}

-------------------------------------------------------------------------------
Tabs and newlines show in output
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( s1 == s2 )
with expansion:
  "if ($b == 10) {
  		$a	= 20;
  }"
  ==
  "if ($b == 10) {
  	$a = 20;
  }
  "

-------------------------------------------------------------------------------
Tag alias can be registered against tag patterns
  The same tag alias can only be registered once
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, Contains( "[@zzz]" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "[@zzz]"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, Contains( "file" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "file"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, Contains( "2" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "2"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, Contains( "10" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "10"

-------------------------------------------------------------------------------
Tag alias can be registered against tag patterns
  Tag aliases must be of the form [@name]
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) )

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 0
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 2
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0 == 1

-------------------------------------------------------------------------------
Template test case with test types specified inside non-copyable and non-
movable std::tuple - NonCopyableAndNonMovableTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-copyable and non-
movable std::tuple - NonCopyableAndNonMovableTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-default-constructible
std::tuple - MyNonDefaultConstructibleTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-default-constructible
std::tuple - MyNonDefaultConstructibleTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  12 == 12

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  12 >= 12

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  12 >= 12

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  8 == 8

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  8 >= 8

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  8 >= 8

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  30 == 30

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  30 >= 30

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  30 >= 30

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
Test case with one argument
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  no assertions

-------------------------------------------------------------------------------
Test enum bit values
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( 0x<hex digits> == bit30and31 )
with expansion:
  3221225472 (0x<hex digits>) == 3221225472

-------------------------------------------------------------------------------
Test with special, characters "in name
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
The NO_FAIL macro reports a failure but does not fail the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: 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'

-------------------------------------------------------------------------------
This test 'should' fail but doesn't
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
Thrown string literals are translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  For some reason someone is throwing a string literal!

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  fail one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  fail one section
  re-enter after failed section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  fail one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  fail one section
  re-enter after failed section and find next section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
  Successfully close S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isSuccessfullyCompleted() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
  fail S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase3.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1c.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2c.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase3.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  open a nested section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

-------------------------------------------------------------------------------
Trim strings
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(no_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(leading_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(trailing_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(whitespace_at_both_ends)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(no_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

-------------------------------------------------------------------------------
Unexpected exceptions can be translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  3.14

-------------------------------------------------------------------------------
Use a custom approx
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.23 ) )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.22 ) )
with expansion:
  1.23 == Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.24 ) )
with expansion:
  1.23 == Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != approx( 1.25 ) )
with expansion:
  1.23 != Approx( 1.25 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.23 )
with expansion:
  Approx( 1.23 ) == 1.23

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.22 )
with expansion:
  Approx( 1.23 ) == 1.22

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.24 )
with expansion:
  Approx( 1.23 ) == 1.24

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) != 1.25 )
with expansion:
  Approx( 1.23 ) != 1.25

-------------------------------------------------------------------------------
Variadic macros
  Section with one argument
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  no assertions

-------------------------------------------------------------------------------
Vector Approx matcher
  Empty vector is roughly equal to an empty vector
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty, Approx(empty) )
with expansion:
  {  } is approx: {  }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  A vector is approx equal to itself
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx(v1) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  Different length
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, !Approx(temp) )
with expansion:
  { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  Same length, different elements
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, !Approx(v2) )
with expansion:
  { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx(v2).margin(0.5) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx(v2).epsilon(0.5) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx(v2).epsilon(0.1).scale(500) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

-------------------------------------------------------------------------------
Vector Approx matcher -- failing
  Empty and non empty vectors are not approx equal
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Approx(t1) )
with expansion:
  {  } is approx: { 1.0, 2.0 }

-------------------------------------------------------------------------------
Vector Approx matcher -- failing
  Just different vectors
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v1, Approx(v2) )
with expansion:
  { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }

-------------------------------------------------------------------------------
Vector matchers
  Contains (element)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains(1) )
with expansion:
  { 1, 2, 3 } Contains: 1

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains(2) )
with expansion:
  { 1, 2, 3 } Contains: 2

-------------------------------------------------------------------------------
Vector matchers
  Contains (vector)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains(v2) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains(v2) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains(empty) )
with expansion:
  { 1, 2, 3 } Contains: {  }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, Contains(empty) )
with expansion:
  {  } Contains: {  }

-------------------------------------------------------------------------------
Vector matchers
  Contains (element), composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains(1) && VectorContains(2) )
with expansion:
  { 1, 2, 3 } ( Contains: 1 and Contains: 2 )

-------------------------------------------------------------------------------
Vector matchers
  Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Equals(v) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, Equals(empty) )
with expansion:
  {  } Equals: {  }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Equals(v2) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

-------------------------------------------------------------------------------
Vector matchers
  UnorderedEquals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, UnorderedEquals(v) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, UnorderedEquals(empty) )
with expansion:
  {  } UnorderedEquals: {  }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( permuted, UnorderedEquals(v) )
with expansion:
  { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( permuted, UnorderedEquals(v) )
with expansion:
  { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }

-------------------------------------------------------------------------------
Vector matchers that fail
  Contains (element)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, VectorContains(-1) )
with expansion:
  { 1, 2, 3 } Contains: -1

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, VectorContains(1) )
with expansion:
  {  } Contains: 1

-------------------------------------------------------------------------------
Vector matchers that fail
  Contains (vector)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Contains(v) )
with expansion:
  {  } Contains: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Contains(v2) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2, 4 }

-------------------------------------------------------------------------------
Vector matchers that fail
  Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Equals(v2) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v2, Equals(v) )
with expansion:
  { 1, 2 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Equals(v) )
with expansion:
  {  } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Equals(empty) )
with expansion:
  { 1, 2, 3 } Equals: {  }

-------------------------------------------------------------------------------
Vector matchers that fail
  UnorderedEquals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, UnorderedEquals(empty) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: {  }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, UnorderedEquals(v) )
with expansion:
  {  } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( permuted, UnorderedEquals(v) )
with expansion:
  { 1, 3 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( permuted, UnorderedEquals(v) )
with expansion:
  { 3, 1 } UnorderedEquals: { 1, 2, 3 }

-------------------------------------------------------------------------------
When checked exceptions are thrown they can be expected or unexpected
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( thisThrows(), std::domain_error )

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( thisDoesntThrow() )

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( thisThrows() )

-------------------------------------------------------------------------------
When unchecked exceptions are thrown directly they are always failures
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown during a CHECK the test should continue
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown during a REQUIRE the test should abort
fail
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown from functions they are always failures
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown from sections they are always failures
  section name
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown, but caught, they do not affect the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................


No assertions in test case 'When unchecked exceptions are thrown, but caught, they do not affect the test'

-------------------------------------------------------------------------------
Where the LHS is not a simple value
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: 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'

-------------------------------------------------------------------------------
Where there is more to the expression after the RHS
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: warning:
  Uncomment the code in this test to check that it gives a sensible compiler
  error


No assertions in test case 'Where there is more to the expression after the RHS'

-------------------------------------------------------------------------------
X/level/0/a
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
X/level/0/b
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
X/level/1/a
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
X/level/1/b
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
XmlEncode
  normal string
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "normal string" ) == "normal string" )
with expansion:
  "normal string" == "normal string"

-------------------------------------------------------------------------------
XmlEncode
  empty string
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "" ) == "" )
with expansion:
  "" == ""

-------------------------------------------------------------------------------
XmlEncode
  string with ampersand
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith & jones" ) == "smith &amp; jones" )
with expansion:
  "smith &amp; jones" == "smith &amp; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with less-than
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith < jones" ) == "smith &lt; jones" )
with expansion:
  "smith &lt; jones" == "smith &lt; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with greater-than
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith > jones" ) == "smith > jones" )
with expansion:
  "smith > jones" == "smith > jones"

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith ]]> jones" ) == "smith ]]&gt; jones" )
with expansion:
  "smith ]]&gt; jones"
  ==
  "smith ]]&gt; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with quotes
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( stringWithQuotes ) == stringWithQuotes )
with expansion:
  "don't "quote" me on that"
  ==
  "don't "quote" me on that"

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" )
with expansion:
  "don't &quot;quote&quot; me on that"
  ==
  "don't &quot;quote&quot; me on that"

-------------------------------------------------------------------------------
XmlEncode
  string with control char (1)
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "[\x01]" ) == "[\\x01]" )
with expansion:
  "[\x01]" == "[\x01]"

-------------------------------------------------------------------------------
XmlEncode
  string with control char (x7F)
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "[\x7F]" ) == "[\\x7F]" )
with expansion:
  "[\x7F]" == "[\x7F]"

-------------------------------------------------------------------------------
adding a hide tag implicitly enables all others
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testcase.tags, VectorContains(std::string(".")) && VectorContains(std::string("!hide")) )
with expansion:
  { "!hide", "." } ( Contains: "." and Contains: "!hide" )

-------------------------------------------------------------------------------
adding a hide tag implicitly enables all others
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testcase.tags, VectorContains(std::string(".")) && VectorContains(std::string("!hide")) )
with expansion:
  { "!hide", "." } ( Contains: "." and Contains: "!hide" )

-------------------------------------------------------------------------------
adding a hide tag implicitly enables all others
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testcase.tags, VectorContains(std::string(".")) && VectorContains(std::string("!hide")) )
with expansion:
  { "!hide", ".", "foo" } ( Contains: "." and Contains: "!hide" )

-------------------------------------------------------------------------------
array<int, N> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( empty ) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( oneValue ) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
atomic if
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
boolean member
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( obj.prop != 0 )
with expansion:
  0x<hex digits> != 0

-------------------------------------------------------------------------------
checkedElse
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( flag )
with expansion:
  true

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( testCheckedElse( true ) )
with expansion:
  true

-------------------------------------------------------------------------------
checkedElse, failing
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECKED_ELSE( flag )
with expansion:
  false

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( testCheckedElse( false ) )
with expansion:
  false

-------------------------------------------------------------------------------
checkedIf
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_IF( flag )
with expansion:
  true

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( testCheckedIf( true ) )
with expansion:
  true

-------------------------------------------------------------------------------
checkedIf, failing
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECKED_IF( flag )
with expansion:
  false

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( testCheckedIf( false ) )
with expansion:
  false

-------------------------------------------------------------------------------
comparisons between const int variables
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

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

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

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

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

-------------------------------------------------------------------------------
comparisons between int variables
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_char_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_short_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_int_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_long_var )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
even more nested SECTION tests
  c
  d (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
even more nested SECTION tests
  c
  e (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
even more nested SECTION tests
  f (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
first tag
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'first tag'

loose text artifact
-------------------------------------------------------------------------------
has printf
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................


No assertions in test case 'has printf'

-------------------------------------------------------------------------------
just failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Previous info should not be seen

-------------------------------------------------------------------------------
just failure after unscoped info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  previous unscoped info SHOULD not be seen

-------------------------------------------------------------------------------
just info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in test case 'just info'

-------------------------------------------------------------------------------
just unscoped info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in test case 'just unscoped info'

-------------------------------------------------------------------------------
long long
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( l == std::numeric_limits<long long>::max() )
with expansion:
  9223372036854775807 (0x<hex digits>)
  ==
  9223372036854775807 (0x<hex digits>)

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( b > a )
with expansion:
  1 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  2 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  3 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  4 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  5 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  6 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 7
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  7 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 8
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  8 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 9
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  9 > 1

-------------------------------------------------------------------------------
looped tests
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[0] (1) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[1] (1) is even

Misc.tests.cpp:<line number>: PASSED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  0 == 0
with message:
  Testing if fib[2] (2) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[3] (3) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[4] (5) is even

Misc.tests.cpp:<line number>: PASSED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  0 == 0
with message:
  Testing if fib[5] (8) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[6] (13) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[7] (21) is even

-------------------------------------------------------------------------------
mix info, unscoped info and warning
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:
  info
  unscoped info
  and warn may mix

Message.tests.cpp:<line number>: warning:
  info
  unscoped info
  they are not cleared after warnings


No assertions in test case 'mix info, unscoped info and warning'

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( a == b )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  less than
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a < b )
with expansion:
  1 < 2

-------------------------------------------------------------------------------
nested SECTION tests
  doesn't equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( b != a )
with expansion:
  2 != 1

-------------------------------------------------------------------------------
nested SECTION tests
  doesn't equal
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

-------------------------------------------------------------------------------
non streamable - with conv. op
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( s == "7" )
with expansion:
  "7" == "7"

-------------------------------------------------------------------------------
non-copyable objects
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( ti == typeid(int) )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
not allowed
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
not prints unscoped info from previous failures
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen only for the FIRST assertion IF info is printed for passing
  assertions

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen only for the SECOND assertion IF info is printed for passing
  assertions

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with message:
  this SHOULD be seen

-------------------------------------------------------------------------------
null strings
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( makeString( false ) != static_cast<char*>(0) )
with expansion:
  "valid string" != {null string}

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( makeString( true ) == static_cast<char*>(0) )
with expansion:
  {null string} == {null string}

-------------------------------------------------------------------------------
null_ptr
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
pair<pair<int,const char *,pair<std::string,int> > -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" )
with expansion:
  "{ { 42, "Arthur" }, { "Ford", 24 } }"
  ==
  "{ { 42, "Arthur" }, { "Ford", 24 } }"

-------------------------------------------------------------------------------
parseEnums
  No enums
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) )
with expansion:
  {  } Equals: {  }

-------------------------------------------------------------------------------
parseEnums
  One enum value
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

-------------------------------------------------------------------------------
parseEnums
  Multiple enum values
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) )
with expansion:
  { Value1, Value2 } Equals: { Value1, Value2 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) )
with expansion:
  { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) )
with expansion:
  { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }

-------------------------------------------------------------------------------
pointer to class
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
print unscoped info if passing unscoped info is printed
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen IF info is printed for passing assertions

-------------------------------------------------------------------------------
prints unscoped info on failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with messages:
  this SHOULD be seen
  this SHOULD also be seen

-------------------------------------------------------------------------------
prints unscoped info only for the first assertion
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with message:
  this SHOULD be seen only ONCE

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )
with message:
  this MAY also be seen only ONCE IF info is printed for passing assertions

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )

-------------------------------------------------------------------------------
random SECTION tests
  doesn't equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( b != a )
with expansion:
  2 != 1

-------------------------------------------------------------------------------
random SECTION tests
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

-------------------------------------------------------------------------------
replaceInPlace
  replace single char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "b", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "azcdefcg" )
with expansion:
  "azcdefcg" == "azcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  replace two chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "c", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "abzdefzg" )
with expansion:
  "abzdefzg" == "abzdefzg"

-------------------------------------------------------------------------------
replaceInPlace
  replace first char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "a", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "zbcdefcg" )
with expansion:
  "zbcdefcg" == "zbcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  replace last char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "g", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "abcdefcz" )
with expansion:
  "abcdefcz" == "abcdefcz"

-------------------------------------------------------------------------------
replaceInPlace
  replace all chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, letters, "replaced") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "replaced" )
with expansion:
  "replaced" == "replaced"

-------------------------------------------------------------------------------
replaceInPlace
  replace no chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( Catch::replaceInPlace(letters, "x", "z") )
with expansion:
  !false

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == letters )
with expansion:
  "abcdefcg" == "abcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  escape '
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(s, "'", "|'") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( s == "didn|'t" )
with expansion:
  "didn|'t" == "didn|'t"

-------------------------------------------------------------------------------
second tag
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'second tag'

-------------------------------------------------------------------------------
send a single char to INFO
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with message:
  3

-------------------------------------------------------------------------------
sends information to INFO
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with messages:
  hi
  i := 7

-------------------------------------------------------------------------------
shortened hide tags are split apart
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testcase.tags, Catch::VectorContains(std::string("magic-tag")) && Catch::VectorContains(std::string(".")) )
with expansion:
  { "!hide", ".", "magic-tag" } ( Contains: "magic-tag" and Contains: "." )

-------------------------------------------------------------------------------
splitString
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("", ','), Equals(std::vector<StringRef>()) )
with expansion:
  {  } Equals: {  }

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) )
with expansion:
  { abc } Equals: { abc }

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) )
with expansion:
  { abc, def } Equals: { abc, def }

-------------------------------------------------------------------------------
stacks unscoped info in loops
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with messages:
  Count 1 to 3...
  1
  2
  3

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with messages:
  Count 4 to 6...
  4
  5
  6

-------------------------------------------------------------------------------
std::map is convertible string
  empty
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( emptyMap ) == "{  }" )
with expansion:
  "{  }" == "{  }"

-------------------------------------------------------------------------------
std::map is convertible string
  single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" )
with expansion:
  "{ { "one", 1 } }" == "{ { "one", 1 } }"

-------------------------------------------------------------------------------
std::map is convertible string
  several items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" )
with expansion:
  "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
  ==
  "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"

-------------------------------------------------------------------------------
std::pair<int,const std::string> -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" )
with expansion:
  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"

-------------------------------------------------------------------------------
std::pair<int,std::string> -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" )
with expansion:
  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"

-------------------------------------------------------------------------------
std::set is convertible string
  empty
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( emptySet ) == "{  }" )
with expansion:
  "{  }" == "{  }"

-------------------------------------------------------------------------------
std::set is convertible string
  single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( set ) == "{ \"one\" }" )
with expansion:
  "{ "one" }" == "{ "one" }"

-------------------------------------------------------------------------------
std::set is convertible string
  several items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" )
with expansion:
  "{ "abc", "def", "ghi" }"
  ==
  "{ "abc", "def", "ghi" }"

-------------------------------------------------------------------------------
std::vector<std::pair<std::string,int> > -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" )
with expansion:
  "{ { "green", 55 } }"
  ==
  "{ { "green", 55 } }"

-------------------------------------------------------------------------------
string literals of different sizes can be compared
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: FAILED:
  REQUIRE( std::string( "first" ) == "second" )
with expansion:
  "first" == "second"

-------------------------------------------------------------------------------
stringify ranges
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" )
with expansion:
  "op<<(streamable_range)"
  ==
  "op<<(streamable_range)"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" )
with expansion:
  "stringmaker(streamable_range)"
  ==
  "stringmaker(streamable_range)"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" )
with expansion:
  "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(disabled_range{}) == "{ !!! }" )
with expansion:
  "{ !!! }" == "{ !!! }"

-------------------------------------------------------------------------------
stringify( has_maker )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" )
with expansion:
  "StringMaker<has_maker>"
  ==
  "StringMaker<has_maker>"

-------------------------------------------------------------------------------
stringify( has_maker_and_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" )
with expansion:
  "StringMaker<has_maker_and_operator>"
  ==
  "StringMaker<has_maker_and_operator>"

-------------------------------------------------------------------------------
stringify( has_neither )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(item) == "{ !!! }" )
with expansion:
  "{ !!! }" == "{ !!! }"

-------------------------------------------------------------------------------
stringify( has_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" )
with expansion:
  "operator<<( has_operator )"
  ==
  "operator<<( has_operator )"

-------------------------------------------------------------------------------
stringify( has_template_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" )
with expansion:
  "operator<<( has_template_operator )"
  ==
  "operator<<( has_template_operator )"

-------------------------------------------------------------------------------
stringify( vectors<has_maker> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" )
with expansion:
  "{ StringMaker<has_maker> }"
  ==
  "{ StringMaker<has_maker> }"

-------------------------------------------------------------------------------
stringify( vectors<has_maker_and_operator> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" )
with expansion:
  "{ StringMaker<has_maker_and_operator> }"
  ==
  "{ StringMaker<has_maker_and_operator> }"

-------------------------------------------------------------------------------
stringify( vectors<has_operator> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" )
with expansion:
  "{ operator<<( has_operator ) }"
  ==
  "{ operator<<( has_operator ) }"

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  4 == 4

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
thrown std::strings are translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  Why would you throw a std::string?

-------------------------------------------------------------------------------
toString on const wchar_t const pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on const wchar_t pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on wchar_t const pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on wchar_t returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString(enum class w/operator<<)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "E2/V0" )
with expansion:
  "E2/V0" == "E2/V0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "E2/V1" )
with expansion:
  "E2/V1" == "E2/V1"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e3) == "Unknown enum value 10" )
with expansion:
  "Unknown enum value 10"
  ==
  "Unknown enum value 10"

-------------------------------------------------------------------------------
toString(enum class)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "0" )
with expansion:
  "0" == "0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "1" )
with expansion:
  "1" == "1"

-------------------------------------------------------------------------------
toString(enum w/operator<<)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "E2{0}" )
with expansion:
  "E2{0}" == "E2{0}"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "E2{1}" )
with expansion:
  "E2{1}" == "E2{1}"

-------------------------------------------------------------------------------
toString(enum)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "0" )
with expansion:
  "0" == "0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "1" )
with expansion:
  "1" == "1"

-------------------------------------------------------------------------------
tuple<>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ }" == ::Catch::Detail::stringify(type{}) )
with expansion:
  "{ }" == "{ }"

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ }" == ::Catch::Detail::stringify(value) )
with expansion:
  "{ }" == "{ }"

-------------------------------------------------------------------------------
tuple<float,int>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) )
with expansion:
  "1.2f" == "1.2f"

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) )
with expansion:
  "{ 1.2f, 0 }" == "{ 1.2f, 0 }"

-------------------------------------------------------------------------------
tuple<int>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ 0 }" == ::Catch::Detail::stringify(type{0}) )
with expansion:
  "{ 0 }" == "{ 0 }"

-------------------------------------------------------------------------------
tuple<0,int,const char *>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ 0, 42, \"Catch me\" }" == ::Catch::Detail::stringify(value) )
with expansion:
  "{ 0, 42, "Catch me" }"
  ==
  "{ 0, 42, "Catch me" }"

-------------------------------------------------------------------------------
tuple<string,string>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) )
with expansion:
  "{ "hello", "world" }"
  ==
  "{ "hello", "world" }"

-------------------------------------------------------------------------------
tuple<tuple<int>,tuple<>,float>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) )
with expansion:
  "{ { 42 }, { }, 1.2f }"
  ==
  "{ { 42 }, { }, 1.2f }"

-------------------------------------------------------------------------------
vec<vec<string,alloc>> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(v) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" )
with expansion:
  "{ { "hello" }, { "world" } }"
  ==
  "{ { "hello" }, { "world" } }"

-------------------------------------------------------------------------------
vector<bool> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{ true }" )
with expansion:
  "{ true }" == "{ true }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{ true, false }" )
with expansion:
  "{ true, false }" == "{ true, false }"

-------------------------------------------------------------------------------
vector<int,allocator> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
vector<int> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
vector<string> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\" }" )
with expansion:
  "{ "hello" }" == "{ "hello" }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" )
with expansion:
  "{ "hello", "world" }"
  ==
  "{ "hello", "world" }"

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
xmlentitycheck
  embedded xml: <test>it should be possible to embed xml characters, such as <,
                " or &, or even whole <xml>documents</xml> within an attribute
                </test>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

-------------------------------------------------------------------------------
xmlentitycheck
  encoded chars: these should all be encoded: &&&"""<<<&"<<&"
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

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

===============================================================================
test cases:  306 |  216 passed |  86 failed |  4 failed as expected
assertions: 1693 | 1524 passed | 148 failed | 21 failed as expected

