aboutsummaryrefslogtreecommitdiffstats
path: root/tests/SelfTest/Baselines
diff options
context:
space:
mode:
Diffstat (limited to 'tests/SelfTest/Baselines')
-rw-r--r--tests/SelfTest/Baselines/automake.std.approved.txt168
-rw-r--r--tests/SelfTest/Baselines/automake.sw.approved.txt430
-rw-r--r--tests/SelfTest/Baselines/automake.sw.multi.approved.txt419
-rw-r--r--tests/SelfTest/Baselines/compact.sw.approved.txt2860
-rw-r--r--tests/SelfTest/Baselines/compact.sw.multi.approved.txt2849
-rw-r--r--tests/SelfTest/Baselines/console.std.approved.txt1615
-rw-r--r--tests/SelfTest/Baselines/console.sw.approved.txt19017
-rw-r--r--tests/SelfTest/Baselines/console.sw.multi.approved.txt19006
-rw-r--r--tests/SelfTest/Baselines/console.swa4.approved.txt956
-rw-r--r--tests/SelfTest/Baselines/default.sw.multi.approved.txt11
-rw-r--r--tests/SelfTest/Baselines/junit.sw.approved.txt2305
-rw-r--r--tests/SelfTest/Baselines/junit.sw.multi.approved.txt2304
-rw-r--r--tests/SelfTest/Baselines/sonarqube.sw.approved.txt2317
-rw-r--r--tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt2316
-rw-r--r--tests/SelfTest/Baselines/tap.sw.approved.txt4571
-rw-r--r--tests/SelfTest/Baselines/tap.sw.multi.approved.txt4560
-rw-r--r--tests/SelfTest/Baselines/teamcity.sw.approved.txt1024
-rw-r--r--tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt1023
-rw-r--r--tests/SelfTest/Baselines/xml.sw.approved.txt21976
-rw-r--r--tests/SelfTest/Baselines/xml.sw.multi.approved.txt21975
20 files changed, 111702 insertions, 0 deletions
diff --git a/tests/SelfTest/Baselines/automake.std.approved.txt b/tests/SelfTest/Baselines/automake.std.approved.txt
new file mode 100644
index 0000000..057be06
--- /dev/null
+++ b/tests/SelfTest/Baselines/automake.std.approved.txt
@@ -0,0 +1,168 @@
+:test-result: PASS # A test name that starts with a #
+:test-result: PASS #542
+:test-result: PASS #809
+:test-result: FAIL 'Not' checks that should fail
+:test-result: PASS 'Not' checks that should succeed
+:test-result: PASS (unimplemented) static bools can be evaluated
+:test-result: FAIL A METHOD_AS_TEST_CASE based test run that fails
+:test-result: PASS A METHOD_AS_TEST_CASE based test run that succeeds
+:test-result: FAIL A TEST_CASE_METHOD based test run that fails
+:test-result: PASS A TEST_CASE_METHOD based test run that succeeds
+:test-result: FAIL A couple of nested sections followed by a failure
+:test-result: FAIL A failing expression with a non streamable type is still captured
+:test-result: PASS AllOf matcher
+:test-result: PASS An empty test with no assertions
+:test-result: PASS An expression with side-effects should only be evaluated once
+:test-result: FAIL An unchecked exception reports the line of the last assertion
+:test-result: PASS Anonymous test case 1
+:test-result: PASS AnyOf matcher
+:test-result: PASS Approximate PI
+:test-result: PASS Approximate comparisons with different epsilons
+:test-result: PASS Approximate comparisons with floats
+:test-result: PASS Approximate comparisons with ints
+:test-result: PASS Approximate comparisons with mixed numeric types
+:test-result: PASS Assertions then sections
+:test-result: PASS Character pretty printing
+:test-result: PASS Comparing function pointers
+:test-result: PASS Comparing member function pointers
+:test-result: PASS Comparisons between ints where one side is computed
+:test-result: PASS Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+:test-result: PASS Comparisons with int literals don't warn when mixing signed/ unsigned
+:test-result: FAIL Contains string matcher
+:test-result: FAIL Custom exceptions can be translated when testing for nothrow
+:test-result: FAIL Custom exceptions can be translated when testing for throwing as something else
+:test-result: FAIL Custom std-exceptions can be custom translated
+:test-result: PASS Demonstrate that a non-const == is not used
+:test-result: FAIL EndsWith string matcher
+:test-result: XFAIL Equality checks that should fail
+:test-result: PASS Equality checks that should succeed
+:test-result: PASS Equals
+:test-result: FAIL Equals string matcher
+:test-result: PASS Exception messages can be tested for
+:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
+:test-result: FAIL FAIL aborts the test
+:test-result: FAIL FAIL does not require an argument
+:test-result: PASS Factorials are computed
+:test-result: PASS Generator over a range of pairs
+:test-result: PASS Generators over two ranges
+:test-result: PASS Greater-than inequalities with different epsilons
+:test-result: PASS INFO and WARN do not abort tests
+:test-result: FAIL INFO gets logged on failure
+:test-result: FAIL INFO gets logged on failure, even if captured before successful assertions
+:test-result: XFAIL Inequality checks that should fail
+:test-result: PASS Inequality checks that should succeed
+:test-result: PASS Less-than inequalities with different epsilons
+:test-result: PASS Long strings can be wrapped
+:test-result: PASS Long text is truncated
+:test-result: PASS ManuallyRegistered
+:test-result: PASS Matchers can be (AllOf) composed with the && operator
+:test-result: PASS Matchers can be (AnyOf) composed with the || operator
+:test-result: PASS Matchers can be composed with both && and ||
+:test-result: FAIL Matchers can be composed with both && and || - failing
+:test-result: PASS Matchers can be negated (Not) with the ! operator
+:test-result: FAIL Matchers can be negated (Not) with the ! operator - failing
+:test-result: FAIL Mismatching exception messages failing the test
+:test-result: PASS Nice descriptive name
+:test-result: FAIL Non-std exceptions can be translated
+:test-result: PASS NotImplemented exception
+:test-result: PASS Objects that evaluated in boolean contexts can be checked
+:test-result: PASS Operators at different namespace levels not hijacked by Koenig lookup
+:test-result: FAIL Ordering comparison checks that should fail
+:test-result: PASS Ordering comparison checks that should succeed
+:test-result: FAIL Output from all sections is reported
+:test-result: PASS Parse test names and tags
+:test-result: PASS Parsing a std::pair
+:test-result: PASS Pointers can be compared to null
+:test-result: PASS Pointers can be converted to strings
+:test-result: PASS Process can be configured on command line
+:test-result: FAIL SCOPED_INFO is reset for each loop
+:test-result: PASS SUCCEED counts as a test pass
+:test-result: PASS SUCCESS does not require an argument
+:test-result: PASS Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+:test-result: PASS Scenario: Do that thing with the thing
+:test-result: PASS Scenario: This is a really long scenario name to see how the list command deals with wrapping
+:test-result: PASS Scenario: Vector resizing affects size and capacity
+A string sent directly to stdout
+A string sent directly to stderr
+:test-result: PASS Sends stuff to stdout and stderr
+:test-result: PASS Some simple comparisons between doubles
+Message from section one
+Message from section two
+:test-result: PASS Standard output from all sections is reported
+:test-result: FAIL StartsWith string matcher
+:test-result: PASS String matchers
+hello
+hello
+:test-result: PASS Strings can be rendered with colour
+:test-result: FAIL Tabs and newlines show in output
+:test-result: PASS Tag alias can be registered against tag patterns
+:test-result: PASS Test case with one argument
+:test-result: PASS Test enum bit values
+:test-result: PASS Text can be formatted using the Text class
+:test-result: PASS The NO_FAIL macro reports a failure but does not fail the test
+:test-result: FAIL This test 'should' fail but doesn't
+:test-result: PASS Tracker
+:test-result: FAIL Unexpected exceptions can be translated
+:test-result: PASS Use a custom approx
+:test-result: PASS Variadic macros
+:test-result: PASS When checked exceptions are thrown they can be expected or unexpected
+:test-result: FAIL When unchecked exceptions are thrown directly they are always failures
+:test-result: FAIL When unchecked exceptions are thrown during a CHECK the test should continue
+:test-result: FAIL When unchecked exceptions are thrown during a REQUIRE the test should abort fail
+:test-result: FAIL When unchecked exceptions are thrown from functions they are always failures
+:test-result: FAIL When unchecked exceptions are thrown from sections they are always failures
+:test-result: PASS When unchecked exceptions are thrown, but caught, they do not affect the test
+:test-result: PASS Where the LHS is not a simple value
+:test-result: PASS Where there is more to the expression after the RHS
+:test-result: PASS X/level/0/a
+:test-result: PASS X/level/0/b
+:test-result: PASS X/level/1/a
+:test-result: PASS X/level/1/b
+:test-result: PASS XmlEncode
+:test-result: PASS atomic if
+:test-result: PASS boolean member
+:test-result: PASS checkedElse
+:test-result: FAIL checkedElse, failing
+:test-result: PASS checkedIf
+:test-result: FAIL checkedIf, failing
+:test-result: PASS comparisons between const int variables
+:test-result: PASS comparisons between int variables
+:test-result: PASS even more nested SECTION tests
+:test-result: PASS first tag
+spanner:test-result: PASS has printf
+:test-result: FAIL just failure
+:test-result: PASS just info
+:test-result: FAIL looped SECTION tests
+:test-result: FAIL looped tests
+:test-result: FAIL more nested SECTION tests
+:test-result: PASS nested SECTION tests
+:test-result: PASS non streamable - with conv. op
+:test-result: PASS not allowed
+:test-result: PASS null strings
+:test-result: PASS pair<pair<int,const char *,pair<std::string,int> > -> toString
+:test-result: PASS pointer to class
+:test-result: PASS random SECTION tests
+:test-result: PASS replaceInPlace
+:test-result: PASS second tag
+:test-result: FAIL send a single char to INFO
+:test-result: FAIL sends information to INFO
+:test-result: PASS std::pair<int,const std::string> -> toString
+:test-result: PASS std::pair<int,std::string> -> toString
+:test-result: PASS std::vector<std::pair<std::string,int> > -> toString
+:test-result: FAIL string literals of different sizes can be compared
+:test-result: PASS toString on const wchar_t const pointer returns the string contents
+:test-result: PASS toString on const wchar_t pointer returns the string contents
+:test-result: PASS toString on wchar_t const pointer returns the string contents
+:test-result: PASS toString on wchar_t returns the string contents
+:test-result: PASS toString( has_maker )
+:test-result: PASS toString( has_maker_and_toString )
+:test-result: PASS toString( has_toString )
+:test-result: PASS toString( vectors<has_maker )
+:test-result: SKIP toString( vectors<has_maker_and_toString )
+:test-result: SKIP toString( vectors<has_toString )
+:test-result: PASS toString(enum w/operator<<)
+:test-result: PASS toString(enum)
+:test-result: PASS vector<int> -> toString
+:test-result: PASS vector<string> -> toString
+:test-result: PASS vectors can be sized and resized
+:test-result: PASS xmlentitycheck
diff --git a/tests/SelfTest/Baselines/automake.sw.approved.txt b/tests/SelfTest/Baselines/automake.sw.approved.txt
new file mode 100644
index 0000000..7be343a
--- /dev/null
+++ b/tests/SelfTest/Baselines/automake.sw.approved.txt
@@ -0,0 +1,430 @@
+:test-result: PASS # A test name that starts with a #
+:test-result: PASS #1027: Bitfields can be captured
+:test-result: PASS #1147
+:test-result: PASS #1175 - Hidden Test
+:test-result: PASS #1238
+:test-result: PASS #1245
+:test-result: PASS #1319: Sections can have description (even if it is not saved
+:test-result: PASS #1403
+:test-result: FAIL #1455 - INFO and WARN can start with a linebreak
+This would not be caught previously
+Nor would this
+:test-result: FAIL #1514: stderr/stdout is not captured in tests aborted by an exception
+:test-result: PASS #1548
+:test-result: PASS #1905 -- test spec parser properly clears internal state between compound tests
+:test-result: PASS #1912 -- test spec parser handles escaping
+:test-result: PASS #1913 - GENERATE inside a for loop should not keep recreating the generator
+:test-result: PASS #1913 - GENERATEs can share a line
+:test-result: PASS #1938 - GENERATE after a section
+:test-result: PASS #1938 - Section followed by flat generate
+:test-result: PASS #1938 - flat generate
+:test-result: PASS #1938 - mixed sections and generates
+:test-result: PASS #1938 - nested generate
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+:test-result: PASS #2152 - ULP checks between differently signed values were wrong - double
+:test-result: PASS #2152 - ULP checks between differently signed values were wrong - float
+:test-result: XFAIL #2615 - Throwing in constructor generator fails test case but does not abort
+:test-result: XFAIL #748 - captures with unexpected exceptions
+:test-result: PASS #809
+:test-result: PASS #833
+:test-result: XFAIL #835 -- errno should not be touched by Catch2
+:test-result: PASS #872
+:test-result: PASS #961 -- Dynamically created sections should all be reported
+:test-result: FAIL 'Not' checks that should fail
+:test-result: PASS 'Not' checks that should succeed
+:test-result: PASS (unimplemented) static bools can be evaluated
+:test-result: PASS 3x3x3 ints
+:test-result: FAIL A METHOD_AS_TEST_CASE based test run that fails
+:test-result: PASS A METHOD_AS_TEST_CASE based test run that succeeds
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
+:test-result: FAIL A TEST_CASE_METHOD based test run that fails
+:test-result: PASS A TEST_CASE_METHOD based test run that succeeds
+:test-result: FAIL A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+:test-result: PASS A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+:test-result: PASS A Template product test case - Foo<float>
+:test-result: PASS A Template product test case - Foo<int>
+:test-result: PASS A Template product test case - std::vector<float>
+:test-result: PASS A Template product test case - std::vector<int>
+:test-result: PASS A Template product test case with array signature - Bar<float, 42>
+:test-result: PASS A Template product test case with array signature - Bar<int, 9>
+:test-result: PASS A Template product test case with array signature - std::array<float, 42>
+:test-result: PASS A Template product test case with array signature - std::array<int, 9>
+:test-result: PASS A comparison that uses literals instead of the normal constructor
+:test-result: FAIL A couple of nested sections followed by a failure
+:test-result: FAIL A failing expression with a non streamable type is still captured
+:test-result: PASS Absolute margin
+:test-result: FAIL An empty test with no assertions
+:test-result: PASS An expression with side-effects should only be evaluated once
+:test-result: FAIL An unchecked exception reports the line of the last assertion
+:test-result: PASS Anonymous test case 1
+:test-result: PASS Approx setters validate their arguments
+:test-result: PASS Approx with exactly-representable margin
+:test-result: PASS Approximate PI
+:test-result: PASS Approximate comparisons with different epsilons
+:test-result: PASS Approximate comparisons with floats
+:test-result: PASS Approximate comparisons with ints
+:test-result: PASS Approximate comparisons with mixed numeric types
+:test-result: PASS Arbitrary predicate matcher
+:test-result: PASS Assertion macros support bit operators and bool conversions
+:test-result: PASS Assertions then sections
+:test-result: PASS Basic use of the Contains range matcher
+:test-result: PASS Basic use of the Empty range matcher
+:test-result: PASS CAPTURE can deal with complex expressions
+:test-result: PASS CAPTURE can deal with complex expressions involving commas
+:test-result: PASS CAPTURE parses string and character constants
+:test-result: PASS Capture and info messages
+:test-result: PASS CaseInsensitiveEqualsTo is case insensitive
+:test-result: PASS CaseInsensitiveLess is case insensitive
+:test-result: PASS Character pretty printing
+:test-result: PASS Clara::Arg does not crash on incomplete input
+:test-result: PASS Clara::Arg supports single-arg parse the way Opt does
+:test-result: PASS Clara::Opt supports accept-many lambdas
+:test-result: PASS ColourGuard behaviour
+:test-result: PASS Combining MatchAllOfGeneric does not nest
+:test-result: PASS Combining MatchAnyOfGeneric does not nest
+:test-result: PASS Combining MatchNotOfGeneric does not nest
+:test-result: PASS Combining concrete matchers does not use templated matchers
+:test-result: PASS Combining only templated matchers
+:test-result: PASS Combining templated and concrete matchers
+:test-result: PASS Combining templated matchers
+:test-result: PASS Commas in various macros are allowed
+:test-result: PASS Comparing function pointers
+:test-result: PASS Comparison ops
+:test-result: PASS Comparison with explicitly convertible types
+:test-result: PASS Comparisons between ints where one side is computed
+:test-result: PASS Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+:test-result: PASS Comparisons with int literals don't warn when mixing signed/ unsigned
+:test-result: PASS Composed generic matchers shortcircuit
+:test-result: PASS Composed matchers shortcircuit
+:test-result: FAIL Contains string matcher
+:test-result: PASS Copy and then generate a range
+:test-result: PASS Cout stream properly declares it writes to stdout
+:test-result: FAIL Custom exceptions can be translated when testing for nothrow
+:test-result: FAIL Custom exceptions can be translated when testing for throwing as something else
+:test-result: FAIL Custom std-exceptions can be custom translated
+:test-result: PASS Default scale is invisible to comparison
+:test-result: PASS Directly creating an EnumInfo
+:test-result: SKIP Empty generators can SKIP in constructor
+:test-result: PASS Empty stream name opens cout stream
+:test-result: FAIL EndsWith string matcher
+:test-result: PASS Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+:test-result: PASS Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+:test-result: PASS Epsilon only applies to Approx's value
+:test-result: XFAIL Equality checks that should fail
+:test-result: PASS Equality checks that should succeed
+:test-result: PASS Equals
+:test-result: FAIL Equals string matcher
+:test-result: PASS Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+:test-result: FAIL Exception matchers that fail
+:test-result: PASS Exception matchers that succeed
+:test-result: PASS Exception message can be matched
+:test-result: PASS Exception messages can be tested for
+:test-result: PASS Exceptions matchers
+:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
+:test-result: FAIL FAIL aborts the test
+:test-result: FAIL FAIL does not require an argument
+:test-result: FAIL FAIL_CHECK does not abort the test
+:test-result: PASS Factorials are computed
+:test-result: PASS Filter generator throws exception for empty generator
+:test-result: PASS Floating point matchers: double
+:test-result: PASS Floating point matchers: float
+:test-result: PASS GENERATE can combine literals and generators
+:test-result: PASS Generators -- adapters
+:test-result: PASS Generators -- simple
+:test-result: PASS Generators internals
+:test-result: PASS Greater-than inequalities with different epsilons
+:test-result: PASS Hashers with different seed produce different hash with same test case
+:test-result: PASS Hashers with same seed produce same hash
+:test-result: PASS Hashing different test cases produces different result
+:test-result: PASS Hashing test case produces same hash across multiple calls
+:test-result: FAIL INFO and UNSCOPED_INFO can stream multiple arguments
+:test-result: FAIL INFO and WARN do not abort tests
+:test-result: FAIL INFO gets logged on failure
+:test-result: FAIL INFO gets logged on failure, even if captured before successful assertions
+:test-result: FAIL INFO is reset for each loop
+:test-result: XFAIL Incomplete AssertionHandler
+:test-result: XFAIL Inequality checks that should fail
+:test-result: PASS Inequality checks that should succeed
+:test-result: PASS JsonWriter
+:test-result: PASS JsonWriter escapes charaters in strings properly
+:test-result: PASS Lambdas in assertions
+:test-result: PASS Less-than inequalities with different epsilons
+:test-result: PASS ManuallyRegistered
+:test-result: PASS Matchers can be (AllOf) composed with the && operator
+:test-result: PASS Matchers can be (AnyOf) composed with the || operator
+:test-result: PASS Matchers can be composed with both && and ||
+:test-result: FAIL Matchers can be composed with both && and || - failing
+:test-result: PASS Matchers can be negated (Not) with the ! operator
+:test-result: FAIL Matchers can be negated (Not) with the ! operator - failing
+:test-result: XFAIL Mayfail test case with nested sections
+:test-result: FAIL Mismatching exception messages failing the test
+:test-result: PASS Multireporter calls reporters and listeners in correct order
+:test-result: PASS Multireporter updates ReporterPreferences properly
+:test-result: PASS Nested generators and captured variables
+:test-result: FAIL Nice descriptive name
+:test-result: FAIL Non-std exceptions can be translated
+:test-result: PASS Objects that evaluated in boolean contexts can be checked
+:test-result: PASS Optionally static assertions
+:test-result: FAIL Ordering comparison checks that should fail
+:test-result: PASS Ordering comparison checks that should succeed
+:test-result: PASS Our PCG implementation provides expected results for known seeds
+:test-result: FAIL Output from all sections is reported
+:test-result: PASS Overloaded comma or address-of operators are not used
+:test-result: PASS Parse uints
+:test-result: PASS Parsed tags are matched case insensitive
+:test-result: PASS Parsing sharding-related cli flags
+:test-result: PASS Parsing tags with non-alphabetical characters is pass-through
+:test-result: PASS Parsing warnings
+:test-result: PASS Pointers can be compared to null
+:test-result: PASS Precision of floating point stringification can be set
+:test-result: PASS Predicate matcher can accept const char*
+:test-result: PASS Process can be configured on command line
+:test-result: PASS Product with differing arities - std::tuple<int, double, float>
+:test-result: PASS Product with differing arities - std::tuple<int, double>
+:test-result: PASS Product with differing arities - std::tuple<int>
+:test-result: PASS Random seed generation accepts known methods
+:test-result: PASS Random seed generation reports unknown methods
+:test-result: PASS Range type with sentinel
+:test-result: FAIL Reconstruction should be based on stringification: #914
+:test-result: FAIL Regex string matcher
+:test-result: PASS Registering reporter with '::' in name fails
+:test-result: PASS Regression test #1
+:test-result: PASS Reporter's write listings to provided stream
+:test-result: PASS Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla
+:test-result: PASS SUCCEED counts as a test pass
+:test-result: PASS SUCCEED does not require an argument
+:test-result: PASS Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+:test-result: PASS Scenario: Do that thing with the thing
+:test-result: PASS Scenario: This is a really long scenario name to see how the list command deals with wrapping
+:test-result: PASS Scenario: Vector resizing affects size and capacity
+A string sent directly to stdout
+A string sent directly to stderr
+A string sent to stderr via clog
+:test-result: FAIL Sends stuff to stdout and stderr
+:test-result: PASS Some simple comparisons between doubles
+Message from section one
+Message from section two
+:test-result: FAIL Standard output from all sections is reported
+:test-result: FAIL StartsWith string matcher
+:test-result: PASS Static arrays are convertible to string
+:test-result: PASS String matchers
+:test-result: PASS StringRef
+:test-result: PASS StringRef at compilation time
+:test-result: PASS Stringifying char arrays with statically known sizes - char
+:test-result: PASS Stringifying char arrays with statically known sizes - signed char
+:test-result: PASS Stringifying char arrays with statically known sizes - unsigned char
+:test-result: PASS Stringifying std::chrono::duration helpers
+:test-result: PASS Stringifying std::chrono::duration with weird ratios
+:test-result: PASS Stringifying std::chrono::time_point<system_clock>
+:test-result: FAIL Tabs and newlines show in output
+:test-result: PASS Tag alias can be registered against tag patterns
+:test-result: PASS Tags with spaces and non-alphanumerical characters are accepted
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 0
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 1
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 2
+:test-result: PASS Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0
+:test-result: PASS Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1
+:test-result: PASS Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0
+:test-result: PASS Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 0
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 1
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 2
+:test-result: PASS TemplateTest: vectors can be sized and resized - float
+:test-result: PASS TemplateTest: vectors can be sized and resized - int
+:test-result: PASS TemplateTest: vectors can be sized and resized - std::string
+:test-result: PASS TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - float,4
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - int,5
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - std::string,15
+:test-result: PASS Test case with identical tags keeps just one
+:test-result: PASS Test case with one argument
+:test-result: PASS Test enum bit values
+:test-result: PASS Test with special, characters "in name
+:test-result: PASS Testing checked-if
+:test-result: XFAIL Testing checked-if 2
+:test-result: XFAIL Testing checked-if 3
+:test-result: XFAIL Testing checked-if 4
+:test-result: XFAIL Testing checked-if 5
+:test-result: FAIL The NO_FAIL macro reports a failure but does not fail the test
+:test-result: PASS The default listing implementation write to provided stream
+:test-result: FAIL This test 'should' fail but doesn't
+:test-result: FAIL Thrown string literals are translated
+:test-result: PASS Tracker
+:test-result: PASS Trim strings
+:test-result: PASS Type conversions of RangeEquals and similar
+:test-result: FAIL Unexpected exceptions can be translated
+:test-result: PASS Upcasting special member functions
+:test-result: PASS Usage of AllMatch range matcher
+:test-result: PASS Usage of AllTrue range matcher
+:test-result: PASS Usage of AnyMatch range matcher
+:test-result: PASS Usage of AnyTrue range matcher
+:test-result: PASS Usage of NoneMatch range matcher
+:test-result: PASS Usage of NoneTrue range matcher
+:test-result: PASS Usage of RangeEquals range matcher
+:test-result: PASS Usage of UnorderedRangeEquals range matcher
+:test-result: PASS Usage of the SizeIs range matcher
+:test-result: PASS Use a custom approx
+:test-result: PASS Variadic macros
+:test-result: PASS Vector Approx matcher
+:test-result: FAIL Vector Approx matcher -- failing
+:test-result: PASS Vector matchers
+:test-result: FAIL Vector matchers that fail
+:test-result: PASS When checked exceptions are thrown they can be expected or unexpected
+:test-result: FAIL When unchecked exceptions are thrown directly they are always failures
+:test-result: FAIL When unchecked exceptions are thrown during a CHECK the test should continue
+:test-result: FAIL When unchecked exceptions are thrown during a REQUIRE the test should abort fail
+:test-result: FAIL When unchecked exceptions are thrown from functions they are always failures
+:test-result: FAIL When unchecked exceptions are thrown from sections they are always failures
+:test-result: FAIL When unchecked exceptions are thrown, but caught, they do not affect the test
+:test-result: PASS X/level/0/a
+:test-result: PASS X/level/0/b
+:test-result: PASS X/level/1/a
+:test-result: PASS X/level/1/b
+:test-result: PASS XmlEncode
+:test-result: PASS XmlWriter writes boolean attributes as true/false
+:test-result: SKIP a succeeding test can still be skipped
+:test-result: PASS analyse no analysis
+:test-result: PASS array<int, N> -> toString
+:test-result: PASS benchmark function call
+:test-result: PASS boolean member
+:test-result: PASS checkedElse
+:test-result: FAIL checkedElse, failing
+:test-result: PASS checkedIf
+:test-result: FAIL checkedIf, failing
+:test-result: PASS classify_outliers
+:test-result: PASS comparisons between const int variables
+:test-result: PASS comparisons between int variables
+:test-result: PASS convertToBits
+:test-result: SKIP dynamic skipping works with generators
+:test-result: PASS empty tags are not allowed
+:test-result: PASS erfc_inv
+:test-result: PASS estimate_clock_resolution
+:test-result: PASS even more nested SECTION tests
+:test-result: XFAIL failed assertions before SKIP cause test case to fail
+:test-result: XFAIL failing for some generator values causes entire test case to fail
+:test-result: XFAIL failing in some unskipped sections causes entire test case to fail
+:test-result: FAIL first tag
+loose text artifact
+:test-result: FAIL has printf
+:test-result: PASS is_unary_function
+:test-result: FAIL just failure
+:test-result: FAIL just failure after unscoped info
+:test-result: FAIL just info
+:test-result: FAIL just unscoped info
+:test-result: PASS long long
+:test-result: FAIL looped SECTION tests
+:test-result: FAIL looped tests
+:test-result: PASS makeStream recognizes %debug stream name
+:test-result: PASS make_unique reimplementation
+:test-result: PASS mean
+:test-result: PASS measure
+:test-result: FAIL mix info, unscoped info and warning
+:test-result: FAIL more nested SECTION tests
+:test-result: PASS nested SECTION tests
+a!
+b1!
+!
+:test-result: FAIL nested sections can be skipped dynamically at runtime
+:test-result: PASS non streamable - with conv. op
+:test-result: PASS non-copyable objects
+:test-result: PASS normal_quantile
+:test-result: PASS not allowed
+:test-result: FAIL not prints unscoped info from previous failures
+:test-result: PASS null strings
+:test-result: PASS null_ptr
+:test-result: PASS pair<pair<int,const char *,pair<std::string,int> > -> toString
+:test-result: PASS parseEnums
+:test-result: PASS pointer to class
+:test-result: PASS print unscoped info if passing unscoped info is printed
+:test-result: FAIL prints unscoped info on failure
+:test-result: FAIL prints unscoped info only for the first assertion
+:test-result: PASS random SECTION tests
+:test-result: PASS replaceInPlace
+:test-result: PASS request an unknown %-starting stream fails
+:test-result: PASS resolution
+:test-result: PASS run_for_at_least, chronometer
+:test-result: PASS run_for_at_least, int
+:test-result: FAIL second tag
+:test-result: SKIP sections can be skipped dynamically at runtime
+:test-result: FAIL send a single char to INFO
+:test-result: FAIL sends information to INFO
+:test-result: PASS shortened hide tags are split apart
+:test-result: SKIP skipped tests can optionally provide a reason
+:test-result: PASS splitString
+:test-result: FAIL stacks unscoped info in loops
+:test-result: PASS startsWith
+:test-result: PASS std::map is convertible string
+:test-result: PASS std::pair<int,const std::string> -> toString
+:test-result: PASS std::pair<int,std::string> -> toString
+:test-result: PASS std::set is convertible string
+:test-result: PASS std::vector<std::pair<std::string,int> > -> toString
+:test-result: PASS stdout and stderr streams have %-starting name
+:test-result: PASS stringify ranges
+:test-result: PASS stringify( has_maker )
+:test-result: PASS stringify( has_maker_and_operator )
+:test-result: PASS stringify( has_neither )
+:test-result: PASS stringify( has_operator )
+:test-result: PASS stringify( has_template_operator )
+:test-result: PASS stringify( vectors<has_maker> )
+:test-result: PASS stringify( vectors<has_maker_and_operator> )
+:test-result: PASS stringify( vectors<has_operator> )
+:test-result: PASS strlen3
+:test-result: PASS tables
+:test-result: PASS tags with dots in later positions are not parsed as hidden
+:test-result: SKIP tests can be skipped dynamically at runtime
+:test-result: FAIL thrown std::strings are translated
+:test-result: PASS toString on const wchar_t const pointer returns the string contents
+:test-result: PASS toString on const wchar_t pointer returns the string contents
+:test-result: PASS toString on wchar_t const pointer returns the string contents
+:test-result: PASS toString on wchar_t returns the string contents
+:test-result: PASS toString(enum class w/operator<<)
+:test-result: PASS toString(enum class)
+:test-result: PASS toString(enum w/operator<<)
+:test-result: PASS toString(enum)
+:test-result: PASS tuple<>
+:test-result: PASS tuple<float,int>
+:test-result: PASS tuple<int>
+:test-result: PASS tuple<string,string>
+:test-result: PASS tuple<tuple<int>,tuple<>,float>
+:test-result: PASS uniform samples
+:test-result: PASS uniform_integer_distribution can return the bounds
+:test-result: PASS unique_ptr reimplementation: basic functionality
+:test-result: PASS vec<vec<string,alloc>> -> toString
+:test-result: PASS vector<bool> -> toString
+:test-result: PASS vector<int,allocator> -> toString
+:test-result: PASS vector<int> -> toString
+:test-result: PASS vector<string> -> toString
+:test-result: PASS vectors can be sized and resized
+:test-result: PASS warmup
+:test-result: PASS weighted_average_quantile
+:test-result: PASS xmlentitycheck
diff --git a/tests/SelfTest/Baselines/automake.sw.multi.approved.txt b/tests/SelfTest/Baselines/automake.sw.multi.approved.txt
new file mode 100644
index 0000000..0cd24e4
--- /dev/null
+++ b/tests/SelfTest/Baselines/automake.sw.multi.approved.txt
@@ -0,0 +1,419 @@
+:test-result: PASS # A test name that starts with a #
+:test-result: PASS #1027: Bitfields can be captured
+:test-result: PASS #1147
+:test-result: PASS #1175 - Hidden Test
+:test-result: PASS #1238
+:test-result: PASS #1245
+:test-result: PASS #1319: Sections can have description (even if it is not saved
+:test-result: PASS #1403
+:test-result: FAIL #1455 - INFO and WARN can start with a linebreak
+:test-result: FAIL #1514: stderr/stdout is not captured in tests aborted by an exception
+:test-result: PASS #1548
+:test-result: PASS #1905 -- test spec parser properly clears internal state between compound tests
+:test-result: PASS #1912 -- test spec parser handles escaping
+:test-result: PASS #1913 - GENERATE inside a for loop should not keep recreating the generator
+:test-result: PASS #1913 - GENERATEs can share a line
+:test-result: PASS #1938 - GENERATE after a section
+:test-result: PASS #1938 - Section followed by flat generate
+:test-result: PASS #1938 - flat generate
+:test-result: PASS #1938 - mixed sections and generates
+:test-result: PASS #1938 - nested generate
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+:test-result: PASS #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+:test-result: PASS #2152 - ULP checks between differently signed values were wrong - double
+:test-result: PASS #2152 - ULP checks between differently signed values were wrong - float
+:test-result: XFAIL #2615 - Throwing in constructor generator fails test case but does not abort
+:test-result: XFAIL #748 - captures with unexpected exceptions
+:test-result: PASS #809
+:test-result: PASS #833
+:test-result: XFAIL #835 -- errno should not be touched by Catch2
+:test-result: PASS #872
+:test-result: PASS #961 -- Dynamically created sections should all be reported
+:test-result: FAIL 'Not' checks that should fail
+:test-result: PASS 'Not' checks that should succeed
+:test-result: PASS (unimplemented) static bools can be evaluated
+:test-result: PASS 3x3x3 ints
+:test-result: FAIL A METHOD_AS_TEST_CASE based test run that fails
+:test-result: PASS A METHOD_AS_TEST_CASE based test run that succeeds
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>
+:test-result: FAIL A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>
+:test-result: PASS A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
+:test-result: FAIL A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
+:test-result: PASS A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
+:test-result: FAIL A TEST_CASE_METHOD based test run that fails
+:test-result: PASS A TEST_CASE_METHOD based test run that succeeds
+:test-result: FAIL A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+:test-result: PASS A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+:test-result: PASS A Template product test case - Foo<float>
+:test-result: PASS A Template product test case - Foo<int>
+:test-result: PASS A Template product test case - std::vector<float>
+:test-result: PASS A Template product test case - std::vector<int>
+:test-result: PASS A Template product test case with array signature - Bar<float, 42>
+:test-result: PASS A Template product test case with array signature - Bar<int, 9>
+:test-result: PASS A Template product test case with array signature - std::array<float, 42>
+:test-result: PASS A Template product test case with array signature - std::array<int, 9>
+:test-result: PASS A comparison that uses literals instead of the normal constructor
+:test-result: FAIL A couple of nested sections followed by a failure
+:test-result: FAIL A failing expression with a non streamable type is still captured
+:test-result: PASS Absolute margin
+:test-result: FAIL An empty test with no assertions
+:test-result: PASS An expression with side-effects should only be evaluated once
+:test-result: FAIL An unchecked exception reports the line of the last assertion
+:test-result: PASS Anonymous test case 1
+:test-result: PASS Approx setters validate their arguments
+:test-result: PASS Approx with exactly-representable margin
+:test-result: PASS Approximate PI
+:test-result: PASS Approximate comparisons with different epsilons
+:test-result: PASS Approximate comparisons with floats
+:test-result: PASS Approximate comparisons with ints
+:test-result: PASS Approximate comparisons with mixed numeric types
+:test-result: PASS Arbitrary predicate matcher
+:test-result: PASS Assertion macros support bit operators and bool conversions
+:test-result: PASS Assertions then sections
+:test-result: PASS Basic use of the Contains range matcher
+:test-result: PASS Basic use of the Empty range matcher
+:test-result: PASS CAPTURE can deal with complex expressions
+:test-result: PASS CAPTURE can deal with complex expressions involving commas
+:test-result: PASS CAPTURE parses string and character constants
+:test-result: PASS Capture and info messages
+:test-result: PASS CaseInsensitiveEqualsTo is case insensitive
+:test-result: PASS CaseInsensitiveLess is case insensitive
+:test-result: PASS Character pretty printing
+:test-result: PASS Clara::Arg does not crash on incomplete input
+:test-result: PASS Clara::Arg supports single-arg parse the way Opt does
+:test-result: PASS Clara::Opt supports accept-many lambdas
+:test-result: PASS ColourGuard behaviour
+:test-result: PASS Combining MatchAllOfGeneric does not nest
+:test-result: PASS Combining MatchAnyOfGeneric does not nest
+:test-result: PASS Combining MatchNotOfGeneric does not nest
+:test-result: PASS Combining concrete matchers does not use templated matchers
+:test-result: PASS Combining only templated matchers
+:test-result: PASS Combining templated and concrete matchers
+:test-result: PASS Combining templated matchers
+:test-result: PASS Commas in various macros are allowed
+:test-result: PASS Comparing function pointers
+:test-result: PASS Comparison ops
+:test-result: PASS Comparison with explicitly convertible types
+:test-result: PASS Comparisons between ints where one side is computed
+:test-result: PASS Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+:test-result: PASS Comparisons with int literals don't warn when mixing signed/ unsigned
+:test-result: PASS Composed generic matchers shortcircuit
+:test-result: PASS Composed matchers shortcircuit
+:test-result: FAIL Contains string matcher
+:test-result: PASS Copy and then generate a range
+:test-result: PASS Cout stream properly declares it writes to stdout
+:test-result: FAIL Custom exceptions can be translated when testing for nothrow
+:test-result: FAIL Custom exceptions can be translated when testing for throwing as something else
+:test-result: FAIL Custom std-exceptions can be custom translated
+:test-result: PASS Default scale is invisible to comparison
+:test-result: PASS Directly creating an EnumInfo
+:test-result: SKIP Empty generators can SKIP in constructor
+:test-result: PASS Empty stream name opens cout stream
+:test-result: FAIL EndsWith string matcher
+:test-result: PASS Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+:test-result: PASS Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+:test-result: PASS Epsilon only applies to Approx's value
+:test-result: XFAIL Equality checks that should fail
+:test-result: PASS Equality checks that should succeed
+:test-result: PASS Equals
+:test-result: FAIL Equals string matcher
+:test-result: PASS Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+:test-result: FAIL Exception matchers that fail
+:test-result: PASS Exception matchers that succeed
+:test-result: PASS Exception message can be matched
+:test-result: PASS Exception messages can be tested for
+:test-result: PASS Exceptions matchers
+:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
+:test-result: FAIL FAIL aborts the test
+:test-result: FAIL FAIL does not require an argument
+:test-result: FAIL FAIL_CHECK does not abort the test
+:test-result: PASS Factorials are computed
+:test-result: PASS Filter generator throws exception for empty generator
+:test-result: PASS Floating point matchers: double
+:test-result: PASS Floating point matchers: float
+:test-result: PASS GENERATE can combine literals and generators
+:test-result: PASS Generators -- adapters
+:test-result: PASS Generators -- simple
+:test-result: PASS Generators internals
+:test-result: PASS Greater-than inequalities with different epsilons
+:test-result: PASS Hashers with different seed produce different hash with same test case
+:test-result: PASS Hashers with same seed produce same hash
+:test-result: PASS Hashing different test cases produces different result
+:test-result: PASS Hashing test case produces same hash across multiple calls
+:test-result: FAIL INFO and UNSCOPED_INFO can stream multiple arguments
+:test-result: FAIL INFO and WARN do not abort tests
+:test-result: FAIL INFO gets logged on failure
+:test-result: FAIL INFO gets logged on failure, even if captured before successful assertions
+:test-result: FAIL INFO is reset for each loop
+:test-result: XFAIL Incomplete AssertionHandler
+:test-result: XFAIL Inequality checks that should fail
+:test-result: PASS Inequality checks that should succeed
+:test-result: PASS JsonWriter
+:test-result: PASS JsonWriter escapes charaters in strings properly
+:test-result: PASS Lambdas in assertions
+:test-result: PASS Less-than inequalities with different epsilons
+:test-result: PASS ManuallyRegistered
+:test-result: PASS Matchers can be (AllOf) composed with the && operator
+:test-result: PASS Matchers can be (AnyOf) composed with the || operator
+:test-result: PASS Matchers can be composed with both && and ||
+:test-result: FAIL Matchers can be composed with both && and || - failing
+:test-result: PASS Matchers can be negated (Not) with the ! operator
+:test-result: FAIL Matchers can be negated (Not) with the ! operator - failing
+:test-result: XFAIL Mayfail test case with nested sections
+:test-result: FAIL Mismatching exception messages failing the test
+:test-result: PASS Multireporter calls reporters and listeners in correct order
+:test-result: PASS Multireporter updates ReporterPreferences properly
+:test-result: PASS Nested generators and captured variables
+:test-result: FAIL Nice descriptive name
+:test-result: FAIL Non-std exceptions can be translated
+:test-result: PASS Objects that evaluated in boolean contexts can be checked
+:test-result: PASS Optionally static assertions
+:test-result: FAIL Ordering comparison checks that should fail
+:test-result: PASS Ordering comparison checks that should succeed
+:test-result: PASS Our PCG implementation provides expected results for known seeds
+:test-result: FAIL Output from all sections is reported
+:test-result: PASS Overloaded comma or address-of operators are not used
+:test-result: PASS Parse uints
+:test-result: PASS Parsed tags are matched case insensitive
+:test-result: PASS Parsing sharding-related cli flags
+:test-result: PASS Parsing tags with non-alphabetical characters is pass-through
+:test-result: PASS Parsing warnings
+:test-result: PASS Pointers can be compared to null
+:test-result: PASS Precision of floating point stringification can be set
+:test-result: PASS Predicate matcher can accept const char*
+:test-result: PASS Process can be configured on command line
+:test-result: PASS Product with differing arities - std::tuple<int, double, float>
+:test-result: PASS Product with differing arities - std::tuple<int, double>
+:test-result: PASS Product with differing arities - std::tuple<int>
+:test-result: PASS Random seed generation accepts known methods
+:test-result: PASS Random seed generation reports unknown methods
+:test-result: PASS Range type with sentinel
+:test-result: FAIL Reconstruction should be based on stringification: #914
+:test-result: FAIL Regex string matcher
+:test-result: PASS Registering reporter with '::' in name fails
+:test-result: PASS Regression test #1
+:test-result: PASS Reporter's write listings to provided stream
+:test-result: PASS Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla
+:test-result: PASS SUCCEED counts as a test pass
+:test-result: PASS SUCCEED does not require an argument
+:test-result: PASS Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+:test-result: PASS Scenario: Do that thing with the thing
+:test-result: PASS Scenario: This is a really long scenario name to see how the list command deals with wrapping
+:test-result: PASS Scenario: Vector resizing affects size and capacity
+:test-result: FAIL Sends stuff to stdout and stderr
+:test-result: PASS Some simple comparisons between doubles
+:test-result: FAIL Standard output from all sections is reported
+:test-result: FAIL StartsWith string matcher
+:test-result: PASS Static arrays are convertible to string
+:test-result: PASS String matchers
+:test-result: PASS StringRef
+:test-result: PASS StringRef at compilation time
+:test-result: PASS Stringifying char arrays with statically known sizes - char
+:test-result: PASS Stringifying char arrays with statically known sizes - signed char
+:test-result: PASS Stringifying char arrays with statically known sizes - unsigned char
+:test-result: PASS Stringifying std::chrono::duration helpers
+:test-result: PASS Stringifying std::chrono::duration with weird ratios
+:test-result: PASS Stringifying std::chrono::time_point<system_clock>
+:test-result: FAIL Tabs and newlines show in output
+:test-result: PASS Tag alias can be registered against tag patterns
+:test-result: PASS Tags with spaces and non-alphanumerical characters are accepted
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 0
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 1
+:test-result: PASS Template test case method with test types specified inside std::tuple - MyTypes - 2
+:test-result: PASS Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0
+:test-result: PASS Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1
+:test-result: PASS Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0
+:test-result: PASS Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 0
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 1
+:test-result: PASS Template test case with test types specified inside std::tuple - MyTypes - 2
+:test-result: PASS TemplateTest: vectors can be sized and resized - float
+:test-result: PASS TemplateTest: vectors can be sized and resized - int
+:test-result: PASS TemplateTest: vectors can be sized and resized - std::string
+:test-result: PASS TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - float,4
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - int,5
+:test-result: PASS TemplateTestSig: vectors can be sized and resized - std::string,15
+:test-result: PASS Test case with identical tags keeps just one
+:test-result: PASS Test case with one argument
+:test-result: PASS Test enum bit values
+:test-result: PASS Test with special, characters "in name
+:test-result: PASS Testing checked-if
+:test-result: XFAIL Testing checked-if 2
+:test-result: XFAIL Testing checked-if 3
+:test-result: XFAIL Testing checked-if 4
+:test-result: XFAIL Testing checked-if 5
+:test-result: FAIL The NO_FAIL macro reports a failure but does not fail the test
+:test-result: PASS The default listing implementation write to provided stream
+:test-result: FAIL This test 'should' fail but doesn't
+:test-result: FAIL Thrown string literals are translated
+:test-result: PASS Tracker
+:test-result: PASS Trim strings
+:test-result: PASS Type conversions of RangeEquals and similar
+:test-result: FAIL Unexpected exceptions can be translated
+:test-result: PASS Upcasting special member functions
+:test-result: PASS Usage of AllMatch range matcher
+:test-result: PASS Usage of AllTrue range matcher
+:test-result: PASS Usage of AnyMatch range matcher
+:test-result: PASS Usage of AnyTrue range matcher
+:test-result: PASS Usage of NoneMatch range matcher
+:test-result: PASS Usage of NoneTrue range matcher
+:test-result: PASS Usage of RangeEquals range matcher
+:test-result: PASS Usage of UnorderedRangeEquals range matcher
+:test-result: PASS Usage of the SizeIs range matcher
+:test-result: PASS Use a custom approx
+:test-result: PASS Variadic macros
+:test-result: PASS Vector Approx matcher
+:test-result: FAIL Vector Approx matcher -- failing
+:test-result: PASS Vector matchers
+:test-result: FAIL Vector matchers that fail
+:test-result: PASS When checked exceptions are thrown they can be expected or unexpected
+:test-result: FAIL When unchecked exceptions are thrown directly they are always failures
+:test-result: FAIL When unchecked exceptions are thrown during a CHECK the test should continue
+:test-result: FAIL When unchecked exceptions are thrown during a REQUIRE the test should abort fail
+:test-result: FAIL When unchecked exceptions are thrown from functions they are always failures
+:test-result: FAIL When unchecked exceptions are thrown from sections they are always failures
+:test-result: FAIL When unchecked exceptions are thrown, but caught, they do not affect the test
+:test-result: PASS X/level/0/a
+:test-result: PASS X/level/0/b
+:test-result: PASS X/level/1/a
+:test-result: PASS X/level/1/b
+:test-result: PASS XmlEncode
+:test-result: PASS XmlWriter writes boolean attributes as true/false
+:test-result: SKIP a succeeding test can still be skipped
+:test-result: PASS analyse no analysis
+:test-result: PASS array<int, N> -> toString
+:test-result: PASS benchmark function call
+:test-result: PASS boolean member
+:test-result: PASS checkedElse
+:test-result: FAIL checkedElse, failing
+:test-result: PASS checkedIf
+:test-result: FAIL checkedIf, failing
+:test-result: PASS classify_outliers
+:test-result: PASS comparisons between const int variables
+:test-result: PASS comparisons between int variables
+:test-result: PASS convertToBits
+:test-result: SKIP dynamic skipping works with generators
+:test-result: PASS empty tags are not allowed
+:test-result: PASS erfc_inv
+:test-result: PASS estimate_clock_resolution
+:test-result: PASS even more nested SECTION tests
+:test-result: XFAIL failed assertions before SKIP cause test case to fail
+:test-result: XFAIL failing for some generator values causes entire test case to fail
+:test-result: XFAIL failing in some unskipped sections causes entire test case to fail
+:test-result: FAIL first tag
+:test-result: FAIL has printf
+:test-result: PASS is_unary_function
+:test-result: FAIL just failure
+:test-result: FAIL just failure after unscoped info
+:test-result: FAIL just info
+:test-result: FAIL just unscoped info
+:test-result: PASS long long
+:test-result: FAIL looped SECTION tests
+:test-result: FAIL looped tests
+:test-result: PASS makeStream recognizes %debug stream name
+:test-result: PASS make_unique reimplementation
+:test-result: PASS mean
+:test-result: PASS measure
+:test-result: FAIL mix info, unscoped info and warning
+:test-result: FAIL more nested SECTION tests
+:test-result: PASS nested SECTION tests
+:test-result: FAIL nested sections can be skipped dynamically at runtime
+:test-result: PASS non streamable - with conv. op
+:test-result: PASS non-copyable objects
+:test-result: PASS normal_quantile
+:test-result: PASS not allowed
+:test-result: FAIL not prints unscoped info from previous failures
+:test-result: PASS null strings
+:test-result: PASS null_ptr
+:test-result: PASS pair<pair<int,const char *,pair<std::string,int> > -> toString
+:test-result: PASS parseEnums
+:test-result: PASS pointer to class
+:test-result: PASS print unscoped info if passing unscoped info is printed
+:test-result: FAIL prints unscoped info on failure
+:test-result: FAIL prints unscoped info only for the first assertion
+:test-result: PASS random SECTION tests
+:test-result: PASS replaceInPlace
+:test-result: PASS request an unknown %-starting stream fails
+:test-result: PASS resolution
+:test-result: PASS run_for_at_least, chronometer
+:test-result: PASS run_for_at_least, int
+:test-result: FAIL second tag
+:test-result: SKIP sections can be skipped dynamically at runtime
+:test-result: FAIL send a single char to INFO
+:test-result: FAIL sends information to INFO
+:test-result: PASS shortened hide tags are split apart
+:test-result: SKIP skipped tests can optionally provide a reason
+:test-result: PASS splitString
+:test-result: FAIL stacks unscoped info in loops
+:test-result: PASS startsWith
+:test-result: PASS std::map is convertible string
+:test-result: PASS std::pair<int,const std::string> -> toString
+:test-result: PASS std::pair<int,std::string> -> toString
+:test-result: PASS std::set is convertible string
+:test-result: PASS std::vector<std::pair<std::string,int> > -> toString
+:test-result: PASS stdout and stderr streams have %-starting name
+:test-result: PASS stringify ranges
+:test-result: PASS stringify( has_maker )
+:test-result: PASS stringify( has_maker_and_operator )
+:test-result: PASS stringify( has_neither )
+:test-result: PASS stringify( has_operator )
+:test-result: PASS stringify( has_template_operator )
+:test-result: PASS stringify( vectors<has_maker> )
+:test-result: PASS stringify( vectors<has_maker_and_operator> )
+:test-result: PASS stringify( vectors<has_operator> )
+:test-result: PASS strlen3
+:test-result: PASS tables
+:test-result: PASS tags with dots in later positions are not parsed as hidden
+:test-result: SKIP tests can be skipped dynamically at runtime
+:test-result: FAIL thrown std::strings are translated
+:test-result: PASS toString on const wchar_t const pointer returns the string contents
+:test-result: PASS toString on const wchar_t pointer returns the string contents
+:test-result: PASS toString on wchar_t const pointer returns the string contents
+:test-result: PASS toString on wchar_t returns the string contents
+:test-result: PASS toString(enum class w/operator<<)
+:test-result: PASS toString(enum class)
+:test-result: PASS toString(enum w/operator<<)
+:test-result: PASS toString(enum)
+:test-result: PASS tuple<>
+:test-result: PASS tuple<float,int>
+:test-result: PASS tuple<int>
+:test-result: PASS tuple<string,string>
+:test-result: PASS tuple<tuple<int>,tuple<>,float>
+:test-result: PASS uniform samples
+:test-result: PASS uniform_integer_distribution can return the bounds
+:test-result: PASS unique_ptr reimplementation: basic functionality
+:test-result: PASS vec<vec<string,alloc>> -> toString
+:test-result: PASS vector<bool> -> toString
+:test-result: PASS vector<int,allocator> -> toString
+:test-result: PASS vector<int> -> toString
+:test-result: PASS vector<string> -> toString
+:test-result: PASS vectors can be sized and resized
+:test-result: PASS warmup
+:test-result: PASS weighted_average_quantile
+:test-result: PASS xmlentitycheck
diff --git a/tests/SelfTest/Baselines/compact.sw.approved.txt b/tests/SelfTest/Baselines/compact.sw.approved.txt
new file mode 100644
index 0000000..b7f48cb
--- /dev/null
+++ b/tests/SelfTest/Baselines/compact.sw.approved.txt
@@ -0,0 +1,2860 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+RNG seed: 1
+Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
+Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
+Compilation.tests.cpp:<line number>: passed: 0 == y.v for: 0 == 0
+Compilation.tests.cpp:<line number>: passed: t1 == t2 for: {?} == {?}
+Compilation.tests.cpp:<line number>: passed: t1 != t2 for: {?} != {?}
+Compilation.tests.cpp:<line number>: passed: t1 < t2 for: {?} < {?}
+Compilation.tests.cpp:<line number>: passed: t1 > t2 for: {?} > {?}
+Compilation.tests.cpp:<line number>: passed: t1 <= t2 for: {?} <= {?}
+Compilation.tests.cpp:<line number>: passed: t1 >= t2 for: {?} >= {?}
+Misc.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed: std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+Compilation.tests.cpp:<line number>: passed: std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+Compilation.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed: h1 == h2 for: [1403 helper] == [1403 helper]
+Message.tests.cpp:<line number>: warning: '
+This info message starts with a linebreak' with 1 message: '
+This warning message starts with a linebreak'
+This would not be caught previously
+Nor would this
+Tricky.tests.cpp:<line number>: failed: explicitly with 1 message: '1514'
+Compilation.tests.cpp:<line number>: passed: std::is_same<TypeList<int>, TypeList<int>>::value for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase("spec . char")) for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase("spec , char")) for: true
+TestSpec.tests.cpp:<line number>: passed: !(spec.matches(*fakeTestCase(R"(spec \, char)"))) for: !false
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec {a} char)")) for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec [a] char)")) for: true
+TestSpec.tests.cpp:<line number>: passed: !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) for: !false
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec \ char)")) for: true
+Generators.tests.cpp:<line number>: passed: counter < 7 for: 3 < 7
+Generators.tests.cpp:<line number>: passed: counter < 7 for: 6 < 7
+Generators.tests.cpp:<line number>: passed: i != j for: 1 != 3
+Generators.tests.cpp:<line number>: passed: i != j for: 1 != 4
+Generators.tests.cpp:<line number>: passed: i != j for: 2 != 3
+Generators.tests.cpp:<line number>: passed: i != j for: 2 != 4
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 3' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 3' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 4' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 4' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 3' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 3' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 4' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 4' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
+Exception.tests.cpp:<line number>: passed: thisThrows() with 1 message: 'answer := 42'
+Compilation.tests.cpp:<line number>: passed: 42 == f for: 42 == {?}
+Compilation.tests.cpp:<line number>: passed: a == t for: 3 == 3
+Compilation.tests.cpp:<line number>: passed: a == t for: 3 == 3
+Compilation.tests.cpp:<line number>: passed: throws_int(true)
+Compilation.tests.cpp:<line number>: passed: throws_int(true), int
+Compilation.tests.cpp:<line number>: passed: throws_int(false)
+Compilation.tests.cpp:<line number>: passed: "aaa", Catch::Matchers::EndsWith("aaa") for: "aaa" ends with: "aaa"
+Compilation.tests.cpp:<line number>: passed: templated_tests<int>(3) for: true
+Misc.tests.cpp:<line number>: failed: f() == 0 for: 1 == 0
+Misc.tests.cpp:<line number>: passed: errno_after == 1 for: 1 == 1
+Compilation.tests.cpp:<line number>: passed: x == 4 for: {?} == 4 with 1 message: 'dummy := 0'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Condition.tests.cpp:<line number>: failed: false != false
+Condition.tests.cpp:<line number>: failed: true != true
+Condition.tests.cpp:<line number>: failed: !true for: false
+Condition.tests.cpp:<line number>: failed: !(true) for: !true
+Condition.tests.cpp:<line number>: failed: !trueValue for: false
+Condition.tests.cpp:<line number>: failed: !(trueValue) for: !true
+Condition.tests.cpp:<line number>: failed: !(1 == 1) for: false
+Condition.tests.cpp:<line number>: failed: !(1 == 1)
+Condition.tests.cpp:<line number>: passed: false == false
+Condition.tests.cpp:<line number>: passed: true == true
+Condition.tests.cpp:<line number>: passed: !false for: true
+Condition.tests.cpp:<line number>: passed: !(false) for: !false
+Condition.tests.cpp:<line number>: passed: !falseValue for: true
+Condition.tests.cpp:<line number>: passed: !(falseValue) for: !false
+Condition.tests.cpp:<line number>: passed: !(1 == 2) for: true
+Condition.tests.cpp:<line number>: passed: !(1 == 2)
+Tricky.tests.cpp:<line number>: passed: is_true<true>::value == true for: true == true
+Tricky.tests.cpp:<line number>: passed: true == is_true<true>::value for: true == true
+Tricky.tests.cpp:<line number>: passed: is_true<false>::value == false for: false == false
+Tricky.tests.cpp:<line number>: passed: false == is_true<false>::value for: false == false
+Tricky.tests.cpp:<line number>: passed: !is_true<false>::value for: true
+Tricky.tests.cpp:<line number>: passed: !!is_true<true>::value for: true
+Tricky.tests.cpp:<line number>: passed: is_true<true>::value for: true
+Tricky.tests.cpp:<line number>: passed: !(is_true<false>::value) for: !false
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Class.tests.cpp:<line number>: failed: s == "world" for: "hello" == "world"
+Class.tests.cpp:<line number>: passed: s == "hello" for: "hello" == "hello"
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1 == 2
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 1 == 0
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 3 == 0
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 6 == 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 1 > 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 3 > 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 6 > 0
+Class.tests.cpp:<line number>: failed: m_a == 2 for: 1 == 2
+Class.tests.cpp:<line number>: passed: m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: m_a++ == 0 for: 0 == 0
+Class.tests.cpp:<line number>: failed: m_a == 0 for: 1 == 0
+Class.tests.cpp:<line number>: passed: m_a++ == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: m_a == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 42 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 9 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 42 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 9 > 0
+Approx.tests.cpp:<line number>: passed: d == 1.23_a for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != 1.22_a for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: -d == -1.23_a for: -1.22999999999999998
+==
+Approx( -1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d == 1.2_a .epsilon(.1) for: 1.22999999999999998
+==
+Approx( 1.19999999999999996 )
+Approx.tests.cpp:<line number>: passed: d != 1.2_a .epsilon(.001) for: 1.22999999999999998
+!=
+Approx( 1.19999999999999996 )
+Approx.tests.cpp:<line number>: passed: d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'that's not flying - that's failing in style'
+Misc.tests.cpp:<line number>: failed: explicitly with 1 message: 'to infinity and beyond'
+Tricky.tests.cpp:<line number>: failed: &o1 == &o2 for: 0x<hex digits> == 0x<hex digits>
+Tricky.tests.cpp:<line number>: failed: o1 == o2 for: {?} == {?}
+Approx.tests.cpp:<line number>: passed: 104.0 != Approx(100.0) for: 104.0 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 )
+Tricky.tests.cpp:<line number>: passed: i++ == 7 for: 7 == 7
+Tricky.tests.cpp:<line number>: passed: i++ == 8 for: 8 == 8
+Exception.tests.cpp:<line number>: passed: 1 == 1
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'anonymous test case'
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(0)
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(1234656)
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(-2), std::domain_error
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(0)
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(1)
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(-0.001), std::domain_error
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(1.0001), std::domain_error
+Approx.tests.cpp:<line number>: passed: 0.25f == Approx(0.0f).margin(0.25f) for: 0.25f == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 0.0f == Approx(0.25f).margin(0.25f) for: 0.0f == Approx( 0.25 )
+Approx.tests.cpp:<line number>: passed: 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 )
+Approx.tests.cpp:<line number>: passed: 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 )
+Approx.tests.cpp:<line number>: passed: 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 )
+Approx.tests.cpp:<line number>: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279
+==
+Approx( 3.14100000000000001 )
+Approx.tests.cpp:<line number>: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279
+!=
+Approx( 3.14100000000000001 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.231 ) for: 1.22999999999999998
+!=
+Approx( 1.23100000000000009 )
+Approx.tests.cpp:<line number>: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998
+==
+Approx( 1.23100000000000009 )
+Approx.tests.cpp:<line number>: passed: 1.23f == Approx( 1.23f ) for: 1.230000019f
+==
+Approx( 1.23000001907348633 )
+Approx.tests.cpp:<line number>: passed: 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 1 == Approx( 1 ) for: 1 == Approx( 1.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( 0 ) for: 0 == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( dZero) for: 0 == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 )
+Approx.tests.cpp:<line number>: passed: 1.234f == Approx( dMedium ) for: 1.233999968f
+==
+Approx( 1.23399999999999999 )
+Approx.tests.cpp:<line number>: passed: dMedium == Approx( 1.234f ) for: 1.23399999999999999
+==
+Approx( 1.23399996757507324 )
+Matchers.tests.cpp:<line number>: passed: 1, Predicate<int>( alwaysTrue, "always true" ) for: 1 matches predicate: "always true"
+Matchers.tests.cpp:<line number>: passed: 1, !Predicate<int>( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false"
+Matchers.tests.cpp:<line number>: passed: "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal"
+Matchers.tests.cpp:<line number>: passed: "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) for: "This wouldn't pass" not matches undescribed predicate
+Compilation.tests.cpp:<line number>: passed: lhs | rhs for: Val: 1 | Val: 2
+Compilation.tests.cpp:<line number>: passed: !(lhs & rhs) for: !(Val: 1 & Val: 2)
+Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
+Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
+Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(1) for: { 1, 2, 3 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: b, Contains(1) for: { 0, 1, 2 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: c, !Contains(1) for: { 4, 5, 6 } not contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(0, close_enough) for: { 1, 2, 3 } contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: b, Contains(0, close_enough) for: { 0, 1, 2 } contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: c, !Contains(0, close_enough) for: { 4, 5, 6 } not contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) for: { "abc", "abcd", "abcde" } contains element 4
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(1) for: { 1, 2, 3, 4, 5 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: in, !Contains(8) for: { 1, 2, 3, 4, 5 } not contains element 8
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(MoveOnlyTestElement{ 2 }) for: { 1, 2, 3 } contains element 2
+MatchersRanges.tests.cpp:<line number>: passed: in, !Contains(MoveOnlyTestElement{ 9 }) for: { 1, 2, 3 } not contains element 9
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) for: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+MatchersRanges.tests.cpp:<line number>: passed: empty_array, IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, !IsEmpty() for: { 0.0 } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vec, !IsEmpty() for: { 'a', 'b', 'c' } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: inner_lists_are_empty, !IsEmpty() for: { { } } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: inner_lists_are_empty.front(), IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: has_empty{}, !IsEmpty() for: {?} not is empty
+MatchersRanges.tests.cpp:<line number>: passed: unrelated::ADL_empty{}, IsEmpty() for: {?} is empty
+Message.tests.cpp:<line number>: passed: with 7 messages: 'a := 1' and 'b := 2' and 'c := 3' and 'a + b := 3' and 'a+b := 3' and 'c > b := true' and 'a == 1 := true'
+Message.tests.cpp:<line number>: passed: with 7 messages: 'custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0' and 'custom_index_op<int>{1, 2, 3}[(0, 1)] := 0' and 'custom_index_op<int>{1, 2, 3}[0] := 0' and '(helper_1436<int, int>{12, -12}) := { 12, -12 }' and '(helper_1436<int, int>(-12, 12)) := { -12, 12 }' and '(1, 2) := 2' and '(2, 3) := 3'
+Message.tests.cpp:<line number>: passed: with 11 messages: '("comma, in string", "escaped, \", ") := "escaped, ", "' and '"single quote in string,'," := "single quote in string,',"' and '"some escapes, \\,\\\\" := "some escapes, \,\\"' and '"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"' and ''"' := '"'' and ''\'' := '''' and '',' := ','' and ''}' := '}'' and '')' := ')'' and ''(' := '('' and ''{' := '{''
+ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: 'i := 2'
+ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: '3'
+Details.tests.cpp:<line number>: passed: eq( "", "" ) for: true
+Details.tests.cpp:<line number>: passed: !(eq( "", "a" )) for: !false
+Details.tests.cpp:<line number>: passed: eq( "a", "a" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "a", "A" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "A", "a" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "A", "A" ) for: true
+Details.tests.cpp:<line number>: passed: !(eq( "a", "b" )) for: !false
+Details.tests.cpp:<line number>: passed: !(eq( "a", "B" )) for: !false
+Details.tests.cpp:<line number>: passed: lt( "", "a" ) for: true
+Details.tests.cpp:<line number>: passed: !(lt( "a", "a" )) for: !false
+Details.tests.cpp:<line number>: passed: !(lt( "", "" )) for: !false
+Details.tests.cpp:<line number>: passed: lt( "a", "b" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "a", "B" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "A", "b" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "A", "B" ) for: true
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\t') == "'\\t'" for: "'\t'" == "'\t'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\n') == "'\\n'" for: "'\n'" == "'\n'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\r') == "'\\r'" for: "'\r'" == "'\r'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\f') == "'\\f'" for: "'\f'" == "'\f'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( ' ' ) == "' '" for: "' '" == "' '"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( 'A' ) == "'A'" for: "'A'" == "'A'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( 'z' ) == "'z'" for: "'z'" == "'z'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( '\0' ) == "0" for: "0" == "0"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" for: "2" == "2"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" for: "5" == "5"
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: result for: {?}
+Clara.tests.cpp:<line number>: passed: result.type() == Catch::Clara::Detail::ResultType::Ok for: 0 == 0
+Clara.tests.cpp:<line number>: passed: parsed.type() == Catch::Clara::ParseResultType::NoMatch for: 1 == 1
+Clara.tests.cpp:<line number>: passed: parsed.remainingTokens().count() == 2 for: 2 == 2
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: name == "foo" for: "foo" == "foo"
+Clara.tests.cpp:<line number>: passed: !(parse_result) for: !{?}
+Clara.tests.cpp:<line number>: passed: parse_result for: {?}
+Clara.tests.cpp:<line number>: passed: res == std::vector<std::string>{ "aaa", "bbb" } for: { "aaa", "bbb" } == { "aaa", "bbb" }
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str().empty() for: true
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" for: "1
+Using code: 2
+2
+Using code: 0
+3
+"
+==
+"1
+Using code: 2
+2
+Using code: 0
+3
+"
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" for: "Using code: 2
+A
+B
+Using code: 0
+C
+"
+==
+"Using code: 2
+A
+B
+Using code: 0
+C
+"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() && MatcherB() ) && MatcherC() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() && ( MatcherB() && MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() || MatcherB() ) || MatcherC() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || ( MatcherB() || MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+Matchers.tests.cpp:<line number>: passed: 0, !MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value'
+Matchers.tests.cpp:<line number>: passed: 1, !!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+Matchers.tests.cpp:<line number>: passed: 0, !!!MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value'
+Matchers.tests.cpp:<line number>: passed: 1, !!!!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) && EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::MatchAnyOf<std::string>>::value'
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() && MatcherB() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail::MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric<MatcherB>>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || !MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) for: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+Matchers.tests.cpp:<line number>: passed: str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) for: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+Matchers.tests.cpp:<line number>: passed: str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) for: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+Matchers.tests.cpp:<line number>: passed: container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) for: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+Tricky.tests.cpp:<line number>: passed: std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+Tricky.tests.cpp:<line number>: passed: std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+Tricky.tests.cpp:<line number>: passed: !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: a for: 0x<hex digits>
+Tricky.tests.cpp:<line number>: passed: a == &foo for: 0x<hex digits> == 0x<hex digits>
+RandomNumberGeneration.tests.cpp:<line number>: passed: SimplePcg32{} == SimplePcg32{} for: {?} == {?}
+RandomNumberGeneration.tests.cpp:<line number>: passed: SimplePcg32{ 0 } != SimplePcg32{} for: {?} != {?}
+RandomNumberGeneration.tests.cpp:<line number>: passed: !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) for: !({?} == {?})
+RandomNumberGeneration.tests.cpp:<line number>: passed: !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) for: !({?} != {?})
+Approx.tests.cpp:<line number>: passed: td == Approx(10.0) for: StrongDoubleTypedef(10) == Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: Approx(10.0) == td for: Approx( 10.0 ) == StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td != Approx(11.0) for: StrongDoubleTypedef(10) != Approx( 11.0 )
+Approx.tests.cpp:<line number>: passed: Approx(11.0) != td for: Approx( 11.0 ) != StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td <= Approx(10.0) for: StrongDoubleTypedef(10) <= Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: td <= Approx(11.0) for: StrongDoubleTypedef(10) <= Approx( 11.0 )
+Approx.tests.cpp:<line number>: passed: Approx(10.0) <= td for: Approx( 10.0 ) <= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: Approx(9.0) <= td for: Approx( 9.0 ) <= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td >= Approx(9.0) for: StrongDoubleTypedef(10) >= Approx( 9.0 )
+Approx.tests.cpp:<line number>: passed: td >= Approx(td) for: StrongDoubleTypedef(10) >= Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: Approx(td) >= td for: Approx( 10.0 ) >= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: Approx(11.0) >= td for: Approx( 11.0 ) >= StrongDoubleTypedef(10)
+Condition.tests.cpp:<line number>: passed: 54 == 6*9 for: 54 == 54
+Condition.tests.cpp:<line number>: passed: ( -1 > 2u ) for: true
+Condition.tests.cpp:<line number>: passed: -1 > 2u for: -1 > 2
+Condition.tests.cpp:<line number>: passed: ( 2u < -1 ) for: true
+Condition.tests.cpp:<line number>: passed: 2u < -1 for: 2 < -1
+Condition.tests.cpp:<line number>: passed: ( minInt > 2u ) for: true
+Condition.tests.cpp:<line number>: passed: minInt > 2u for: -2147483648 > 2
+Condition.tests.cpp:<line number>: passed: i == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: ui == 2 for: 2 == 2
+Condition.tests.cpp:<line number>: passed: l == 3 for: 3 == 3
+Condition.tests.cpp:<line number>: passed: ul == 4 for: 4 == 4
+Condition.tests.cpp:<line number>: passed: c == 5 for: 5 == 5
+Condition.tests.cpp:<line number>: passed: uc == 6 for: 6 == 6
+Condition.tests.cpp:<line number>: passed: 1 == i for: 1 == 1
+Condition.tests.cpp:<line number>: passed: 2 == ui for: 2 == 2
+Condition.tests.cpp:<line number>: passed: 3 == l for: 3 == 3
+Condition.tests.cpp:<line number>: passed: 4 == ul for: 4 == 4
+Condition.tests.cpp:<line number>: passed: 5 == c for: 5 == 5
+Condition.tests.cpp:<line number>: passed: 6 == uc for: 6 == 6
+Condition.tests.cpp:<line number>: passed: (std::numeric_limits<uint32_t>::max)() > ul for: 4294967295 (0x<hex digits>) > 4
+Matchers.tests.cpp:<line number>: passed: !(matcher.match( 1 )) for: !false
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: matcher.match( 1 ) for: true
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !(matcher.match( 1 )) for: !false
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: matcher.match( 1 ) for: true
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ContainsSubstring( "STRING" ) for: "this string contains 'abc' as a substring" contains: "STRING"
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: call_count == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: make_data().size() == test_count for: 6 == 6
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "-" )->isConsole() for: true
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom()
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom std exception'
+Approx.tests.cpp:<line number>: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **}
+==
+"{** unexpected enum value **}"
+Skip.tests.cpp:<line number>: skipped: 'This generator is empty'
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "" )->isConsole() for: true
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), EndsWith( "Substring" ) for: "this string contains 'abc' as a substring" ends with: "Substring"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value1 ) == "Value1" for: "Value1" == "Value1"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value2 ) == "Value2" for: "Value2" == "Value2"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value3 ) == "Value3" for: "Value3" == "Value3"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" for: "{** unexpected enum value **}"
+==
+"{** unexpected enum value **}"
+EnumToString.tests.cpp:<line number>: passed: stringify( ec3 ) == "Value2" for: "Value2" == "Value2"
+EnumToString.tests.cpp:<line number>: passed: stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red"
+EnumToString.tests.cpp:<line number>: passed: stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue"
+Approx.tests.cpp:<line number>: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 )
+Condition.tests.cpp:<line number>: failed: data.int_seven == 6 for: 7 == 6
+Condition.tests.cpp:<line number>: failed: data.int_seven == 8 for: 7 == 8
+Condition.tests.cpp:<line number>: failed: data.int_seven == 0 for: 7 == 0
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f
+==
+Approx( 9.10999965667724609 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 )
+Condition.tests.cpp:<line number>: failed: data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+Condition.tests.cpp:<line number>: failed: data.str_hello == "goodbye" for: "hello" == "goodbye"
+Condition.tests.cpp:<line number>: failed: data.str_hello == "hell" for: "hello" == "hell"
+Condition.tests.cpp:<line number>: failed: data.str_hello == "hello1" for: "hello" == "hello1"
+Condition.tests.cpp:<line number>: failed: data.str_hello.size() == 6 for: 5 == 6
+Condition.tests.cpp:<line number>: failed: x == Approx( 1.301 ) for: 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+Condition.tests.cpp:<line number>: passed: data.int_seven == 7 for: 7 == 7
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f
+==
+Approx( 9.10000038146972656 )
+Condition.tests.cpp:<line number>: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005
+==
+Approx( 3.14159265350000005 )
+Condition.tests.cpp:<line number>: passed: data.str_hello == "hello" for: "hello" == "hello"
+Condition.tests.cpp:<line number>: passed: "hello" == data.str_hello for: "hello" == "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello.size() == 5 for: 5 == 5
+Condition.tests.cpp:<line number>: passed: x == Approx( 1.3 ) for: 1.30000000000000027
+==
+Approx( 1.30000000000000004 )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" for: "This exception has overridden what() method"
+==
+"This exception has overridden what() method"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" for: "OperatorException" == "OperatorException"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" for: "StringMakerException"
+==
+"StringMakerException"
+Matchers.tests.cpp:<line number>: failed: expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: failed: throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } for: SpecialException::what special exception has value of 2
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) for: DerivedException::what matches "starts with: "Derived""
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) for: DerivedException::what matches "ends with: "::what""
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) for: DerivedException::what matches "not starts with: "::what""
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) for: SpecialException::what matches "starts with: "Special""
+Exception.tests.cpp:<line number>: passed: thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+Exception.tests.cpp:<line number>: passed: thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) for: "expected exception" equals: "expected exception" (case insensitive)
+Exception.tests.cpp:<line number>: passed: thisThrows(), StartsWith( "expected" ) for: "expected exception" starts with: "expected"
+Exception.tests.cpp:<line number>: passed: thisThrows(), EndsWith( "exception" ) for: "expected exception" ends with: "exception"
+Exception.tests.cpp:<line number>: passed: thisThrows(), ContainsSubstring( "except" ) for: "expected exception" contains: "except"
+Exception.tests.cpp:<line number>: passed: thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) for: "expected exception" contains: "except" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) for: DerivedException::what exception message matches "DerivedException::what"
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) for: DerivedException::what not exception message matches "derivedexception::what"
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) for: SpecialException::what not exception message matches "DerivedException::what"
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) for: SpecialException::what exception message matches "SpecialException::what"
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows(), std::string
+Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
+Message.tests.cpp:<line number>: failed: explicitly
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
+Message.tests.cpp:<line number>: warning: 'This message appears in the output'
+Misc.tests.cpp:<line number>: passed: Factorial(0) == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: Factorial(1) == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: Factorial(2) == 2 for: 2 == 2
+Misc.tests.cpp:<line number>: passed: Factorial(3) == 6 for: 6 == 6
+Misc.tests.cpp:<line number>: passed: Factorial(10) == 3628800 for: 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+GeneratorsImpl.tests.cpp:<line number>: passed: filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+Matchers.tests.cpp:<line number>: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other
+Matchers.tests.cpp:<line number>: passed: -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other
+Matchers.tests.cpp:<line number>: passed: v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other
+Matchers.tests.cpp:<line number>: passed: 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+Matchers.tests.cpp:<line number>: passed: 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0
+Matchers.tests.cpp:<line number>: passed: 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0
+Matchers.tests.cpp:<line number>: passed: -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0
+Matchers.tests.cpp:<line number>: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+Matchers.tests.cpp:<line number>: passed: 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: -0., WithinULP( 0., 0 ) for: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) for: 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: 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) for: 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: 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) for: 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1., 0. )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1., -1. ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1., 0 )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., 0. )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., -0.2 ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., 1. ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: 1., !IsNaN() for: 1.0 not is NaN
+Matchers.tests.cpp:<line number>: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other
+Matchers.tests.cpp:<line number>: passed: -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other
+Matchers.tests.cpp:<line number>: passed: v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0
+Matchers.tests.cpp:<line number>: passed: 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0
+Matchers.tests.cpp:<line number>: passed: 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0
+Matchers.tests.cpp:<line number>: passed: -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0
+Matchers.tests.cpp:<line number>: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 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: 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 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: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1.f, 0.f )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1.f, -1.f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1.f, 0 )
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, 0.f )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, -0.2f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, 1.f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: 1., !IsNaN() for: 1.0 not is NaN
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+Generators.tests.cpp:<line number>: passed: i < 4 for: 1 < 4
+Generators.tests.cpp:<line number>: passed: i < 4 for: 2 < 4
+Generators.tests.cpp:<line number>: passed: i < 4 for: 3 < 4
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: j > 0 for: 1 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 2 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 3 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 1 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 2 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 3 > 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 1 == 1
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 3 == 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 1 == 1
+Generators.tests.cpp:<line number>: passed: chunk2.front() < 3 for: 1 < 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() < 3 for: 2 < 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk(2, value(1)), Catch::GeneratorException
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 1
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 1
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 3
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 2
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 2
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 3
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 3
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 3
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 3
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 123 for: 123 == 123
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4 for: 4 == 4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get().size() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "aa" for: "aa" == "aa"
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "bb" for: "bb" == "bb"
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "cc" for: "cc" == "cc"
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: filter([](int) { return false; }, value(1)), Catch::GeneratorException
+GeneratorsImpl.tests.cpp:<line number>: passed: filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2.0 for: 2.0 == 2.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4.0 for: 4.0 == 4.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 6.0 for: 6.0 == 6.0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2.0 for: 2.0 == 2.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4.0 for: 4.0 == 4.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 6.0 for: 6.0 == 6.0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -2 for: -2 == -2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.90000000000000002
+==
+Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.80000000000000004
+==
+Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.70000000000000007
+==
+Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.60000000000000009
+==
+Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.50000000000000011
+==
+Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.40000000000000013
+==
+Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.30000000000000016
+==
+Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.20000000000000015
+==
+Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.10000000000000014
+==
+Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.00000000000000014
+==
+Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.09999999999999987
+==
+Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.19999999999999987
+==
+Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.29999999999999988
+==
+Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.39999999999999991
+==
+Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.49999999999999989
+==
+Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.59999999999999987
+==
+Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.69999999999999984
+==
+Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.79999999999999982
+==
+Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.8999999999999998
+==
+Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 )
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.69999999999999996
+==
+Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.39999999999999997
+==
+Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.09999999999999998
+==
+Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.20000000000000001
+==
+Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.69999999999999996
+==
+Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.39999999999999997
+==
+Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.09999999999999998
+==
+Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.20000000000000001
+==
+Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.22 ) for: 1.22999999999999998
+>=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.23 ) for: 1.22999999999999998
+>=
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: !(d >= Approx( 1.24 )) for: !(1.22999999999999998
+>=
+Approx( 1.23999999999999999 ))
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998
+>=
+Approx( 1.23999999999999999 )
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h1( dummy ) != h2( dummy ) for: 3422778688 (0x<hex digits>)
+!=
+130711275 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h1( dummy ) == h2( dummy ) for: 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2903002874 (0x<hex digits>)
+!=
+2668622104 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2673152918 (0x<hex digits>)
+!=
+3916075712 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2074929312 (0x<hex digits>)
+!=
+3429949824 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy ) == h( dummy ) for: 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+Message.tests.cpp:<line number>: failed: explicitly with 3 messages: 'This info has multiple parts.' and 'This unscoped info has multiple parts.' and 'Show infos!'
+Message.tests.cpp:<line number>: warning: 'this is a message' with 1 message: 'this is a warning'
+Message.tests.cpp:<line number>: failed: a == 1 for: 2 == 1 with 2 messages: 'this message should be logged' and 'so should this'
+Message.tests.cpp:<line number>: passed: a == 2 for: 2 == 2 with 1 message: 'this message may be logged later'
+Message.tests.cpp:<line number>: failed: a == 1 for: 2 == 1 with 2 messages: 'this message may be logged later' and 'this message should be logged'
+Message.tests.cpp:<line number>: failed: a == 0 for: 2 == 0 with 3 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later'
+Message.tests.cpp:<line number>: passed: a == 2 for: 2 == 2 with 4 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later' and 'but not this'
+Message.tests.cpp:<line number>: passed: i < 10 for: 0 < 10 with 2 messages: 'current counter 0' and 'i := 0'
+Message.tests.cpp:<line number>: passed: i < 10 for: 1 < 10 with 2 messages: 'current counter 1' and 'i := 1'
+Message.tests.cpp:<line number>: passed: i < 10 for: 2 < 10 with 2 messages: 'current counter 2' and 'i := 2'
+Message.tests.cpp:<line number>: passed: i < 10 for: 3 < 10 with 2 messages: 'current counter 3' and 'i := 3'
+Message.tests.cpp:<line number>: passed: i < 10 for: 4 < 10 with 2 messages: 'current counter 4' and 'i := 4'
+Message.tests.cpp:<line number>: passed: i < 10 for: 5 < 10 with 2 messages: 'current counter 5' and 'i := 5'
+Message.tests.cpp:<line number>: passed: i < 10 for: 6 < 10 with 2 messages: 'current counter 6' and 'i := 6'
+Message.tests.cpp:<line number>: passed: i < 10 for: 7 < 10 with 2 messages: 'current counter 7' and 'i := 7'
+Message.tests.cpp:<line number>: passed: i < 10 for: 8 < 10 with 2 messages: 'current counter 8' and 'i := 8'
+Message.tests.cpp:<line number>: passed: i < 10 for: 9 < 10 with 2 messages: 'current counter 9' and 'i := 9'
+Message.tests.cpp:<line number>: failed: i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10'
+AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy
+Condition.tests.cpp:<line number>: failed: data.int_seven != 7 for: 7 != 7
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+Condition.tests.cpp:<line number>: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+Condition.tests.cpp:<line number>: failed: data.str_hello != "hello" for: "hello" != "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello.size() != 5 for: 5 != 5
+Condition.tests.cpp:<line number>: passed: data.int_seven != 6 for: 7 != 6
+Condition.tests.cpp:<line number>: passed: data.int_seven != 8 for: 7 != 8
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f
+!=
+Approx( 9.10999965667724609 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 )
+Condition.tests.cpp:<line number>: passed: data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005
+!=
+Approx( 3.14150000000000018 )
+Condition.tests.cpp:<line number>: passed: data.str_hello != "goodbye" for: "hello" != "goodbye"
+Condition.tests.cpp:<line number>: passed: data.str_hello != "hell" for: "hello" != "hell"
+Condition.tests.cpp:<line number>: passed: data.str_hello != "hello1" for: "hello" != "hello1"
+Condition.tests.cpp:<line number>: passed: data.str_hello.size() != 6 for: 5 != 6
+Json.tests.cpp:<line number>: passed: stream.str() == "" for: "" == ""
+Json.tests.cpp:<line number>: passed: stream.str() == "{\n}" for: "{
+}"
+==
+"{
+}"
+Json.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) for: "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+}" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+}" )
+Json.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) for: "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+}" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n]" for: "[
+]"
+==
+"[
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" for: "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+==
+"[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "{\n}" for: "{
+}"
+==
+"{
+}"
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n]" for: "[
+]"
+==
+"[
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "\"custom\"" for: ""custom"" == ""custom""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\"\"" for: ""\""" == ""\"""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\\\"" for: ""\\"" == ""\\""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"/\"" for: ""/"" == ""/""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\b\"" for: ""\b"" == ""\b""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\f\"" for: ""\f"" == ""\f""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\n\"" for: ""\n"" == ""\n""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\r\"" for: ""\r"" == ""\r""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\t\"" for: ""\t"" == ""\t""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n""
+Compilation.tests.cpp:<line number>: passed: []() { return true; }() for: true
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.24 ) for: 1.22999999999999998
+<=
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.23 ) for: 1.22999999999999998
+<=
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: !(d <= Approx( 1.22 )) for: !(1.22999999999999998
+<=
+Approx( 1.21999999999999997 ))
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998
+<=
+Approx( 1.21999999999999997 )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'was called'
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), !ContainsSubstring( "different" ) for: "this string contains 'abc' as a substring" not contains: "different"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), !ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" not contains: "substring"
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Exception.tests.cpp:<line number>: passed: thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+Exception.tests.cpp:<line number>: failed: thisThrows(), "should fail" for: "expected exception" equals: "should fail"
+Reporters.tests.cpp:<line number>: passed: records == expected for: { "Hello", "world", "Goodbye", "world" }
+==
+{ "Hello", "world", "Goodbye", "world" }
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Generators.tests.cpp:<line number>: passed: values > -6 for: 3 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 4 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 5 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 6 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: -5 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: -4 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 90 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 91 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 92 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 93 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 94 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 95 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 96 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 97 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 98 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 99 > -6
+Misc.tests.cpp:<line number>: warning: 'This one ran'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception'
+Tricky.tests.cpp:<line number>: passed: True for: {?}
+Tricky.tests.cpp:<line number>: passed: !False for: true
+Tricky.tests.cpp:<line number>: passed: !(False) for: !{?}
+Compilation.tests.cpp:<line number>: passed: with 1 message: 'std::is_void<void>::value'
+Compilation.tests.cpp:<line number>: passed: with 1 message: '!(std::is_void<int>::value)'
+Compilation.tests.cpp:<line number>: passed: with 1 message: 'std::is_void<void>::value'
+Compilation.tests.cpp:<line number>: passed: with 1 message: '!(std::is_void<int>::value)'
+Condition.tests.cpp:<line number>: failed: data.int_seven > 7 for: 7 > 7
+Condition.tests.cpp:<line number>: failed: data.int_seven < 7 for: 7 < 7
+Condition.tests.cpp:<line number>: failed: data.int_seven > 8 for: 7 > 8
+Condition.tests.cpp:<line number>: failed: data.int_seven < 6 for: 7 < 6
+Condition.tests.cpp:<line number>: failed: data.int_seven < 0 for: 7 < 0
+Condition.tests.cpp:<line number>: failed: data.int_seven < -1 for: 7 < -1
+Condition.tests.cpp:<line number>: failed: data.int_seven >= 8 for: 7 >= 8
+Condition.tests.cpp:<line number>: failed: data.int_seven <= 6 for: 7 <= 6
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one < 9 for: 9.100000381f < 9
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one > 10 for: 9.100000381f > 10
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929
+Condition.tests.cpp:<line number>: failed: data.str_hello > "hello" for: "hello" > "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "hello" for: "hello" < "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello > "hellp" for: "hello" > "hellp"
+Condition.tests.cpp:<line number>: failed: data.str_hello > "z" for: "hello" > "z"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "hellm" for: "hello" < "hellm"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "a" for: "hello" < "a"
+Condition.tests.cpp:<line number>: failed: data.str_hello >= "z" for: "hello" >= "z"
+Condition.tests.cpp:<line number>: failed: data.str_hello <= "a" for: "hello" <= "a"
+Condition.tests.cpp:<line number>: passed: data.int_seven < 8 for: 7 < 8
+Condition.tests.cpp:<line number>: passed: data.int_seven > 6 for: 7 > 6
+Condition.tests.cpp:<line number>: passed: data.int_seven > 0 for: 7 > 0
+Condition.tests.cpp:<line number>: passed: data.int_seven > -1 for: 7 > -1
+Condition.tests.cpp:<line number>: passed: data.int_seven >= 7 for: 7 >= 7
+Condition.tests.cpp:<line number>: passed: data.int_seven >= 6 for: 7 >= 6
+Condition.tests.cpp:<line number>: passed: data.int_seven <= 7 for: 7 <= 7
+Condition.tests.cpp:<line number>: passed: data.int_seven <= 8 for: 7 <= 8
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one > 9 for: 9.100000381f > 9
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one < 10 for: 9.100000381f < 10
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929
+Condition.tests.cpp:<line number>: passed: data.str_hello <= "hello" for: "hello" <= "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello >= "hello" for: "hello" >= "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello < "hellp" for: "hello" < "hellp"
+Condition.tests.cpp:<line number>: passed: data.str_hello < "zebra" for: "hello" < "zebra"
+Condition.tests.cpp:<line number>: passed: data.str_hello > "hellm" for: "hello" > "hellm"
+Condition.tests.cpp:<line number>: passed: data.str_hello > "a" for: "hello" > "a"
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4242248763 (0x<hex digits>)
+==
+4242248763 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1867888929 (0x<hex digits>)
+==
+1867888929 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1276619030 (0x<hex digits>)
+==
+1276619030 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1911218783 (0x<hex digits>)
+==
+1911218783 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1827115164 (0x<hex digits>)
+==
+1827115164 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Message from section one'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Message from section two'
+Matchers.tests.cpp:<line number>: passed: ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+Matchers.tests.cpp:<line number>: passed: &EvilMatcher(), EvilAddressOfOperatorUsed
+Matchers.tests.cpp:<line number>: passed: EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
+Matchers.tests.cpp:<line number>: passed: ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
+Parse.tests.cpp:<line number>: passed: parseUInt( "0" ) == Optional<unsigned int>{ 0 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "100" ) == Optional<unsigned int>{ 100 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "!!KJHF*#" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "-1" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "4294967296" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "42949672964294967296429496729642949672964294967296" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "2 4" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "0x<hex digits>", 10 )) for: !{?}
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-count=8" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardCount == 8 for: 8 == 8
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) for: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) for: "Shard count must be positive" contains: "Shard count must be positive"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-index=2" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardIndex == 2 for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) for: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-index=0" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardIndex == 0 for: 0 == 0
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "-w", "NoAssertions" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.warnings == WarnAbout::NoAssertions for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: !(cli.parse( { "test", "-w", "NoTests" } )) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) for: 3 == 3
+Condition.tests.cpp:<line number>: passed: p == 0 for: 0 == 0
+Condition.tests.cpp:<line number>: passed: p == pNULL for: 0 == 0
+Condition.tests.cpp:<line number>: passed: p != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: cp != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: cpc != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: returnsNull() == 0 for: {null string} == 0
+Condition.tests.cpp:<line number>: passed: returnsConstNull() == 0 for: {null string} == 0
+Condition.tests.cpp:<line number>: passed: 0 != p for: 0 != 0x<hex digits>
+ToStringGeneral.tests.cpp:<line number>: passed: str1.size() == 3 + 5 for: 8 == 8
+ToStringGeneral.tests.cpp:<line number>: passed: str2.size() == 3 + 10 for: 13 == 13
+ToStringGeneral.tests.cpp:<line number>: passed: str1.size() == 2 + 5 for: 7 == 7
+ToStringGeneral.tests.cpp:<line number>: passed: str2.size() == 2 + 15 for: 17 == 17
+Matchers.tests.cpp:<line number>: passed: "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) for: "foo" matches undescribed predicate
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.processName == "" for: "" == ""
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.processName == "test" for: "test" == "test"
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == -1 for: -1 == -1
+CmdLine.tests.cpp:<line number>: passed: config.noThrow == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications.empty() for: true
+CmdLine.tests.cpp:<line number>: passed: !(cfg.hasTestFilters()) for: !false
+CmdLine.tests.cpp:<line number>: passed: cfg.getReporterSpecs().size() == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } for: {?} == {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.getProcessedReporterSpecs().size() == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } for: {?} == {?}
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") for: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-b"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak == true for: true == true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--break"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-a"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-x", "2"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 2 for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") for: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 3 == 3
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") for: "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-e"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.noThrow for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--nothrow"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.noThrow for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-o", "filename.ext"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--out", "filename.ext"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-abe"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak for: true
+CmdLine.tests.cpp:<line number>: passed: config.noThrow == true for: true == true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "--colour-mode", "default" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--colour-mode", "ansi"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::ANSI for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--colour-mode", "none"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::None for: 3 == 3
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) for: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-samples=200" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkSamples == 200 for: 200 == 200
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkResamples == 20000 for: 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999
+==
+Approx( 0.98999999999999999 )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-no-analysis" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkNoAnalysis for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkWarmupTime == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 3 >= 1
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 2 >= 1
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 1 >= 1
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
+ToString.tests.cpp:<line number>: passed: Catch::Detail::stringify(UsesSentinel{}) == "{ }" for: "{ }" == "{ }"
+Decomposition.tests.cpp:<line number>: failed: truthy(false) for: Hey, its truthy!
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "this string contains 'abc' as a" ) for: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+Reporters.tests.cpp:<line number>: passed: registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" for: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+Matchers.tests.cpp:<line number>: passed: actual, !UnorderedEquals( expected ) for: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag" with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter" with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+<TagsFromMatchingTests>
+ <Tag>
+ <Count>1</Count>
+ <Aliases>
+ <Alias>fakeTag</Alias>
+ </Aliases>
+ </Tag>
+</TagsFromMatchingTests>" contains: "fakeTag" with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+<AvailableReporters>
+ <Reporter>
+ <Name>fake reporter</Name>
+ <Description>fake description</Description>
+ </Reporter>
+</AvailableReporters>" contains: "fake reporter" with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+<MatchingTests>
+ <TestCase>
+ <Name>fake test name</Name>
+ <ClassName/>
+ <Tags>[fakeTestTag]</Tags>
+ <SourceInfo>
+ <File>fake-file.cpp</File>
+ <Line>123456789</Line>
+ </SourceInfo>
+ </TestCase>
+</MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed:
+Message.tests.cpp:<line number>: passed: with 1 message: 'this is a success'
+Message.tests.cpp:<line number>: passed:
+BDD.tests.cpp:<line number>: passed: before == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: after > before for: 1 > 0
+BDD.tests.cpp:<line number>: passed: itDoesThis() for: true
+BDD.tests.cpp:<line number>: passed: itDoesThat() for: true
+BDD.tests.cpp:<line number>: passed: with 1 message: 'boo!'
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+A string sent directly to stdout
+A string sent directly to stderr
+A string sent to stderr via clog
+Approx.tests.cpp:<line number>: passed: d == Approx( 1.23 ) for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.22 ) for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.24 ) for: 1.22999999999999998
+!=
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d == 1.23_a for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != 1.22_a for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: Approx( d ) == 1.23 for: Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+Approx.tests.cpp:<line number>: passed: Approx( d ) != 1.22 for: Approx( 1.22999999999999998 )
+!=
+1.21999999999999997
+Approx.tests.cpp:<line number>: passed: Approx( d ) != 1.24 for: Approx( 1.22999999999999998 )
+!=
+1.23999999999999999
+Message from section one
+Message from section two
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" for: "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" for: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+==
+"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) for: "this string contains 'abc' as a substring" contains: "string"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "abc" ) for: "this string contains 'abc' as a substring" contains: "abc"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), StartsWith( "this" ) for: "this string contains 'abc' as a substring" starts with: "this"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+String.tests.cpp:<line number>: passed: empty.empty() for: true
+String.tests.cpp:<line number>: passed: empty.size() == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.empty() == false for: false == false
+String.tests.cpp:<line number>: passed: s.size() == 5 for: 5 == 5
+String.tests.cpp:<line number>: passed: std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.data() == rawChars for: "hello" == "hello"
+String.tests.cpp:<line number>: passed: original == "original"
+String.tests.cpp:<line number>: passed: original.data()
+String.tests.cpp:<line number>: passed: original.begin() == copy.begin() for: "original string" == "original string"
+String.tests.cpp:<line number>: passed: original.begin() == copy.begin() for: "original string" == "original string"
+String.tests.cpp:<line number>: passed: ss.empty() == false for: false == false
+String.tests.cpp:<line number>: passed: ss.size() == 5 for: 5 == 5
+String.tests.cpp:<line number>: passed: std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: ss == "hello" for: hello == "hello"
+String.tests.cpp:<line number>: passed: ss.size() == 6 for: 6 == 6
+String.tests.cpp:<line number>: passed: std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.data() == s2.data() for: "hello world!" == "hello world!"
+String.tests.cpp:<line number>: passed: s.data() == ss.data() for: "hello world!" == "hello world!"
+String.tests.cpp:<line number>: passed: s.substr(s.size() + 1, 123).empty() for: true
+String.tests.cpp:<line number>: passed: std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.substr(1'000'000, 1).empty() for: true
+String.tests.cpp:<line number>: passed: reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
+String.tests.cpp:<line number>: passed: left == right for: Hello == Hello
+String.tests.cpp:<line number>: passed: left != left.substr(0, 3) for: Hello != Hel
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
+String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
+String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
+String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
+String.tests.cpp:<line number>: passed: lhs == "some string += the stringref contents" for: "some string += the stringref contents"
+==
+"some string += the stringref contents"
+String.tests.cpp:<line number>: passed: together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
+String.tests.cpp:<line number>: passed: with 1 message: 'empty.size() == 0'
+String.tests.cpp:<line number>: passed: with 1 message: 'empty.begin() == empty.end()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.size() == 3'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.data() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.begin() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.begin() != stringref.end()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.substr(10, 0).empty()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref[1] == 'b''
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.size() == 2'
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.data() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.begin() != shortened.end()'
+String.tests.cpp:<line number>: passed: with 1 message: '!(sr1.empty())'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr1.size() == 3'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr2.empty()'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr2.size() == 0'
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToStringChrono.tests.cpp:<line number>: passed: minute == seconds for: 1 m == 60 s
+ToStringChrono.tests.cpp:<line number>: passed: hour != seconds for: 1 h != 60 s
+ToStringChrono.tests.cpp:<line number>: passed: micro != milli for: 1 us != 1 ms
+ToStringChrono.tests.cpp:<line number>: passed: nano != micro for: 1 ns != 1 us
+ToStringChrono.tests.cpp:<line number>: passed: half_minute != femto_second for: 1 [30/1]s != 1 fs
+ToStringChrono.tests.cpp:<line number>: passed: pico_second != atto_second for: 1 ps != 1 as
+ToStringChrono.tests.cpp:<line number>: passed: now != later for: {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+Misc.tests.cpp:<line number>: failed: s1 == s2 for: "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "[@zzz]" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "[@zzz]"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "file" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "file"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "2" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "2"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "10" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+Tag.tests.cpp:<line number>: passed: registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: testCase.tags.size() == 2 for: 2 == 2
+Tag.tests.cpp:<line number>: passed: testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+Misc.tests.cpp:<line number>: passed: std::is_default_constructible<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_default_constructible<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_trivially_copyable<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_trivially_copyable<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 12 == 12
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 12 >= 12
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 12 >= 12
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 8 == 8
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 8 >= 8
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 8 >= 8
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 30 == 30
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 30 >= 30
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 30 >= 30
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Tag.tests.cpp:<line number>: passed: testCase.tags.size() == 1 for: 1 == 1
+Tag.tests.cpp:<line number>: passed: testCase.tags[0] == Tag( "tag1" ) for: {?} == {?}
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'no assertions'
+Tricky.tests.cpp:<line number>: passed: 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472
+CmdLine.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed: explicitly
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: failed: explicitly
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed: unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: failed: unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+Message.tests.cpp:<line number>: failed - but was ok: 1 == 2
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("[fakeTag]"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "[fakeTag]"
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'oops!'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'For some reason someone is throwing a string literal!'
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2b.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase2.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2b.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase3.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1c.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2c.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase3.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+StringManip.tests.cpp:<line number>: passed: trim(std::string(no_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(leading_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(trailing_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( c_array ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_3, !RangeEquals( array_int_4 ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_3, !UnorderedRangeEquals( array_int_4 ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: with 1 message: 'ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a )'
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( list_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( list_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, !RangeEquals( vector_char_b ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, !UnorderedRangeEquals( vector_char_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: a, !RangeEquals( b ) for: { 1, 2, 3 } not elements are { 3, 2, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: '3.14000000000000012'
+UniquePtr.tests.cpp:<line number>: passed: bptr->i == 3 for: 3 == 3
+UniquePtr.tests.cpp:<line number>: passed: bptr->i == 3 for: 3 == 3
+MatchersRanges.tests.cpp:<line number>: passed: data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, allMatch for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !allMatch for: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { false, false, false, false, false } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { false, false, false, false, false } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyMatch(Contains(0) && Contains(10)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !anyMatch for: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, anyMatch for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[1]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[2]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AnyTrue() for: { false, false, false, false, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AnyTrue() for: { false, false, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneMatch(SizeIs(6)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, noneMatch for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !noneMatch for: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[1]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[2]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !NoneTrue() for: { false, false, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, RangeEquals( empty_vector ) for: { } elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, !RangeEquals( non_empty_vector ) for: { } not elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vector, !RangeEquals( empty_vector ) for: { 1 } not elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, RangeEquals( non_empty_array ) for: { 1 } elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( array_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !RangeEquals( array_b ) for: { 1, 2, 3 } not elements are { 2, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !RangeEquals( array_c ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !RangeEquals( vector_b ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, RangeEquals( vector_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !RangeEquals( vector_b, close_enough ) for: { 1, 2, 3 } not elements are { 3, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, RangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) for: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( { 1, 2, 3 } ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) for: { 1, 2, 3 } elements are { 2, 4, 6 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1, !RangeEquals( arr ) for: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked1.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: mocked1, RangeEquals( arr ) for: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, UnorderedRangeEquals( empty_vector ) for: { } unordered elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, !UnorderedRangeEquals( non_empty_vector ) for: { } not unordered elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vector, !UnorderedRangeEquals( empty_vector ) for: { 1 } not unordered elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, UnorderedRangeEquals( non_empty_array ) for: { 1 } unordered elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( array_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !UnorderedRangeEquals( array_b ) for: { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !UnorderedRangeEquals( vector_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !UnorderedRangeEquals( vector_b, close_enough ) for: { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, UnorderedRangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( { 10, 20, 1 } ) for: { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, SizeIs(0) for: { } has size == 0
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, !SizeIs(2) for: { } not has size == 2
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, SizeIs(Lt(2)) for: { } size matches is less than 2
+MatchersRanges.tests.cpp:<line number>: passed: arr, SizeIs(2) for: { 0, 0 } has size == 2
+MatchersRanges.tests.cpp:<line number>: passed: arr, SizeIs( Lt(3)) for: { 0, 0 } size matches is less than 3
+MatchersRanges.tests.cpp:<line number>: passed: arr, !SizeIs(!Lt(3)) for: { 0, 0 } not size matches not is less than 3
+MatchersRanges.tests.cpp:<line number>: passed: map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3
+MatchersRanges.tests.cpp:<line number>: passed: unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12
+MatchersRanges.tests.cpp:<line number>: passed: has_size{}, SizeIs(13) for: {?} has size == 13
+Approx.tests.cpp:<line number>: passed: d == approx( 1.23 ) for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d == approx( 1.22 ) for: 1.22999999999999998
+==
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d == approx( 1.24 ) for: 1.22999999999999998
+==
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 )
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.23 for: Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.22 for: Approx( 1.22999999999999998 )
+==
+1.21999999999999997
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.24 for: Approx( 1.22999999999999998 )
+==
+1.23999999999999999
+Approx.tests.cpp:<line number>: passed: approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'no assertions'
+Matchers.tests.cpp:<line number>: passed: empty, Approx( empty ) for: { } is approx: { }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx<double>( { 1., 2., 3. } ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+Matchers.tests.cpp:<line number>: passed: v1, !Approx( temp ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+Matchers.tests.cpp:<line number>: passed: v1, !Approx( v2 ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).margin( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).epsilon( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: failed: empty, Approx( t1 ) for: { } is approx: { 1.0, 2.0 }
+Matchers.tests.cpp:<line number>: failed: v1, Approx( v2 ) for: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 1 ) for: { 1, 2, 3 } Contains: 1
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 2 ) for: { 1, 2, 3 } Contains: 2
+Matchers.tests.cpp:<line number>: passed: v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) for: { 1, 2, 3 } Contains: 2
+Matchers.tests.cpp:<line number>: passed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, Contains<int>( { 1, 2 } ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, Contains( empty ) for: { 1, 2, 3 } Contains: { }
+Matchers.tests.cpp:<line number>: passed: empty, Contains( empty ) for: { } Contains: { }
+Matchers.tests.cpp:<line number>: passed: v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, Contains( v6 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 1 ) && VectorContains( 2 ) for: { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+Matchers.tests.cpp:<line number>: passed: v, Equals( v ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: empty, Equals( empty ) for: { } Equals: { }
+Matchers.tests.cpp:<line number>: passed: v, Equals<int>( { 1, 2, 3 } ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, Equals( v6 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, UnorderedEquals( v ) for: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, UnorderedEquals<int>( { 3, 2, 1 } ) for: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+Matchers.tests.cpp:<line number>: passed: empty, UnorderedEquals( empty ) for: { } UnorderedEquals: { }
+Matchers.tests.cpp:<line number>: passed: permuted, UnorderedEquals( v ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: permuted, UnorderedEquals( v ) for: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) for: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+Matchers.tests.cpp:<line number>: passed: v5_permuted, UnorderedEquals( v5 ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, VectorContains( -1 ) for: { 1, 2, 3 } Contains: -1
+Matchers.tests.cpp:<line number>: failed: empty, VectorContains( 1 ) for: { } Contains: 1
+Matchers.tests.cpp:<line number>: failed: empty, Contains( v ) for: { } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 4 }
+Matchers.tests.cpp:<line number>: failed: v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2 }
+Matchers.tests.cpp:<line number>: failed: v2, Equals( v ) for: { 1, 2 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: empty, Equals( v ) for: { } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, Equals( empty ) for: { 1, 2, 3 } Equals: { }
+Matchers.tests.cpp:<line number>: failed: v, UnorderedEquals( empty ) for: { 1, 2, 3 } UnorderedEquals: { }
+Matchers.tests.cpp:<line number>: failed: empty, UnorderedEquals( v ) for: { } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: permuted, UnorderedEquals( v ) for: { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: permuted, UnorderedEquals( v ) for: { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+Exception.tests.cpp:<line number>: passed: thisThrows(), std::domain_error
+Exception.tests.cpp:<line number>: passed: thisDoesntThrow()
+Exception.tests.cpp:<line number>: passed: thisThrows()
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Xml.tests.cpp:<line number>: passed: encode( "normal string" ) == "normal string" for: "normal string" == "normal string"
+Xml.tests.cpp:<line number>: passed: encode( "" ) == "" for: "" == ""
+Xml.tests.cpp:<line number>: passed: encode( "smith & jones" ) == "smith &amp; jones" for: "smith &amp; jones" == "smith &amp; jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith < jones" ) == "smith &lt; jones" for: "smith &lt; jones" == "smith &lt; jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith > jones" ) == "smith > jones" for: "smith > jones" == "smith > jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith ]]> jones" ) == "smith ]]&gt; jones" for: "smith ]]&gt; jones"
+==
+"smith ]]&gt; jones"
+Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes ) == stringWithQuotes for: "don't "quote" me on that"
+==
+"don't "quote" me on that"
+Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that"
+==
+"don't &quot;quote&quot; me on that"
+Xml.tests.cpp:<line number>: passed: encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
+Xml.tests.cpp:<line number>: passed: encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
+Xml.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") for: "<?xml version="1.0" encoding="UTF-8"?>
+<Element1 attr1="true" attr2="false"/>
+" ( contains: "attr1="true"" and contains: "attr2="false"" )
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped:
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.point.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.lower_bound.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.upper_bound.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.point.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.lower_bound.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.upper_bound.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.total() == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.low_mild == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.low_severe == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.high_mild == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.high_severe == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.samples_seen == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outlier_variance == 0 for: 0.0 == 0
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( empty ) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: called == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: called == 1 for: 1 == 1
+Tricky.tests.cpp:<line number>: passed: obj.prop != 0 for: 0x<hex digits> != 0
+Misc.tests.cpp:<line number>: passed: flag for: true
+Misc.tests.cpp:<line number>: passed: testCheckedElse( true ) for: true
+Misc.tests.cpp:<line number>: failed - but was ok: flag for: false
+Misc.tests.cpp:<line number>: failed: testCheckedElse( false ) for: false
+Misc.tests.cpp:<line number>: passed: flag for: true
+Misc.tests.cpp:<line number>: passed: testCheckedIf( true ) for: true
+Misc.tests.cpp:<line number>: failed - but was ok: flag for: false
+Misc.tests.cpp:<line number>: failed: testCheckedIf( false ) for: false
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 2 == 2
+Condition.tests.cpp:<line number>: passed: unsigned_char_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_short_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_int_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_long_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_char_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_short_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_int_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_long_var for: 1 == 1
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( 0.f ) == 0 for: 0 == 0
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( -0.f ) == ( 1ULL << 31 ) for: 2147483648 (0x<hex digits>)
+==
+2147483648 (0x<hex digits>)
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( 0. ) == 0 for: 0 == 0
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( -0. ) == ( 1ULL << 63 ) for: 9223372036854775808 (0x<hex digits>)
+==
+9223372036854775808 (0x<hex digits>)
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 for: 1 == 1
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 for: 1 == 1
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 41'
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 43'
+Tag.tests.cpp:<line number>: passed: Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014
+==
+Approx( -0.09203687623843015 )
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361
+==
+Approx( -0.05980291115763361 )
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774
+==
+Approx( 1.38590382434967796 )
+InternalBenchmark.tests.cpp:<line number>: passed: res.mean.count() == rate for: 2000.0 == 2000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res.outliers.total() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: failed: 3 == 4
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+loose text artifact
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<int>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<std::string const&>::value)'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Previous info should not be seen'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'previous unscoped info SHOULD not be seen'
+Misc.tests.cpp:<line number>: passed: l == std::numeric_limits<long long>::max() for: 9223372036854775807 (0x<hex digits>)
+==
+9223372036854775807 (0x<hex digits>)
+Misc.tests.cpp:<line number>: failed: b > a for: 0 > 1
+Misc.tests.cpp:<line number>: failed: b > a for: 1 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 2 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 3 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 4 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 5 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 6 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 7 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 8 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 9 > 1
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[0] (1) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[1] (1) is even'
+Misc.tests.cpp:<line number>: passed: ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[2] (2) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[3] (3) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[4] (5) is even'
+Misc.tests.cpp:<line number>: passed: ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[5] (8) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[6] (13) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[7] (21) is even'
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%debug" )
+UniquePtr.tests.cpp:<line number>: passed: !(lval.has_moved) for: !false
+UniquePtr.tests.cpp:<line number>: passed: rval.has_moved for: true
+UniquePtr.tests.cpp:<line number>: passed: *ptr == std::tuple<int, double, int>{1, 2., 3} for: {?} == {?}
+InternalBenchmark.tests.cpp:<line number>: passed: m == 19. for: 19.0 == 19.0
+InternalBenchmark.tests.cpp:<line number>: passed: x == 17 for: 17 == 17
+InternalBenchmark.tests.cpp:<line number>: passed: x == 23 for: 23 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: r.elapsed.count() == 42 for: 42 == 42
+InternalBenchmark.tests.cpp:<line number>: passed: r.result == 23 for: 23 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: r.iterations == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: s.elapsed.count() == 69 for: 69 == 69
+InternalBenchmark.tests.cpp:<line number>: passed: s.result == 17 for: 17 == 17
+InternalBenchmark.tests.cpp:<line number>: passed: s.iterations == 1 for: 1 == 1
+Message.tests.cpp:<line number>: warning: 'info' with 2 messages: 'unscoped info' and 'and warn may mix'
+Message.tests.cpp:<line number>: warning: 'info' with 2 messages: 'unscoped info' and 'they are not cleared after warnings'
+Misc.tests.cpp:<line number>: failed: a == b for: 1 == 2
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: a < b for: 1 < 2
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: b != a for: 2 != 1
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+a!
+b1!
+Skip.tests.cpp:<line number>: skipped:
+!
+Tricky.tests.cpp:<line number>: passed: s == "7" for: "7" == "7"
+Tricky.tests.cpp:<line number>: passed: ti == typeid(int) for: {?} == {?}
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195
+==
+Approx( 0.13015979861484198 )
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875
+==
+Approx( 0.08457408802851875 )
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405
+==
+Approx( -1.95996398454005449 )
+Misc.tests.cpp:<line number>: passed:
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: failed: false with 1 message: 'this SHOULD be seen'
+Misc.tests.cpp:<line number>: passed: makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
+Misc.tests.cpp:<line number>: passed: makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
+Tricky.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }"
+==
+"{ { 42, "Arthur" }, { "Ford", 24 } }"
+ToString.tests.cpp:<line number>: passed: parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+Tricky.tests.cpp:<line number>: passed: p == 0 for: 0 == 0
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: failed: false with 2 messages: 'this SHOULD be seen' and 'this SHOULD also be seen'
+Message.tests.cpp:<line number>: failed: false with 1 message: 'this SHOULD be seen only ONCE'
+Message.tests.cpp:<line number>: passed: true
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY also be seen only ONCE IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: b != a for: 2 != 1
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "b", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "azcdefcg" for: "azcdefcg" == "azcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "c", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abzdefzg" for: "abzdefzg" == "abzdefzg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "a", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "zbcdefcg" for: "zbcdefcg" == "zbcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "g", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abcdefcz" for: "abcdefcz" == "abcdefcz"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, letters, "replaced") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "replaced" for: "replaced" == "replaced"
+StringManip.tests.cpp:<line number>: passed: !(Catch::replaceInPlace(letters, "x", "z")) for: !false
+StringManip.tests.cpp:<line number>: passed: letters == letters for: "abcdefcg" == "abcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "c", "cc") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abccdefccg" for: "abccdefccg" == "abccdefccg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(s, "--", "-") for: true
+StringManip.tests.cpp:<line number>: passed: s == "--" for: "--" == "--"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(s, "'", "|'") for: true
+StringManip.tests.cpp:<line number>: passed: s == "didn|'t" for: "didn|'t" == "didn|'t"
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%somestream" )
+InternalBenchmark.tests.cpp:<line number>: passed: res.size() == count for: 10 == 10
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 1 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 2 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 4 >= 2
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 8 >= 4
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 16 >= 8
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 32 >= 16
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 64 >= 32
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 128 >= 64
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.elapsed >= time for: 128 ns >= 100 ns
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.result == Timing.iterations + 17 for: 145 == 145
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.iterations >= time.count() for: 128 >= 100
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 1 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 2 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 4 >= 2
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 8 >= 4
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 16 >= 8
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 32 >= 16
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 64 >= 32
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 128 >= 64
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.elapsed >= time for: 128 ns >= 100 ns
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.result == Timing.iterations + 17 for: 145 == 145
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.iterations >= time.count() for: 128 >= 100
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: failed: false with 1 message: '3'
+Message.tests.cpp:<line number>: failed: false with 2 messages: 'hi' and 'i := 7'
+Tag.tests.cpp:<line number>: passed: testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 43'
+StringManip.tests.cpp:<line number>: passed: splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
+StringManip.tests.cpp:<line number>: passed: splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
+StringManip.tests.cpp:<line number>: passed: splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
+Message.tests.cpp:<line number>: failed: false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
+Message.tests.cpp:<line number>: failed: false with 4 messages: 'Count 4 to 6...' and '4' and '5' and '6'
+StringManip.tests.cpp:<line number>: passed: !(startsWith("", 'c')) for: !false
+StringManip.tests.cpp:<line number>: passed: startsWith(std::string("abc"), 'a') for: true
+StringManip.tests.cpp:<line number>: passed: startsWith("def"_catch_sr, 'd') for: true
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+==
+"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptySet ) == "{ }" for: "{ }" == "{ }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }"
+==
+"{ "abc", "def", "ghi" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }"
+==
+"{ { "green", 55 } }"
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%stderr" )->isConsole() for: true
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%stdout" )->isConsole() for: true
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)"
+==
+"op<<(streamable_range)"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)"
+==
+"stringmaker(streamable_range)"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" for: "StringMaker<has_maker>"
+==
+"StringMaker<has_maker>"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" for: "StringMaker<has_maker_and_operator>"
+==
+"StringMaker<has_maker_and_operator>"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(item) == "{?}" for: "{?}" == "{?}"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" for: "operator<<( has_operator )"
+==
+"operator<<( has_operator )"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" for: "operator<<( has_template_operator )"
+==
+"operator<<( has_template_operator )"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }"
+==
+"{ StringMaker<has_maker> }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" for: "{ StringMaker<has_maker_and_operator> }"
+==
+"{ StringMaker<has_maker_and_operator> }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" for: "{ operator<<( has_operator ) }"
+==
+"{ operator<<( has_operator ) }"
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 3 == 3
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 3 == 3
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 5 == 5
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 4 == 4
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+Tag.tests.cpp:<line number>: passed: testcase.tags.size() == 1 for: 1 == 1
+Tag.tests.cpp:<line number>: passed: testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
+Skip.tests.cpp:<line number>: skipped:
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'Why would you throw a std::string?'
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10"
+==
+"Unknown enum value 10"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "E2{0}" for: "E2{0}" == "E2{0}"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "E2{1}" for: "E2{1}" == "E2{1}"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+ToStringTuple.tests.cpp:<line number>: passed: "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }"
+ToStringTuple.tests.cpp:<line number>: passed: "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f"
+ToStringTuple.tests.cpp:<line number>: passed: "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }"
+==
+"{ { 42 }, { }, 1.5f }"
+InternalBenchmark.tests.cpp:<line number>: passed: e.point == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.upper_bound == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.lower_bound == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996
+RandomNumberGeneration.tests.cpp:<line number>: passed: dist.a() == -10 for: -10 == -10
+RandomNumberGeneration.tests.cpp:<line number>: passed: dist.b() == 10 for: 10 == 10
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() != 0 for: 0x<hex digits> != 0
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: !(ptr1) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr2 for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr2 == 1 for: 1 == 1
+UniquePtr.tests.cpp:<line number>: passed: !(ptr2) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr1 for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr1 == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: *ptr1 == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: *ptr2 == 1 for: 1 == 1
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }"
+==
+"{ { "hello" }, { "world" } }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ true }" for: "{ true }" == "{ true }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ true, false }" for: "{ true, false }" == "{ true, false }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+InternalBenchmark.tests.cpp:<line number>: passed: (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() for: 160000000 (0x<hex digits>) > 100
+InternalBenchmark.tests.cpp:<line number>: passed: (end - start) > Catch::Benchmark::Detail::warmup_time for: 310016000 ns > 100 ms
+InternalBenchmark.tests.cpp:<line number>: passed: q1 == 14.5 for: 14.5 == 14.5
+InternalBenchmark.tests.cpp:<line number>: passed: med == 18. for: 18.0 == 18.0
+InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+test cases: 419 | 313 passed | 86 failed | 6 skipped | 14 failed as expected
+assertions: 2269 | 2087 passed | 147 failed | 35 failed as expected
+
+
diff --git a/tests/SelfTest/Baselines/compact.sw.multi.approved.txt b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt
new file mode 100644
index 0000000..9e3e537
--- /dev/null
+++ b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt
@@ -0,0 +1,2849 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+RNG seed: 1
+Misc.tests.cpp:<line number>: passed: with 1 message: 'yay'
+Compilation.tests.cpp:<line number>: passed: y.v == 0 for: 0 == 0
+Compilation.tests.cpp:<line number>: passed: 0 == y.v for: 0 == 0
+Compilation.tests.cpp:<line number>: passed: t1 == t2 for: {?} == {?}
+Compilation.tests.cpp:<line number>: passed: t1 != t2 for: {?} != {?}
+Compilation.tests.cpp:<line number>: passed: t1 < t2 for: {?} < {?}
+Compilation.tests.cpp:<line number>: passed: t1 > t2 for: {?} > {?}
+Compilation.tests.cpp:<line number>: passed: t1 <= t2 for: {?} <= {?}
+Compilation.tests.cpp:<line number>: passed: t1 >= t2 for: {?} >= {?}
+Misc.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed: std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+Compilation.tests.cpp:<line number>: passed: std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+Compilation.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed:
+Compilation.tests.cpp:<line number>: passed: h1 == h2 for: [1403 helper] == [1403 helper]
+Message.tests.cpp:<line number>: warning: '
+This info message starts with a linebreak' with 1 message: '
+This warning message starts with a linebreak'
+Tricky.tests.cpp:<line number>: failed: explicitly with 1 message: '1514'
+Compilation.tests.cpp:<line number>: passed: std::is_same<TypeList<int>, TypeList<int>>::value for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase("spec . char")) for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase("spec , char")) for: true
+TestSpec.tests.cpp:<line number>: passed: !(spec.matches(*fakeTestCase(R"(spec \, char)"))) for: !false
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec {a} char)")) for: true
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec [a] char)")) for: true
+TestSpec.tests.cpp:<line number>: passed: !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) for: !false
+TestSpec.tests.cpp:<line number>: passed: spec.matches(*fakeTestCase(R"(spec \ char)")) for: true
+Generators.tests.cpp:<line number>: passed: counter < 7 for: 3 < 7
+Generators.tests.cpp:<line number>: passed: counter < 7 for: 6 < 7
+Generators.tests.cpp:<line number>: passed: i != j for: 1 != 3
+Generators.tests.cpp:<line number>: passed: i != j for: 1 != 4
+Generators.tests.cpp:<line number>: passed: i != j for: 2 != 3
+Generators.tests.cpp:<line number>: passed: i != j for: 2 != 4
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 3' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 3' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 4' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 1' and 'j := 4' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'A'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 3' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 3' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: with 1 message: 'B'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 4' and 'k := 5'
+PartTracker.tests.cpp:<line number>: passed: with 3 messages: 'i := 2' and 'j := 4' and 'k := 6'
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 1
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 2
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 1
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 2
+PartTracker.tests.cpp:<line number>: passed: m for: 3
+PartTracker.tests.cpp:<line number>: passed: n for: 3
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
+Exception.tests.cpp:<line number>: passed: thisThrows() with 1 message: 'answer := 42'
+Compilation.tests.cpp:<line number>: passed: 42 == f for: 42 == {?}
+Compilation.tests.cpp:<line number>: passed: a == t for: 3 == 3
+Compilation.tests.cpp:<line number>: passed: a == t for: 3 == 3
+Compilation.tests.cpp:<line number>: passed: throws_int(true)
+Compilation.tests.cpp:<line number>: passed: throws_int(true), int
+Compilation.tests.cpp:<line number>: passed: throws_int(false)
+Compilation.tests.cpp:<line number>: passed: "aaa", Catch::Matchers::EndsWith("aaa") for: "aaa" ends with: "aaa"
+Compilation.tests.cpp:<line number>: passed: templated_tests<int>(3) for: true
+Misc.tests.cpp:<line number>: failed: f() == 0 for: 1 == 0
+Misc.tests.cpp:<line number>: passed: errno_after == 1 for: 1 == 1
+Compilation.tests.cpp:<line number>: passed: x == 4 for: {?} == 4 with 1 message: 'dummy := 0'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Misc.tests.cpp:<line number>: passed: with 1 message: 'Everything is OK'
+Condition.tests.cpp:<line number>: failed: false != false
+Condition.tests.cpp:<line number>: failed: true != true
+Condition.tests.cpp:<line number>: failed: !true for: false
+Condition.tests.cpp:<line number>: failed: !(true) for: !true
+Condition.tests.cpp:<line number>: failed: !trueValue for: false
+Condition.tests.cpp:<line number>: failed: !(trueValue) for: !true
+Condition.tests.cpp:<line number>: failed: !(1 == 1) for: false
+Condition.tests.cpp:<line number>: failed: !(1 == 1)
+Condition.tests.cpp:<line number>: passed: false == false
+Condition.tests.cpp:<line number>: passed: true == true
+Condition.tests.cpp:<line number>: passed: !false for: true
+Condition.tests.cpp:<line number>: passed: !(false) for: !false
+Condition.tests.cpp:<line number>: passed: !falseValue for: true
+Condition.tests.cpp:<line number>: passed: !(falseValue) for: !false
+Condition.tests.cpp:<line number>: passed: !(1 == 2) for: true
+Condition.tests.cpp:<line number>: passed: !(1 == 2)
+Tricky.tests.cpp:<line number>: passed: is_true<true>::value == true for: true == true
+Tricky.tests.cpp:<line number>: passed: true == is_true<true>::value for: true == true
+Tricky.tests.cpp:<line number>: passed: is_true<false>::value == false for: false == false
+Tricky.tests.cpp:<line number>: passed: false == is_true<false>::value for: false == false
+Tricky.tests.cpp:<line number>: passed: !is_true<false>::value for: true
+Tricky.tests.cpp:<line number>: passed: !!is_true<true>::value for: true
+Tricky.tests.cpp:<line number>: passed: is_true<true>::value for: true
+Tricky.tests.cpp:<line number>: passed: !(is_true<false>::value) for: !false
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 1 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 1 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 2 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 2 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 4
+Generators.tests.cpp:<line number>: passed: y < z for: 4 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 5
+Generators.tests.cpp:<line number>: passed: y < z for: 5 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 7
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 7
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 8
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 8
+Generators.tests.cpp:<line number>: passed: x < y for: 3 < 6
+Generators.tests.cpp:<line number>: passed: y < z for: 6 < 9
+Generators.tests.cpp:<line number>: passed: x < z for: 3 < 9
+Class.tests.cpp:<line number>: failed: s == "world" for: "hello" == "world"
+Class.tests.cpp:<line number>: passed: s == "hello" for: "hello" == "hello"
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+Class.tests.cpp:<line number>: failed: Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+Class.tests.cpp:<line number>: passed: Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2
+Class.tests.cpp:<line number>: failed: Template_Fixture<TestType>::m_a == 2 for: 1 == 2
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 1 == 0
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 3 == 0
+Class.tests.cpp:<line number>: failed: Nttp_Fixture<V>::value == 0 for: 6 == 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 1 > 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 3 > 0
+Class.tests.cpp:<line number>: passed: Nttp_Fixture<V>::value > 0 for: 6 > 0
+Class.tests.cpp:<line number>: failed: m_a == 2 for: 1 == 2
+Class.tests.cpp:<line number>: passed: m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: m_a++ == 0 for: 0 == 0
+Class.tests.cpp:<line number>: failed: m_a == 0 for: 1 == 0
+Class.tests.cpp:<line number>: passed: m_a++ == 0 for: 0 == 0
+Class.tests.cpp:<line number>: passed: m_a == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 42 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 9 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 42 > 0
+Misc.tests.cpp:<line number>: passed: x.size() > 0 for: 9 > 0
+Approx.tests.cpp:<line number>: passed: d == 1.23_a for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != 1.22_a for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: -d == -1.23_a for: -1.22999999999999998
+==
+Approx( -1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d == 1.2_a .epsilon(.1) for: 1.22999999999999998
+==
+Approx( 1.19999999999999996 )
+Approx.tests.cpp:<line number>: passed: d != 1.2_a .epsilon(.001) for: 1.22999999999999998
+!=
+Approx( 1.19999999999999996 )
+Approx.tests.cpp:<line number>: passed: d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'that's not flying - that's failing in style'
+Misc.tests.cpp:<line number>: failed: explicitly with 1 message: 'to infinity and beyond'
+Tricky.tests.cpp:<line number>: failed: &o1 == &o2 for: 0x<hex digits> == 0x<hex digits>
+Tricky.tests.cpp:<line number>: failed: o1 == o2 for: {?} == {?}
+Approx.tests.cpp:<line number>: passed: 104.0 != Approx(100.0) for: 104.0 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 )
+Tricky.tests.cpp:<line number>: passed: i++ == 7 for: 7 == 7
+Tricky.tests.cpp:<line number>: passed: i++ == 8 for: 8 == 8
+Exception.tests.cpp:<line number>: passed: 1 == 1
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'anonymous test case'
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(0)
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(1234656)
+Approx.tests.cpp:<line number>: passed: Approx(0).margin(-2), std::domain_error
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(0)
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(1)
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(-0.001), std::domain_error
+Approx.tests.cpp:<line number>: passed: Approx(0).epsilon(1.0001), std::domain_error
+Approx.tests.cpp:<line number>: passed: 0.25f == Approx(0.0f).margin(0.25f) for: 0.25f == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 0.0f == Approx(0.25f).margin(0.25f) for: 0.0f == Approx( 0.25 )
+Approx.tests.cpp:<line number>: passed: 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 )
+Approx.tests.cpp:<line number>: passed: 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 )
+Approx.tests.cpp:<line number>: passed: 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 )
+Approx.tests.cpp:<line number>: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279
+==
+Approx( 3.14100000000000001 )
+Approx.tests.cpp:<line number>: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279
+!=
+Approx( 3.14100000000000001 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.231 ) for: 1.22999999999999998
+!=
+Approx( 1.23100000000000009 )
+Approx.tests.cpp:<line number>: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998
+==
+Approx( 1.23100000000000009 )
+Approx.tests.cpp:<line number>: passed: 1.23f == Approx( 1.23f ) for: 1.230000019f
+==
+Approx( 1.23000001907348633 )
+Approx.tests.cpp:<line number>: passed: 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 1 == Approx( 1 ) for: 1 == Approx( 1.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( 0 ) for: 0 == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( dZero) for: 0 == Approx( 0.0 )
+Approx.tests.cpp:<line number>: passed: 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 )
+Approx.tests.cpp:<line number>: passed: 1.234f == Approx( dMedium ) for: 1.233999968f
+==
+Approx( 1.23399999999999999 )
+Approx.tests.cpp:<line number>: passed: dMedium == Approx( 1.234f ) for: 1.23399999999999999
+==
+Approx( 1.23399996757507324 )
+Matchers.tests.cpp:<line number>: passed: 1, Predicate<int>( alwaysTrue, "always true" ) for: 1 matches predicate: "always true"
+Matchers.tests.cpp:<line number>: passed: 1, !Predicate<int>( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false"
+Matchers.tests.cpp:<line number>: passed: "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal"
+Matchers.tests.cpp:<line number>: passed: "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) for: "This wouldn't pass" not matches undescribed predicate
+Compilation.tests.cpp:<line number>: passed: lhs | rhs for: Val: 1 | Val: 2
+Compilation.tests.cpp:<line number>: passed: !(lhs & rhs) for: !(Val: 1 & Val: 2)
+Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
+Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
+Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: true
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(1) for: { 1, 2, 3 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: b, Contains(1) for: { 0, 1, 2 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: c, !Contains(1) for: { 4, 5, 6 } not contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(0, close_enough) for: { 1, 2, 3 } contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: b, Contains(0, close_enough) for: { 0, 1, 2 } contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: c, !Contains(0, close_enough) for: { 4, 5, 6 } not contains element 0
+MatchersRanges.tests.cpp:<line number>: passed: a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) for: { "abc", "abcd", "abcde" } contains element 4
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(1) for: { 1, 2, 3, 4, 5 } contains element 1
+MatchersRanges.tests.cpp:<line number>: passed: in, !Contains(8) for: { 1, 2, 3, 4, 5 } not contains element 8
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(MoveOnlyTestElement{ 2 }) for: { 1, 2, 3 } contains element 2
+MatchersRanges.tests.cpp:<line number>: passed: in, !Contains(MoveOnlyTestElement{ 9 }) for: { 1, 2, 3 } not contains element 9
+MatchersRanges.tests.cpp:<line number>: passed: in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) for: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+MatchersRanges.tests.cpp:<line number>: passed: empty_array, IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, !IsEmpty() for: { 0.0 } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vec, !IsEmpty() for: { 'a', 'b', 'c' } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: inner_lists_are_empty, !IsEmpty() for: { { } } not is empty
+MatchersRanges.tests.cpp:<line number>: passed: inner_lists_are_empty.front(), IsEmpty() for: { } is empty
+MatchersRanges.tests.cpp:<line number>: passed: has_empty{}, !IsEmpty() for: {?} not is empty
+MatchersRanges.tests.cpp:<line number>: passed: unrelated::ADL_empty{}, IsEmpty() for: {?} is empty
+Message.tests.cpp:<line number>: passed: with 7 messages: 'a := 1' and 'b := 2' and 'c := 3' and 'a + b := 3' and 'a+b := 3' and 'c > b := true' and 'a == 1 := true'
+Message.tests.cpp:<line number>: passed: with 7 messages: 'custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0' and 'custom_index_op<int>{1, 2, 3}[(0, 1)] := 0' and 'custom_index_op<int>{1, 2, 3}[0] := 0' and '(helper_1436<int, int>{12, -12}) := { 12, -12 }' and '(helper_1436<int, int>(-12, 12)) := { -12, 12 }' and '(1, 2) := 2' and '(2, 3) := 3'
+Message.tests.cpp:<line number>: passed: with 11 messages: '("comma, in string", "escaped, \", ") := "escaped, ", "' and '"single quote in string,'," := "single quote in string,',"' and '"some escapes, \\,\\\\" := "some escapes, \,\\"' and '"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"' and ''"' := '"'' and ''\'' := '''' and '',' := ','' and ''}' := '}'' and '')' := ')'' and ''(' := '('' and ''{' := '{''
+ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: 'i := 2'
+ToStringGeneral.tests.cpp:<line number>: passed: true with 1 message: '3'
+Details.tests.cpp:<line number>: passed: eq( "", "" ) for: true
+Details.tests.cpp:<line number>: passed: !(eq( "", "a" )) for: !false
+Details.tests.cpp:<line number>: passed: eq( "a", "a" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "a", "A" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "A", "a" ) for: true
+Details.tests.cpp:<line number>: passed: eq( "A", "A" ) for: true
+Details.tests.cpp:<line number>: passed: !(eq( "a", "b" )) for: !false
+Details.tests.cpp:<line number>: passed: !(eq( "a", "B" )) for: !false
+Details.tests.cpp:<line number>: passed: lt( "", "a" ) for: true
+Details.tests.cpp:<line number>: passed: !(lt( "a", "a" )) for: !false
+Details.tests.cpp:<line number>: passed: !(lt( "", "" )) for: !false
+Details.tests.cpp:<line number>: passed: lt( "a", "b" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "a", "B" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "A", "b" ) for: true
+Details.tests.cpp:<line number>: passed: lt( "A", "B" ) for: true
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\t') == "'\\t'" for: "'\t'" == "'\t'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\n') == "'\\n'" for: "'\n'" == "'\n'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\r') == "'\\r'" for: "'\r'" == "'\r'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify('\f') == "'\\f'" for: "'\f'" == "'\f'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( ' ' ) == "' '" for: "' '" == "' '"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( 'A' ) == "'A'" for: "'A'" == "'A'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( 'z' ) == "'z'" for: "'z'" == "'z'"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( '\0' ) == "0" for: "0" == "0"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" for: "2" == "2"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" for: "5" == "5"
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: result for: {?}
+Clara.tests.cpp:<line number>: passed: result.type() == Catch::Clara::Detail::ResultType::Ok for: 0 == 0
+Clara.tests.cpp:<line number>: passed: parsed.type() == Catch::Clara::ParseResultType::NoMatch for: 1 == 1
+Clara.tests.cpp:<line number>: passed: parsed.remainingTokens().count() == 2 for: 2 == 2
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: name.empty() for: true
+Clara.tests.cpp:<line number>: passed: name == "foo" for: "foo" == "foo"
+Clara.tests.cpp:<line number>: passed: !(parse_result) for: !{?}
+Clara.tests.cpp:<line number>: passed: parse_result for: {?}
+Clara.tests.cpp:<line number>: passed: res == std::vector<std::string>{ "aaa", "bbb" } for: { "aaa", "bbb" } == { "aaa", "bbb" }
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str().empty() for: true
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" for: "1
+Using code: 2
+2
+Using code: 0
+3
+"
+==
+"1
+Using code: 2
+2
+Using code: 0
+3
+"
+ColourImpl.tests.cpp:<line number>: passed: streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" for: "Using code: 2
+A
+B
+Using code: 0
+C
+"
+==
+"Using code: 2
+A
+B
+Using code: 0
+C
+"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() && MatcherB() ) && MatcherC() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() && ( MatcherB() && MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() || MatcherB() ) || MatcherC() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || ( MatcherB() || MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+Matchers.tests.cpp:<line number>: passed: 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+Matchers.tests.cpp:<line number>: passed: 0, !MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value'
+Matchers.tests.cpp:<line number>: passed: 1, !!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+Matchers.tests.cpp:<line number>: passed: 0, !!!MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value'
+Matchers.tests.cpp:<line number>: passed: 1, !!!!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) && EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::MatchAnyOf<std::string>>::value'
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() && MatcherB() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail::MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric<MatcherB>>>::value'
+Matchers.tests.cpp:<line number>: passed: 1, MatcherA() || !MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+Matchers.tests.cpp:<line number>: passed: vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) for: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+Matchers.tests.cpp:<line number>: passed: str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+Matchers.tests.cpp:<line number>: passed: str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) for: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+Matchers.tests.cpp:<line number>: passed: str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) for: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+Matchers.tests.cpp:<line number>: passed: container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) for: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+Tricky.tests.cpp:<line number>: passed: std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+Tricky.tests.cpp:<line number>: passed: std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+Tricky.tests.cpp:<line number>: passed: !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: true
+Tricky.tests.cpp:<line number>: passed: std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+Tricky.tests.cpp:<line number>: passed: a for: 0x<hex digits>
+Tricky.tests.cpp:<line number>: passed: a == &foo for: 0x<hex digits> == 0x<hex digits>
+RandomNumberGeneration.tests.cpp:<line number>: passed: SimplePcg32{} == SimplePcg32{} for: {?} == {?}
+RandomNumberGeneration.tests.cpp:<line number>: passed: SimplePcg32{ 0 } != SimplePcg32{} for: {?} != {?}
+RandomNumberGeneration.tests.cpp:<line number>: passed: !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) for: !({?} == {?})
+RandomNumberGeneration.tests.cpp:<line number>: passed: !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) for: !({?} != {?})
+Approx.tests.cpp:<line number>: passed: td == Approx(10.0) for: StrongDoubleTypedef(10) == Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: Approx(10.0) == td for: Approx( 10.0 ) == StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td != Approx(11.0) for: StrongDoubleTypedef(10) != Approx( 11.0 )
+Approx.tests.cpp:<line number>: passed: Approx(11.0) != td for: Approx( 11.0 ) != StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td <= Approx(10.0) for: StrongDoubleTypedef(10) <= Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: td <= Approx(11.0) for: StrongDoubleTypedef(10) <= Approx( 11.0 )
+Approx.tests.cpp:<line number>: passed: Approx(10.0) <= td for: Approx( 10.0 ) <= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: Approx(9.0) <= td for: Approx( 9.0 ) <= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: td >= Approx(9.0) for: StrongDoubleTypedef(10) >= Approx( 9.0 )
+Approx.tests.cpp:<line number>: passed: td >= Approx(td) for: StrongDoubleTypedef(10) >= Approx( 10.0 )
+Approx.tests.cpp:<line number>: passed: Approx(td) >= td for: Approx( 10.0 ) >= StrongDoubleTypedef(10)
+Approx.tests.cpp:<line number>: passed: Approx(11.0) >= td for: Approx( 11.0 ) >= StrongDoubleTypedef(10)
+Condition.tests.cpp:<line number>: passed: 54 == 6*9 for: 54 == 54
+Condition.tests.cpp:<line number>: passed: ( -1 > 2u ) for: true
+Condition.tests.cpp:<line number>: passed: -1 > 2u for: -1 > 2
+Condition.tests.cpp:<line number>: passed: ( 2u < -1 ) for: true
+Condition.tests.cpp:<line number>: passed: 2u < -1 for: 2 < -1
+Condition.tests.cpp:<line number>: passed: ( minInt > 2u ) for: true
+Condition.tests.cpp:<line number>: passed: minInt > 2u for: -2147483648 > 2
+Condition.tests.cpp:<line number>: passed: i == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: ui == 2 for: 2 == 2
+Condition.tests.cpp:<line number>: passed: l == 3 for: 3 == 3
+Condition.tests.cpp:<line number>: passed: ul == 4 for: 4 == 4
+Condition.tests.cpp:<line number>: passed: c == 5 for: 5 == 5
+Condition.tests.cpp:<line number>: passed: uc == 6 for: 6 == 6
+Condition.tests.cpp:<line number>: passed: 1 == i for: 1 == 1
+Condition.tests.cpp:<line number>: passed: 2 == ui for: 2 == 2
+Condition.tests.cpp:<line number>: passed: 3 == l for: 3 == 3
+Condition.tests.cpp:<line number>: passed: 4 == ul for: 4 == 4
+Condition.tests.cpp:<line number>: passed: 5 == c for: 5 == 5
+Condition.tests.cpp:<line number>: passed: 6 == uc for: 6 == 6
+Condition.tests.cpp:<line number>: passed: (std::numeric_limits<uint32_t>::max)() > ul for: 4294967295 (0x<hex digits>) > 4
+Matchers.tests.cpp:<line number>: passed: !(matcher.match( 1 )) for: !false
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: matcher.match( 1 ) for: true
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !(matcher.match( 1 )) for: !false
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: matcher.match( 1 ) for: true
+Matchers.tests.cpp:<line number>: passed: first.matchCalled for: true
+Matchers.tests.cpp:<line number>: passed: !second.matchCalled for: true
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ContainsSubstring( "STRING" ) for: "this string contains 'abc' as a substring" contains: "STRING"
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: elem % 2 == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: call_count == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: make_data().size() == test_count for: 6 == 6
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "-" )->isConsole() for: true
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom()
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom std exception'
+Approx.tests.cpp:<line number>: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 )
+Approx.tests.cpp:<line number>: passed: std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
+ToString.tests.cpp:<line number>: passed: enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **}
+==
+"{** unexpected enum value **}"
+Skip.tests.cpp:<line number>: skipped: 'This generator is empty'
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "" )->isConsole() for: true
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), EndsWith( "Substring" ) for: "this string contains 'abc' as a substring" ends with: "Substring"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value1 ) == "Value1" for: "Value1" == "Value1"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value2 ) == "Value2" for: "Value2" == "Value2"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value3 ) == "Value3" for: "Value3" == "Value3"
+EnumToString.tests.cpp:<line number>: passed: stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" for: "{** unexpected enum value **}"
+==
+"{** unexpected enum value **}"
+EnumToString.tests.cpp:<line number>: passed: stringify( ec3 ) == "Value2" for: "Value2" == "Value2"
+EnumToString.tests.cpp:<line number>: passed: stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red"
+EnumToString.tests.cpp:<line number>: passed: stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue"
+Approx.tests.cpp:<line number>: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 )
+Condition.tests.cpp:<line number>: failed: data.int_seven == 6 for: 7 == 6
+Condition.tests.cpp:<line number>: failed: data.int_seven == 8 for: 7 == 8
+Condition.tests.cpp:<line number>: failed: data.int_seven == 0 for: 7 == 0
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f
+==
+Approx( 9.10999965667724609 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 )
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 )
+Condition.tests.cpp:<line number>: failed: data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+Condition.tests.cpp:<line number>: failed: data.str_hello == "goodbye" for: "hello" == "goodbye"
+Condition.tests.cpp:<line number>: failed: data.str_hello == "hell" for: "hello" == "hell"
+Condition.tests.cpp:<line number>: failed: data.str_hello == "hello1" for: "hello" == "hello1"
+Condition.tests.cpp:<line number>: failed: data.str_hello.size() == 6 for: 5 == 6
+Condition.tests.cpp:<line number>: failed: x == Approx( 1.301 ) for: 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+Condition.tests.cpp:<line number>: passed: data.int_seven == 7 for: 7 == 7
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f
+==
+Approx( 9.10000038146972656 )
+Condition.tests.cpp:<line number>: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005
+==
+Approx( 3.14159265350000005 )
+Condition.tests.cpp:<line number>: passed: data.str_hello == "hello" for: "hello" == "hello"
+Condition.tests.cpp:<line number>: passed: "hello" == data.str_hello for: "hello" == "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello.size() == 5 for: 5 == 5
+Condition.tests.cpp:<line number>: passed: x == Approx( 1.3 ) for: 1.30000000000000027
+==
+Approx( 1.30000000000000004 )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" for: "This exception has overridden what() method"
+==
+"This exception has overridden what() method"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" for: "OperatorException" == "OperatorException"
+ToStringGeneral.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" for: "StringMakerException"
+==
+"StringMakerException"
+Matchers.tests.cpp:<line number>: failed: expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+Matchers.tests.cpp:<line number>: failed: throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: failed: throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } for: SpecialException::what special exception has value of 2
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) for: DerivedException::what matches "starts with: "Derived""
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) for: DerivedException::what matches "ends with: "::what""
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) for: DerivedException::what matches "not starts with: "::what""
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) for: SpecialException::what matches "starts with: "Special""
+Exception.tests.cpp:<line number>: passed: thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+Exception.tests.cpp:<line number>: passed: thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) for: "expected exception" equals: "expected exception" (case insensitive)
+Exception.tests.cpp:<line number>: passed: thisThrows(), StartsWith( "expected" ) for: "expected exception" starts with: "expected"
+Exception.tests.cpp:<line number>: passed: thisThrows(), EndsWith( "exception" ) for: "expected exception" ends with: "exception"
+Exception.tests.cpp:<line number>: passed: thisThrows(), ContainsSubstring( "except" ) for: "expected exception" contains: "except"
+Exception.tests.cpp:<line number>: passed: thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) for: "expected exception" contains: "except" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) for: DerivedException::what exception message matches "DerivedException::what"
+Matchers.tests.cpp:<line number>: passed: throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) for: DerivedException::what not exception message matches "derivedexception::what"
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) for: SpecialException::what not exception message matches "DerivedException::what"
+Matchers.tests.cpp:<line number>: passed: throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) for: SpecialException::what exception message matches "SpecialException::what"
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows(), std::string
+Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
+Message.tests.cpp:<line number>: failed: explicitly
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
+Message.tests.cpp:<line number>: warning: 'This message appears in the output'
+Misc.tests.cpp:<line number>: passed: Factorial(0) == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: Factorial(1) == 1 for: 1 == 1
+Misc.tests.cpp:<line number>: passed: Factorial(2) == 2 for: 2 == 2
+Misc.tests.cpp:<line number>: passed: Factorial(3) == 6 for: 6 == 6
+Misc.tests.cpp:<line number>: passed: Factorial(10) == 3628800 for: 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+GeneratorsImpl.tests.cpp:<line number>: passed: filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+Matchers.tests.cpp:<line number>: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other
+Matchers.tests.cpp:<line number>: passed: -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other
+Matchers.tests.cpp:<line number>: passed: v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other
+Matchers.tests.cpp:<line number>: passed: 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+Matchers.tests.cpp:<line number>: passed: 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0
+Matchers.tests.cpp:<line number>: passed: 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0
+Matchers.tests.cpp:<line number>: passed: -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0
+Matchers.tests.cpp:<line number>: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+Matchers.tests.cpp:<line number>: passed: 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+Matchers.tests.cpp:<line number>: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: -0., WithinULP( 0., 0 ) for: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) for: 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: 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) for: 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: 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) for: 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1., 0. )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1., -1. ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1., 0 )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., 0. )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., -0.2 ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1., 1. ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: 1., !IsNaN() for: 1.0 not is NaN
+Matchers.tests.cpp:<line number>: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other
+Matchers.tests.cpp:<line number>: passed: 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other
+Matchers.tests.cpp:<line number>: passed: -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other
+Matchers.tests.cpp:<line number>: passed: v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0
+Matchers.tests.cpp:<line number>: passed: 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0
+Matchers.tests.cpp:<line number>: passed: 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0
+Matchers.tests.cpp:<line number>: passed: -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0
+Matchers.tests.cpp:<line number>: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+Matchers.tests.cpp:<line number>: passed: 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+Matchers.tests.cpp:<line number>: passed: 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 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: 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 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: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1.f, 0.f )
+Matchers.tests.cpp:<line number>: passed: WithinAbs( 1.f, -1.f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1.f, 0 )
+Matchers.tests.cpp:<line number>: passed: WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, 0.f )
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, -0.2f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: WithinRel( 1.f, 1.f ), std::domain_error
+Matchers.tests.cpp:<line number>: passed: 1., !IsNaN() for: 1.0 not is NaN
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+Generators.tests.cpp:<line number>: passed: i < 4 for: 1 < 4
+Generators.tests.cpp:<line number>: passed: i < 4 for: 2 < 4
+Generators.tests.cpp:<line number>: passed: i < 4 for: 3 < 4
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i % 2 == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: i.size() == 1 for: 1 == 1
+Generators.tests.cpp:<line number>: passed: j > 0 for: 1 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 2 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 3 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 1 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 2 > 0
+Generators.tests.cpp:<line number>: passed: j > 0 for: 3 > 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 1 == 1
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 3 == 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 1 == 1
+Generators.tests.cpp:<line number>: passed: chunk2.front() < 3 for: 1 < 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 2 for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() == chunk2.back() for: 2 == 2
+Generators.tests.cpp:<line number>: passed: chunk2.front() < 3 for: 2 < 3
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk2.size() == 0 for: 0 == 0
+Generators.tests.cpp:<line number>: passed: chunk(2, value(1)), Catch::GeneratorException
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 1
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 1
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 4 > 3
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 2
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 2
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 8 > 3
+Generators.tests.cpp:<line number>: passed: j < i for: -3 < 3
+Generators.tests.cpp:<line number>: passed: j < i for: -2 < 3
+Generators.tests.cpp:<line number>: passed: j < i for: -1 < 3
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 1
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 2
+Generators.tests.cpp:<line number>: passed: 4u * i > str.size() for: 12 > 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 123 for: 123 == 123
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4 for: 4 == 4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get().size() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "aa" for: "aa" == "aa"
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "bb" for: "bb" == "bb"
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == "cc" for: "cc" == "cc"
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: filter([](int) { return false; }, value(1)), Catch::GeneratorException
+GeneratorsImpl.tests.cpp:<line number>: passed: filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2.0 for: 2.0 == 2.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4.0 for: 4.0 == 4.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 6.0 for: 6.0 == 6.0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2.0 for: 2.0 == 2.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 4.0 for: 4.0 == 4.0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 6.0 for: 6.0 == 6.0
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 3 for: 3 == 3
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -2 for: -2 == -2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 1 for: 1 == 1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 0 for: 0 == 0
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.90000000000000002
+==
+Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.80000000000000004
+==
+Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.70000000000000007
+==
+Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.60000000000000009
+==
+Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.50000000000000011
+==
+Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.40000000000000013
+==
+Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.30000000000000016
+==
+Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.20000000000000015
+==
+Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.10000000000000014
+==
+Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.00000000000000014
+==
+Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.09999999999999987
+==
+Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.19999999999999987
+==
+Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.29999999999999988
+==
+Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.3'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.39999999999999991
+==
+Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.49999999999999989
+==
+Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.59999999999999987
+==
+Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.6'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.69999999999999984
+==
+Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.79999999999999982
+==
+Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.8'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.8999999999999998
+==
+Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.9'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 )
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.69999999999999996
+==
+Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.39999999999999997
+==
+Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.09999999999999998
+==
+Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.20000000000000001
+==
+Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.69999999999999996
+==
+Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.39999999999999997
+==
+Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: -0.09999999999999998
+==
+Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.20000000000000001
+==
+Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5'
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 5 for: 5 == 5
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == 2 for: 2 == 2
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -1 for: -1 == -1
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -4 for: -4 == -4
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.next() for: true
+GeneratorsImpl.tests.cpp:<line number>: passed: gen.get() == -7 for: -7 == -7
+GeneratorsImpl.tests.cpp:<line number>: passed: !(gen.next()) for: !false
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.22 ) for: 1.22999999999999998
+>=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.23 ) for: 1.22999999999999998
+>=
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: !(d >= Approx( 1.24 )) for: !(1.22999999999999998
+>=
+Approx( 1.23999999999999999 ))
+Approx.tests.cpp:<line number>: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998
+>=
+Approx( 1.23999999999999999 )
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h1( dummy ) != h2( dummy ) for: 3422778688 (0x<hex digits>)
+!=
+130711275 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h1( dummy ) == h2( dummy ) for: 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2903002874 (0x<hex digits>)
+!=
+2668622104 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2673152918 (0x<hex digits>)
+!=
+3916075712 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy1 ) != h( dummy2 ) for: 2074929312 (0x<hex digits>)
+!=
+3429949824 (0x<hex digits>)
+TestCaseInfoHasher.tests.cpp:<line number>: passed: h( dummy ) == h( dummy ) for: 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+Message.tests.cpp:<line number>: failed: explicitly with 3 messages: 'This info has multiple parts.' and 'This unscoped info has multiple parts.' and 'Show infos!'
+Message.tests.cpp:<line number>: warning: 'this is a message' with 1 message: 'this is a warning'
+Message.tests.cpp:<line number>: failed: a == 1 for: 2 == 1 with 2 messages: 'this message should be logged' and 'so should this'
+Message.tests.cpp:<line number>: passed: a == 2 for: 2 == 2 with 1 message: 'this message may be logged later'
+Message.tests.cpp:<line number>: failed: a == 1 for: 2 == 1 with 2 messages: 'this message may be logged later' and 'this message should be logged'
+Message.tests.cpp:<line number>: failed: a == 0 for: 2 == 0 with 3 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later'
+Message.tests.cpp:<line number>: passed: a == 2 for: 2 == 2 with 4 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later' and 'but not this'
+Message.tests.cpp:<line number>: passed: i < 10 for: 0 < 10 with 2 messages: 'current counter 0' and 'i := 0'
+Message.tests.cpp:<line number>: passed: i < 10 for: 1 < 10 with 2 messages: 'current counter 1' and 'i := 1'
+Message.tests.cpp:<line number>: passed: i < 10 for: 2 < 10 with 2 messages: 'current counter 2' and 'i := 2'
+Message.tests.cpp:<line number>: passed: i < 10 for: 3 < 10 with 2 messages: 'current counter 3' and 'i := 3'
+Message.tests.cpp:<line number>: passed: i < 10 for: 4 < 10 with 2 messages: 'current counter 4' and 'i := 4'
+Message.tests.cpp:<line number>: passed: i < 10 for: 5 < 10 with 2 messages: 'current counter 5' and 'i := 5'
+Message.tests.cpp:<line number>: passed: i < 10 for: 6 < 10 with 2 messages: 'current counter 6' and 'i := 6'
+Message.tests.cpp:<line number>: passed: i < 10 for: 7 < 10 with 2 messages: 'current counter 7' and 'i := 7'
+Message.tests.cpp:<line number>: passed: i < 10 for: 8 < 10 with 2 messages: 'current counter 8' and 'i := 8'
+Message.tests.cpp:<line number>: passed: i < 10 for: 9 < 10 with 2 messages: 'current counter 9' and 'i := 9'
+Message.tests.cpp:<line number>: failed: i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10'
+AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy
+Condition.tests.cpp:<line number>: failed: data.int_seven != 7 for: 7 != 7
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+Condition.tests.cpp:<line number>: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+Condition.tests.cpp:<line number>: failed: data.str_hello != "hello" for: "hello" != "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello.size() != 5 for: 5 != 5
+Condition.tests.cpp:<line number>: passed: data.int_seven != 6 for: 7 != 6
+Condition.tests.cpp:<line number>: passed: data.int_seven != 8 for: 7 != 8
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f
+!=
+Approx( 9.10999965667724609 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 )
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 )
+Condition.tests.cpp:<line number>: passed: data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005
+!=
+Approx( 3.14150000000000018 )
+Condition.tests.cpp:<line number>: passed: data.str_hello != "goodbye" for: "hello" != "goodbye"
+Condition.tests.cpp:<line number>: passed: data.str_hello != "hell" for: "hello" != "hell"
+Condition.tests.cpp:<line number>: passed: data.str_hello != "hello1" for: "hello" != "hello1"
+Condition.tests.cpp:<line number>: passed: data.str_hello.size() != 6 for: 5 != 6
+Json.tests.cpp:<line number>: passed: stream.str() == "" for: "" == ""
+Json.tests.cpp:<line number>: passed: stream.str() == "{\n}" for: "{
+}"
+==
+"{
+}"
+Json.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) for: "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+}" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+}" )
+Json.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) for: "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+}" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n]" for: "[
+]"
+==
+"[
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" for: "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+==
+"[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "{\n}" for: "{
+}"
+==
+"{
+}"
+Json.tests.cpp:<line number>: passed: stream.str() == "[\n]" for: "[
+]"
+==
+"[
+]"
+Json.tests.cpp:<line number>: passed: stream.str() == "\"custom\"" for: ""custom"" == ""custom""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\"\"" for: ""\""" == ""\"""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\\\"" for: ""\\"" == ""\\""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"/\"" for: ""/"" == ""/""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\b\"" for: ""\b"" == ""\b""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\f\"" for: ""\f"" == ""\f""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\n\"" for: ""\n"" == ""\n""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\r\"" for: ""\r"" == ""\r""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\t\"" for: ""\t"" == ""\t""
+Json.tests.cpp:<line number>: passed: sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n""
+Compilation.tests.cpp:<line number>: passed: []() { return true; }() for: true
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.24 ) for: 1.22999999999999998
+<=
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.23 ) for: 1.22999999999999998
+<=
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: !(d <= Approx( 1.22 )) for: !(1.22999999999999998
+<=
+Approx( 1.21999999999999997 ))
+Approx.tests.cpp:<line number>: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998
+<=
+Approx( 1.21999999999999997 )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'was called'
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), !ContainsSubstring( "different" ) for: "this string contains 'abc' as a substring" not contains: "different"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), !ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" not contains: "substring"
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Condition.tests.cpp:<line number>: failed: explicitly
+Exception.tests.cpp:<line number>: passed: thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+Exception.tests.cpp:<line number>: failed: thisThrows(), "should fail" for: "expected exception" equals: "should fail"
+Reporters.tests.cpp:<line number>: passed: records == expected for: { "Hello", "world", "Goodbye", "world" }
+==
+{ "Hello", "world", "Goodbye", "world" }
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+Reporters.tests.cpp:<line number>: passed: multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+Generators.tests.cpp:<line number>: passed: values > -6 for: 3 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 4 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 5 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 6 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: -5 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: -4 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 90 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 91 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 92 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 93 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 94 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 95 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 96 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 97 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 98 > -6
+Generators.tests.cpp:<line number>: passed: values > -6 for: 99 > -6
+Misc.tests.cpp:<line number>: warning: 'This one ran'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'custom exception'
+Tricky.tests.cpp:<line number>: passed: True for: {?}
+Tricky.tests.cpp:<line number>: passed: !False for: true
+Tricky.tests.cpp:<line number>: passed: !(False) for: !{?}
+Compilation.tests.cpp:<line number>: passed: with 1 message: 'std::is_void<void>::value'
+Compilation.tests.cpp:<line number>: passed: with 1 message: '!(std::is_void<int>::value)'
+Compilation.tests.cpp:<line number>: passed: with 1 message: 'std::is_void<void>::value'
+Compilation.tests.cpp:<line number>: passed: with 1 message: '!(std::is_void<int>::value)'
+Condition.tests.cpp:<line number>: failed: data.int_seven > 7 for: 7 > 7
+Condition.tests.cpp:<line number>: failed: data.int_seven < 7 for: 7 < 7
+Condition.tests.cpp:<line number>: failed: data.int_seven > 8 for: 7 > 8
+Condition.tests.cpp:<line number>: failed: data.int_seven < 6 for: 7 < 6
+Condition.tests.cpp:<line number>: failed: data.int_seven < 0 for: 7 < 0
+Condition.tests.cpp:<line number>: failed: data.int_seven < -1 for: 7 < -1
+Condition.tests.cpp:<line number>: failed: data.int_seven >= 8 for: 7 >= 8
+Condition.tests.cpp:<line number>: failed: data.int_seven <= 6 for: 7 <= 6
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one < 9 for: 9.100000381f < 9
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one > 10 for: 9.100000381f > 10
+Condition.tests.cpp:<line number>: failed: data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929
+Condition.tests.cpp:<line number>: failed: data.str_hello > "hello" for: "hello" > "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "hello" for: "hello" < "hello"
+Condition.tests.cpp:<line number>: failed: data.str_hello > "hellp" for: "hello" > "hellp"
+Condition.tests.cpp:<line number>: failed: data.str_hello > "z" for: "hello" > "z"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "hellm" for: "hello" < "hellm"
+Condition.tests.cpp:<line number>: failed: data.str_hello < "a" for: "hello" < "a"
+Condition.tests.cpp:<line number>: failed: data.str_hello >= "z" for: "hello" >= "z"
+Condition.tests.cpp:<line number>: failed: data.str_hello <= "a" for: "hello" <= "a"
+Condition.tests.cpp:<line number>: passed: data.int_seven < 8 for: 7 < 8
+Condition.tests.cpp:<line number>: passed: data.int_seven > 6 for: 7 > 6
+Condition.tests.cpp:<line number>: passed: data.int_seven > 0 for: 7 > 0
+Condition.tests.cpp:<line number>: passed: data.int_seven > -1 for: 7 > -1
+Condition.tests.cpp:<line number>: passed: data.int_seven >= 7 for: 7 >= 7
+Condition.tests.cpp:<line number>: passed: data.int_seven >= 6 for: 7 >= 6
+Condition.tests.cpp:<line number>: passed: data.int_seven <= 7 for: 7 <= 7
+Condition.tests.cpp:<line number>: passed: data.int_seven <= 8 for: 7 <= 8
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one > 9 for: 9.100000381f > 9
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one < 10 for: 9.100000381f < 10
+Condition.tests.cpp:<line number>: passed: data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929
+Condition.tests.cpp:<line number>: passed: data.str_hello <= "hello" for: "hello" <= "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello >= "hello" for: "hello" >= "hello"
+Condition.tests.cpp:<line number>: passed: data.str_hello < "hellp" for: "hello" < "hellp"
+Condition.tests.cpp:<line number>: passed: data.str_hello < "zebra" for: "hello" < "zebra"
+Condition.tests.cpp:<line number>: passed: data.str_hello > "hellm" for: "hello" > "hellm"
+Condition.tests.cpp:<line number>: passed: data.str_hello > "a" for: "hello" > "a"
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4242248763 (0x<hex digits>)
+==
+4242248763 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1867888929 (0x<hex digits>)
+==
+1867888929 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1276619030 (0x<hex digits>)
+==
+1276619030 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1911218783 (0x<hex digits>)
+==
+1911218783 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1827115164 (0x<hex digits>)
+==
+1827115164 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+RandomNumberGeneration.tests.cpp:<line number>: passed: rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Message from section one'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Message from section two'
+Matchers.tests.cpp:<line number>: passed: ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+Matchers.tests.cpp:<line number>: passed: &EvilMatcher(), EvilAddressOfOperatorUsed
+Matchers.tests.cpp:<line number>: passed: EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
+Matchers.tests.cpp:<line number>: passed: ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
+Parse.tests.cpp:<line number>: passed: parseUInt( "0" ) == Optional<unsigned int>{ 0 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "100" ) == Optional<unsigned int>{ 100 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } for: {?} == {?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "!!KJHF*#" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "-1" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "4294967296" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "42949672964294967296429496729642949672964294967296" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "2 4" )) for: !{?}
+Parse.tests.cpp:<line number>: passed: !(parseUInt( "0x<hex digits>", 10 )) for: !{?}
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-count=8" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardCount == 8 for: 8 == 8
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) for: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) for: "Shard count must be positive" contains: "Shard count must be positive"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-index=2" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardIndex == 2 for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: !(result) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) for: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--shard-index=0" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shardIndex == 0 for: 0 == 0
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true with 1 message: 'tagString := "[tag with spaces]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.hasFilters() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+TestSpecParser.tests.cpp:<line number>: passed: spec.matches( testCase ) for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "-w", "NoAssertions" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.warnings == WarnAbout::NoAssertions for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: !(cli.parse( { "test", "-w", "NoTests" } )) for: !{?}
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) for: 3 == 3
+Condition.tests.cpp:<line number>: passed: p == 0 for: 0 == 0
+Condition.tests.cpp:<line number>: passed: p == pNULL for: 0 == 0
+Condition.tests.cpp:<line number>: passed: p != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: cp != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: cpc != 0 for: 0x<hex digits> != 0
+Condition.tests.cpp:<line number>: passed: returnsNull() == 0 for: {null string} == 0
+Condition.tests.cpp:<line number>: passed: returnsConstNull() == 0 for: {null string} == 0
+Condition.tests.cpp:<line number>: passed: 0 != p for: 0 != 0x<hex digits>
+ToStringGeneral.tests.cpp:<line number>: passed: str1.size() == 3 + 5 for: 8 == 8
+ToStringGeneral.tests.cpp:<line number>: passed: str2.size() == 3 + 10 for: 13 == 13
+ToStringGeneral.tests.cpp:<line number>: passed: str1.size() == 2 + 5 for: 7 == 7
+ToStringGeneral.tests.cpp:<line number>: passed: str2.size() == 2 + 15 for: 17 == 17
+Matchers.tests.cpp:<line number>: passed: "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) for: "foo" matches undescribed predicate
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.processName == "" for: "" == ""
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.processName == "test" for: "test" == "test"
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == -1 for: -1 == -1
+CmdLine.tests.cpp:<line number>: passed: config.noThrow == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications.empty() for: true
+CmdLine.tests.cpp:<line number>: passed: !(cfg.hasTestFilters()) for: !false
+CmdLine.tests.cpp:<line number>: passed: cfg.getReporterSpecs().size() == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } for: {?} == {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.getProcessedReporterSpecs().size() == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } for: {?} == {?}
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?}
+CmdLine.tests.cpp:<line number>: passed: cfg.hasTestFilters() for: true
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+CmdLine.tests.cpp:<line number>: passed: cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: result for: {?} with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") for: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-b"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak == true for: true == true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--break"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-a"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-x", "2"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 2 for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") for: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 2 == 2
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.waitForKeypress == std::get<1>(input) for: 3 == 3
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") for: "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-e"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.noThrow for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--nothrow"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.noThrow for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-o", "filename.ext"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--out", "filename.ext"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "-abe"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.abortAfter == 1 for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: config.shouldDebugBreak for: true
+CmdLine.tests.cpp:<line number>: passed: config.noThrow == true for: true == true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse( { "test", "--colour-mode", "default" } ) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--colour-mode", "ansi"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::ANSI for: 1 == 1
+CmdLine.tests.cpp:<line number>: passed: cli.parse({"test", "--colour-mode", "none"}) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.defaultColourMode == ColourMode::None for: 3 == 3
+CmdLine.tests.cpp:<line number>: passed: !result for: true
+CmdLine.tests.cpp:<line number>: passed: result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) for: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-samples=200" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkSamples == 200 for: 200 == 200
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkResamples == 20000 for: 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999
+==
+Approx( 0.98999999999999999 )
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-no-analysis" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkNoAnalysis for: true
+CmdLine.tests.cpp:<line number>: passed: cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?}
+CmdLine.tests.cpp:<line number>: passed: config.benchmarkWarmupTime == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 3 >= 1
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 2 >= 1
+Misc.tests.cpp:<line number>: passed: std::tuple_size<TestType>::value >= 1 for: 1 >= 1
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(method)
+RandomNumberGeneration.tests.cpp:<line number>: passed: Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
+ToString.tests.cpp:<line number>: passed: Catch::Detail::stringify(UsesSentinel{}) == "{ }" for: "{ }" == "{ }"
+Decomposition.tests.cpp:<line number>: failed: truthy(false) for: Hey, its truthy!
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), Matches( "this string contains 'abc' as a" ) for: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+Reporters.tests.cpp:<line number>: passed: registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" for: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+Matchers.tests.cpp:<line number>: passed: actual, !UnorderedEquals( expected ) for: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: Automake'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: compact'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: console'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag" with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter" with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JUnit'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: SonarQube'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TAP'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag" with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter" with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TeamCity'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+<TagsFromMatchingTests>
+ <Tag>
+ <Count>1</Count>
+ <Aliases>
+ <Alias>fakeTag</Alias>
+ </Aliases>
+ </Tag>
+</TagsFromMatchingTests>" contains: "fakeTag" with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?>
+<AvailableReporters>
+ <Reporter>
+ <Name>fake reporter</Name>
+ <Description>fake description</Description>
+ </Reporter>
+</AvailableReporters>" contains: "fake reporter" with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed: !(factories.empty()) for: !false
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?>
+<MatchingTests>
+ <TestCase>
+ <Name>fake test name</Name>
+ <ClassName/>
+ <Tags>[fakeTestTag]</Tags>
+ <SourceInfo>
+ <File>fake-file.cpp</File>
+ <Line>123456789</Line>
+ </SourceInfo>
+ </TestCase>
+</MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: XML'
+Reporters.tests.cpp:<line number>: passed:
+Message.tests.cpp:<line number>: passed: with 1 message: 'this is a success'
+Message.tests.cpp:<line number>: passed:
+BDD.tests.cpp:<line number>: passed: before == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: after > before for: 1 > 0
+BDD.tests.cpp:<line number>: passed: itDoesThis() for: true
+BDD.tests.cpp:<line number>: passed: itDoesThat() for: true
+BDD.tests.cpp:<line number>: passed: with 1 message: 'boo!'
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+BDD.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+BDD.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Approx.tests.cpp:<line number>: passed: d == Approx( 1.23 ) for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.22 ) for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d != Approx( 1.24 ) for: 1.22999999999999998
+!=
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d == 1.23_a for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d != 1.22_a for: 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: Approx( d ) == 1.23 for: Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+Approx.tests.cpp:<line number>: passed: Approx( d ) != 1.22 for: Approx( 1.22999999999999998 )
+!=
+1.21999999999999997
+Approx.tests.cpp:<line number>: passed: Approx( d ) != 1.24 for: Approx( 1.22999999999999998 )
+!=
+1.23999999999999999
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String"
+Matchers.tests.cpp:<line number>: failed: testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" for: "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" for: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+==
+"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string" ) for: "this string contains 'abc' as a substring" contains: "string"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "abc" ) for: "this string contains 'abc' as a substring" contains: "abc"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), StartsWith( "this" ) for: "this string contains 'abc' as a substring" starts with: "this"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
+Matchers.tests.cpp:<line number>: passed: testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+String.tests.cpp:<line number>: passed: empty.empty() for: true
+String.tests.cpp:<line number>: passed: empty.size() == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.empty() == false for: false == false
+String.tests.cpp:<line number>: passed: s.size() == 5 for: 5 == 5
+String.tests.cpp:<line number>: passed: std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.data() == rawChars for: "hello" == "hello"
+String.tests.cpp:<line number>: passed: original == "original"
+String.tests.cpp:<line number>: passed: original.data()
+String.tests.cpp:<line number>: passed: original.begin() == copy.begin() for: "original string" == "original string"
+String.tests.cpp:<line number>: passed: original.begin() == copy.begin() for: "original string" == "original string"
+String.tests.cpp:<line number>: passed: ss.empty() == false for: false == false
+String.tests.cpp:<line number>: passed: ss.size() == 5 for: 5 == 5
+String.tests.cpp:<line number>: passed: std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: ss == "hello" for: hello == "hello"
+String.tests.cpp:<line number>: passed: ss.size() == 6 for: 6 == 6
+String.tests.cpp:<line number>: passed: std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.data() == s2.data() for: "hello world!" == "hello world!"
+String.tests.cpp:<line number>: passed: s.data() == ss.data() for: "hello world!" == "hello world!"
+String.tests.cpp:<line number>: passed: s.substr(s.size() + 1, 123).empty() for: true
+String.tests.cpp:<line number>: passed: std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
+String.tests.cpp:<line number>: passed: s.substr(1'000'000, 1).empty() for: true
+String.tests.cpp:<line number>: passed: reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
+String.tests.cpp:<line number>: passed: left == right for: Hello == Hello
+String.tests.cpp:<line number>: passed: left != left.substr(0, 3) for: Hello != Hel
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: sr == "a standard string" for: a standard string == "a standard string"
+String.tests.cpp:<line number>: passed: sr.size() == stdStr.size() for: 17 == 17
+String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
+String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
+String.tests.cpp:<line number>: passed: stdStr == "a stringref" for: "a stringref" == "a stringref"
+String.tests.cpp:<line number>: passed: stdStr.size() == sr.size() for: 11 == 11
+String.tests.cpp:<line number>: passed: lhs == "some string += the stringref contents" for: "some string += the stringref contents"
+==
+"some string += the stringref contents"
+String.tests.cpp:<line number>: passed: together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
+String.tests.cpp:<line number>: passed: with 1 message: 'empty.size() == 0'
+String.tests.cpp:<line number>: passed: with 1 message: 'empty.begin() == empty.end()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.size() == 3'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.data() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.begin() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.begin() != stringref.end()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.substr(10, 0).empty()'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
+String.tests.cpp:<line number>: passed: with 1 message: 'stringref[1] == 'b''
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.size() == 2'
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.data() == abc'
+String.tests.cpp:<line number>: passed: with 1 message: 'shortened.begin() != shortened.end()'
+String.tests.cpp:<line number>: passed: with 1 message: '!(sr1.empty())'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr1.size() == 3'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr2.empty()'
+String.tests.cpp:<line number>: passed: with 1 message: 'sr2.size() == 0'
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+ToStringChrono.tests.cpp:<line number>: passed: minute == seconds for: 1 m == 60 s
+ToStringChrono.tests.cpp:<line number>: passed: hour != seconds for: 1 h != 60 s
+ToStringChrono.tests.cpp:<line number>: passed: micro != milli for: 1 us != 1 ms
+ToStringChrono.tests.cpp:<line number>: passed: nano != micro for: 1 ns != 1 us
+ToStringChrono.tests.cpp:<line number>: passed: half_minute != femto_second for: 1 [30/1]s != 1 fs
+ToStringChrono.tests.cpp:<line number>: passed: pico_second != atto_second for: 1 ps != 1 as
+ToStringChrono.tests.cpp:<line number>: passed: now != later for: {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+Misc.tests.cpp:<line number>: failed: s1 == s2 for: "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "[@zzz]" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "[@zzz]"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "file" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "file"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "2" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "2"
+Tag.tests.cpp:<line number>: passed: what, ContainsSubstring( "10" ) for: "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+Tag.tests.cpp:<line number>: passed: registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+Tag.tests.cpp:<line number>: passed: testCase.tags.size() == 2 for: 2 == 2
+Tag.tests.cpp:<line number>: passed: testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+Class.tests.cpp:<line number>: passed: Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+Misc.tests.cpp:<line number>: passed: std::is_default_constructible<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_default_constructible<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_trivially_copyable<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_trivially_copyable<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: std::is_arithmetic<TestType>::value for: true
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 12 == 12
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 12 >= 12
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 12 >= 12
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 6 == 6
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 6 >= 6
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 8 == 8
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 8 >= 8
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 8 >= 8
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 4 == 4
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 4 >= 4
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == 2 * V for: 30 == 30
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 30 >= 30
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 2 * V for: 30 >= 30
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Misc.tests.cpp:<line number>: passed: v.size() == V for: 15 == 15
+Misc.tests.cpp:<line number>: passed: v.capacity() >= V for: 15 >= 15
+Tag.tests.cpp:<line number>: passed: testCase.tags.size() == 1 for: 1 == 1
+Tag.tests.cpp:<line number>: passed: testCase.tags[0] == Tag( "tag1" ) for: {?} == {?}
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'no assertions'
+Tricky.tests.cpp:<line number>: passed: 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472
+CmdLine.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed: explicitly
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: failed: explicitly
+Misc.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: failed: unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+Misc.tests.cpp:<line number>: failed - but was ok: false
+Misc.tests.cpp:<line number>: failed: unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+Message.tests.cpp:<line number>: failed - but was ok: 1 == 2
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring("[fakeTag]"s) for: "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "[fakeTag]"
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+Reporters.tests.cpp:<line number>: passed: listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+Misc.tests.cpp:<line number>: passed: with 1 message: 'oops!'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'For some reason someone is throwing a string literal!'
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2b.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase2.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1b.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2b.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: ctx.completedCycle() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s2b.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase2.isSuccessfullyCompleted() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase3.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1c.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s2c.isOpen() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase3.isSuccessfullyCompleted() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isOpen() for: true
+PartTracker.tests.cpp:<line number>: passed: s2.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: s1.isComplete() for: true
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() == false for: false == false
+PartTracker.tests.cpp:<line number>: passed: testCase.isComplete() for: true
+StringManip.tests.cpp:<line number>: passed: trim(std::string(no_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(leading_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(trailing_whitespace)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+StringManip.tests.cpp:<line number>: passed: trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here
+==
+There is no extra whitespace here
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( c_array ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_3, !RangeEquals( array_int_4 ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_3, !UnorderedRangeEquals( array_int_4 ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: with 1 message: 'ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a )'
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, RangeEquals( list_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_int_a, UnorderedRangeEquals( list_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, !RangeEquals( vector_char_b ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_int_a, !UnorderedRangeEquals( vector_char_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: a, !RangeEquals( b ) for: { 1, 2, 3 } not elements are { 3, 2, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: '3.14000000000000012'
+UniquePtr.tests.cpp:<line number>: passed: bptr->i == 3 for: 3 == 3
+UniquePtr.tests.cpp:<line number>: passed: bptr->i == 3 for: 3 == 3
+MatchersRanges.tests.cpp:<line number>: passed: data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, allMatch for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !allMatch for: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { false, false, false, false, false } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AllTrue() for: { false, false, false, false, false } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AllTrue() for: { true, true, true, true, true } contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !AllTrue() for: { true, true, false, true, true } not contains only true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyMatch(Contains(0) && Contains(10)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !anyMatch for: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, anyMatch for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[1]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[2]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AnyTrue() for: { false, false, false, false, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, AnyTrue() for: { false, false, true, true, true } contains at least one true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneMatch(SizeIs(6)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked, noneMatch for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !noneMatch for: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[1]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[2]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: data, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, NoneTrue() for: { false, false, false, false, false } contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[4] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked, !NoneTrue() for: { false, false, true, true, true } not contains no true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked.m_derefed[4]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, RangeEquals( empty_vector ) for: { } elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, !RangeEquals( non_empty_vector ) for: { } not elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vector, !RangeEquals( empty_vector ) for: { 1 } not elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, RangeEquals( non_empty_array ) for: { 1 } elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( array_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !RangeEquals( array_b ) for: { 1, 2, 3 } not elements are { 2, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !RangeEquals( array_c ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !RangeEquals( vector_b ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, RangeEquals( vector_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !RangeEquals( vector_b, close_enough ) for: { 1, 2, 3 } not elements are { 3, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, RangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) for: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( { 1, 2, 3 } ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) for: { 1, 2, 3 } elements are { 2, 4, 6 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1, !RangeEquals( arr ) for: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: !(mocked1.m_derefed[3]) for: !false
+MatchersRanges.tests.cpp:<line number>: passed: mocked1, RangeEquals( arr ) for: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[0] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[1] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[2] for: true
+MatchersRanges.tests.cpp:<line number>: passed: mocked1.m_derefed[3] for: true
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, UnorderedRangeEquals( empty_vector ) for: { } unordered elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vector, !UnorderedRangeEquals( non_empty_vector ) for: { } not unordered elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_vector, !UnorderedRangeEquals( empty_vector ) for: { 1 } not unordered elements are { }
+MatchersRanges.tests.cpp:<line number>: passed: non_empty_array, UnorderedRangeEquals( non_empty_array ) for: { 1 } unordered elements are { 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( array_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, !UnorderedRangeEquals( array_b ) for: { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !UnorderedRangeEquals( vector_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: vector_a, !UnorderedRangeEquals( vector_b, close_enough ) for: { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+MatchersRanges.tests.cpp:<line number>: passed: needs_adl1, UnorderedRangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( { 10, 20, 1 } ) for: { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+MatchersRanges.tests.cpp:<line number>: passed: array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, SizeIs(0) for: { } has size == 0
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, !SizeIs(2) for: { } not has size == 2
+MatchersRanges.tests.cpp:<line number>: passed: empty_vec, SizeIs(Lt(2)) for: { } size matches is less than 2
+MatchersRanges.tests.cpp:<line number>: passed: arr, SizeIs(2) for: { 0, 0 } has size == 2
+MatchersRanges.tests.cpp:<line number>: passed: arr, SizeIs( Lt(3)) for: { 0, 0 } size matches is less than 3
+MatchersRanges.tests.cpp:<line number>: passed: arr, !SizeIs(!Lt(3)) for: { 0, 0 } not size matches not is less than 3
+MatchersRanges.tests.cpp:<line number>: passed: map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3
+MatchersRanges.tests.cpp:<line number>: passed: unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12
+MatchersRanges.tests.cpp:<line number>: passed: has_size{}, SizeIs(13) for: {?} has size == 13
+Approx.tests.cpp:<line number>: passed: d == approx( 1.23 ) for: 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+Approx.tests.cpp:<line number>: passed: d == approx( 1.22 ) for: 1.22999999999999998
+==
+Approx( 1.21999999999999997 )
+Approx.tests.cpp:<line number>: passed: d == approx( 1.24 ) for: 1.22999999999999998
+==
+Approx( 1.23999999999999999 )
+Approx.tests.cpp:<line number>: passed: d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 )
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.23 for: Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.22 for: Approx( 1.22999999999999998 )
+==
+1.21999999999999997
+Approx.tests.cpp:<line number>: passed: approx( d ) == 1.24 for: Approx( 1.22999999999999998 )
+==
+1.23999999999999999
+Approx.tests.cpp:<line number>: passed: approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25
+VariadicMacros.tests.cpp:<line number>: passed: with 1 message: 'no assertions'
+Matchers.tests.cpp:<line number>: passed: empty, Approx( empty ) for: { } is approx: { }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx<double>( { 1., 2., 3. } ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+Matchers.tests.cpp:<line number>: passed: v1, !Approx( temp ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+Matchers.tests.cpp:<line number>: passed: v1, !Approx( v2 ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).margin( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).epsilon( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: passed: v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+Matchers.tests.cpp:<line number>: failed: empty, Approx( t1 ) for: { } is approx: { 1.0, 2.0 }
+Matchers.tests.cpp:<line number>: failed: v1, Approx( v2 ) for: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 1 ) for: { 1, 2, 3 } Contains: 1
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 2 ) for: { 1, 2, 3 } Contains: 2
+Matchers.tests.cpp:<line number>: passed: v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) for: { 1, 2, 3 } Contains: 2
+Matchers.tests.cpp:<line number>: passed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, Contains<int>( { 1, 2 } ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, Contains( empty ) for: { 1, 2, 3 } Contains: { }
+Matchers.tests.cpp:<line number>: passed: empty, Contains( empty ) for: { } Contains: { }
+Matchers.tests.cpp:<line number>: passed: v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, Contains( v6 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+Matchers.tests.cpp:<line number>: passed: v, VectorContains( 1 ) && VectorContains( 2 ) for: { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+Matchers.tests.cpp:<line number>: passed: v, Equals( v ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: empty, Equals( empty ) for: { } Equals: { }
+Matchers.tests.cpp:<line number>: passed: v, Equals<int>( { 1, 2, 3 } ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, Equals( v6 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, UnorderedEquals( v ) for: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v, UnorderedEquals<int>( { 3, 2, 1 } ) for: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+Matchers.tests.cpp:<line number>: passed: empty, UnorderedEquals( empty ) for: { } UnorderedEquals: { }
+Matchers.tests.cpp:<line number>: passed: permuted, UnorderedEquals( v ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: permuted, UnorderedEquals( v ) for: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: passed: v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) for: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+Matchers.tests.cpp:<line number>: passed: v5_permuted, UnorderedEquals( v5 ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, VectorContains( -1 ) for: { 1, 2, 3 } Contains: -1
+Matchers.tests.cpp:<line number>: failed: empty, VectorContains( 1 ) for: { } Contains: 1
+Matchers.tests.cpp:<line number>: failed: empty, Contains( v ) for: { } Contains: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 4 }
+Matchers.tests.cpp:<line number>: failed: v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2 }
+Matchers.tests.cpp:<line number>: failed: v2, Equals( v ) for: { 1, 2 } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: empty, Equals( v ) for: { } Equals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: v, Equals( empty ) for: { 1, 2, 3 } Equals: { }
+Matchers.tests.cpp:<line number>: failed: v, UnorderedEquals( empty ) for: { 1, 2, 3 } UnorderedEquals: { }
+Matchers.tests.cpp:<line number>: failed: empty, UnorderedEquals( v ) for: { } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: permuted, UnorderedEquals( v ) for: { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+Matchers.tests.cpp:<line number>: failed: permuted, UnorderedEquals( v ) for: { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+Exception.tests.cpp:<line number>: passed: thisThrows(), std::domain_error
+Exception.tests.cpp:<line number>: passed: thisDoesntThrow()
+Exception.tests.cpp:<line number>: passed: thisThrows()
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Tricky.tests.cpp:<line number>: passed:
+Xml.tests.cpp:<line number>: passed: encode( "normal string" ) == "normal string" for: "normal string" == "normal string"
+Xml.tests.cpp:<line number>: passed: encode( "" ) == "" for: "" == ""
+Xml.tests.cpp:<line number>: passed: encode( "smith & jones" ) == "smith &amp; jones" for: "smith &amp; jones" == "smith &amp; jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith < jones" ) == "smith &lt; jones" for: "smith &lt; jones" == "smith &lt; jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith > jones" ) == "smith > jones" for: "smith > jones" == "smith > jones"
+Xml.tests.cpp:<line number>: passed: encode( "smith ]]> jones" ) == "smith ]]&gt; jones" for: "smith ]]&gt; jones"
+==
+"smith ]]&gt; jones"
+Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes ) == stringWithQuotes for: "don't "quote" me on that"
+==
+"don't "quote" me on that"
+Xml.tests.cpp:<line number>: passed: encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that"
+==
+"don't &quot;quote&quot; me on that"
+Xml.tests.cpp:<line number>: passed: encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
+Xml.tests.cpp:<line number>: passed: encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
+Xml.tests.cpp:<line number>: passed: stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") for: "<?xml version="1.0" encoding="UTF-8"?>
+<Element1 attr1="true" attr2="false"/>
+" ( contains: "attr1="true"" and contains: "attr2="false"" )
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped:
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.point.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.lower_bound.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.mean.upper_bound.count() == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.point.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.lower_bound.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.standard_deviation.upper_bound.count() == 0 for: 0.0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.total() == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.low_mild == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.low_severe == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.high_mild == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.high_severe == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outliers.samples_seen == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: analysis.outlier_variance == 0 for: 0.0 == 0
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( empty ) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: called == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.started == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: model.finished == 0 for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: called == 1 for: 1 == 1
+Tricky.tests.cpp:<line number>: passed: obj.prop != 0 for: 0x<hex digits> != 0
+Misc.tests.cpp:<line number>: passed: flag for: true
+Misc.tests.cpp:<line number>: passed: testCheckedElse( true ) for: true
+Misc.tests.cpp:<line number>: failed - but was ok: flag for: false
+Misc.tests.cpp:<line number>: failed: testCheckedElse( false ) for: false
+Misc.tests.cpp:<line number>: passed: flag for: true
+Misc.tests.cpp:<line number>: passed: testCheckedIf( true ) for: true
+Misc.tests.cpp:<line number>: failed - but was ok: flag for: false
+Misc.tests.cpp:<line number>: failed: testCheckedIf( false ) for: false
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_severe == los for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.low_mild == lom for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_mild == him for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: o.high_severe == his for: 0 == 0
+InternalBenchmark.tests.cpp:<line number>: passed: o.total() == los + lom + him + his for: 2 == 2
+Condition.tests.cpp:<line number>: passed: unsigned_char_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_short_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_int_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: unsigned_long_var == 1 for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_char_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_short_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_int_var for: 1 == 1
+Condition.tests.cpp:<line number>: passed: long_var == unsigned_long_var for: 1 == 1
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( 0.f ) == 0 for: 0 == 0
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( -0.f ) == ( 1ULL << 31 ) for: 2147483648 (0x<hex digits>)
+==
+2147483648 (0x<hex digits>)
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( 0. ) == 0 for: 0 == 0
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( -0. ) == ( 1ULL << 63 ) for: 9223372036854775808 (0x<hex digits>)
+==
+9223372036854775808 (0x<hex digits>)
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 for: 1 == 1
+FloatingPoint.tests.cpp:<line number>: passed: convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 for: 1 == 1
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 41'
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 43'
+Tag.tests.cpp:<line number>: passed: Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014
+==
+Approx( -0.09203687623843015 )
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361
+==
+Approx( -0.05980291115763361 )
+InternalBenchmark.tests.cpp:<line number>: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774
+==
+Approx( 1.38590382434967796 )
+InternalBenchmark.tests.cpp:<line number>: passed: res.mean.count() == rate for: 2000.0 == 2000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res.outliers.total() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: failed: 3 == 4
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: failed: explicitly
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<int>::value)'
+Clara.tests.cpp:<line number>: passed: with 1 message: '!(Catch::Clara::Detail::is_unary_function<std::string const&>::value)'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'Previous info should not be seen'
+Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'previous unscoped info SHOULD not be seen'
+Misc.tests.cpp:<line number>: passed: l == std::numeric_limits<long long>::max() for: 9223372036854775807 (0x<hex digits>)
+==
+9223372036854775807 (0x<hex digits>)
+Misc.tests.cpp:<line number>: failed: b > a for: 0 > 1
+Misc.tests.cpp:<line number>: failed: b > a for: 1 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 2 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 3 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 4 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 5 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 6 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 7 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 8 > 1
+Misc.tests.cpp:<line number>: passed: b > a for: 9 > 1
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[0] (1) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[1] (1) is even'
+Misc.tests.cpp:<line number>: passed: ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[2] (2) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[3] (3) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[4] (5) is even'
+Misc.tests.cpp:<line number>: passed: ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[5] (8) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[6] (13) is even'
+Misc.tests.cpp:<line number>: failed: ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[7] (21) is even'
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%debug" )
+UniquePtr.tests.cpp:<line number>: passed: !(lval.has_moved) for: !false
+UniquePtr.tests.cpp:<line number>: passed: rval.has_moved for: true
+UniquePtr.tests.cpp:<line number>: passed: *ptr == std::tuple<int, double, int>{1, 2., 3} for: {?} == {?}
+InternalBenchmark.tests.cpp:<line number>: passed: m == 19. for: 19.0 == 19.0
+InternalBenchmark.tests.cpp:<line number>: passed: x == 17 for: 17 == 17
+InternalBenchmark.tests.cpp:<line number>: passed: x == 23 for: 23 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: r.elapsed.count() == 42 for: 42 == 42
+InternalBenchmark.tests.cpp:<line number>: passed: r.result == 23 for: 23 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: r.iterations == 1 for: 1 == 1
+InternalBenchmark.tests.cpp:<line number>: passed: s.elapsed.count() == 69 for: 69 == 69
+InternalBenchmark.tests.cpp:<line number>: passed: s.result == 17 for: 17 == 17
+InternalBenchmark.tests.cpp:<line number>: passed: s.iterations == 1 for: 1 == 1
+Message.tests.cpp:<line number>: warning: 'info' with 2 messages: 'unscoped info' and 'and warn may mix'
+Message.tests.cpp:<line number>: warning: 'info' with 2 messages: 'unscoped info' and 'they are not cleared after warnings'
+Misc.tests.cpp:<line number>: failed: a == b for: 1 == 2
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: a < b for: 1 < 2
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: b != a for: 2 != 1
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Skip.tests.cpp:<line number>: skipped:
+Tricky.tests.cpp:<line number>: passed: s == "7" for: "7" == "7"
+Tricky.tests.cpp:<line number>: passed: ti == typeid(int) for: {?} == {?}
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195
+==
+Approx( 0.13015979861484198 )
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875
+==
+Approx( 0.08457408802851875 )
+InternalBenchmark.tests.cpp:<line number>: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405
+==
+Approx( -1.95996398454005449 )
+Misc.tests.cpp:<line number>: passed:
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: failed: false with 1 message: 'this SHOULD be seen'
+Misc.tests.cpp:<line number>: passed: makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
+Misc.tests.cpp:<line number>: passed: makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
+Tricky.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }"
+==
+"{ { 42, "Arthur" }, { "Ford", 24 } }"
+ToString.tests.cpp:<line number>: passed: parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ToString.tests.cpp:<line number>: passed: parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+Tricky.tests.cpp:<line number>: passed: p == 0 for: 0 == 0
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY be seen IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: failed: false with 2 messages: 'this SHOULD be seen' and 'this SHOULD also be seen'
+Message.tests.cpp:<line number>: failed: false with 1 message: 'this SHOULD be seen only ONCE'
+Message.tests.cpp:<line number>: passed: true
+Message.tests.cpp:<line number>: passed: true with 1 message: 'this MAY also be seen only ONCE IF info is printed for passing assertions'
+Message.tests.cpp:<line number>: passed: true
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+Misc.tests.cpp:<line number>: passed: b != a for: 2 != 1
+Misc.tests.cpp:<line number>: passed: a != b for: 1 != 2
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "b", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "azcdefcg" for: "azcdefcg" == "azcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "c", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abzdefzg" for: "abzdefzg" == "abzdefzg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "a", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "zbcdefcg" for: "zbcdefcg" == "zbcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "g", "z") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abcdefcz" for: "abcdefcz" == "abcdefcz"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, letters, "replaced") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "replaced" for: "replaced" == "replaced"
+StringManip.tests.cpp:<line number>: passed: !(Catch::replaceInPlace(letters, "x", "z")) for: !false
+StringManip.tests.cpp:<line number>: passed: letters == letters for: "abcdefcg" == "abcdefcg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(letters, "c", "cc") for: true
+StringManip.tests.cpp:<line number>: passed: letters == "abccdefccg" for: "abccdefccg" == "abccdefccg"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(s, "--", "-") for: true
+StringManip.tests.cpp:<line number>: passed: s == "--" for: "--" == "--"
+StringManip.tests.cpp:<line number>: passed: Catch::replaceInPlace(s, "'", "|'") for: true
+StringManip.tests.cpp:<line number>: passed: s == "didn|'t" for: "didn|'t" == "didn|'t"
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%somestream" )
+InternalBenchmark.tests.cpp:<line number>: passed: res.size() == count for: 10 == 10
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 1 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 2 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 4 >= 2
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 8 >= 4
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 16 >= 8
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 32 >= 16
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 64 >= 32
+InternalBenchmark.tests.cpp:<line number>: passed: meter.runs() >= old_runs for: 128 >= 64
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.elapsed >= time for: 128 ns >= 100 ns
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.result == Timing.iterations + 17 for: 145 == 145
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.iterations >= time.count() for: 128 >= 100
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 1 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 2 >= 1
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 4 >= 2
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 8 >= 4
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 16 >= 8
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 32 >= 16
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 64 >= 32
+InternalBenchmark.tests.cpp:<line number>: passed: x >= old_x for: 128 >= 64
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.elapsed >= time for: 128 ns >= 100 ns
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.result == Timing.iterations + 17 for: 145 == 145
+InternalBenchmark.tests.cpp:<line number>: passed: Timing.iterations >= time.count() for: 128 >= 100
+Skip.tests.cpp:<line number>: passed:
+Skip.tests.cpp:<line number>: skipped:
+Skip.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: failed: false with 1 message: '3'
+Message.tests.cpp:<line number>: failed: false with 2 messages: 'hi' and 'i := 7'
+Tag.tests.cpp:<line number>: passed: testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+Skip.tests.cpp:<line number>: skipped: 'skipping because answer = 43'
+StringManip.tests.cpp:<line number>: passed: splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
+StringManip.tests.cpp:<line number>: passed: splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
+StringManip.tests.cpp:<line number>: passed: splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
+Message.tests.cpp:<line number>: failed: false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
+Message.tests.cpp:<line number>: failed: false with 4 messages: 'Count 4 to 6...' and '4' and '5' and '6'
+StringManip.tests.cpp:<line number>: passed: !(startsWith("", 'c')) for: !false
+StringManip.tests.cpp:<line number>: passed: startsWith(std::string("abc"), 'a') for: true
+StringManip.tests.cpp:<line number>: passed: startsWith("def"_catch_sr, 'd') for: true
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+==
+"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( emptySet ) == "{ }" for: "{ }" == "{ }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
+ToStringGeneral.tests.cpp:<line number>: passed: Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }"
+==
+"{ "abc", "def", "ghi" }"
+ToStringPair.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }"
+==
+"{ { "green", 55 } }"
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%stderr" )->isConsole() for: true
+Stream.tests.cpp:<line number>: passed: Catch::makeStream( "%stdout" )->isConsole() for: true
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)"
+==
+"op<<(streamable_range)"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)"
+==
+"stringmaker(streamable_range)"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" for: "StringMaker<has_maker>"
+==
+"StringMaker<has_maker>"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" for: "StringMaker<has_maker_and_operator>"
+==
+"StringMaker<has_maker_and_operator>"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(item) == "{?}" for: "{?}" == "{?}"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" for: "operator<<( has_operator )"
+==
+"operator<<( has_operator )"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" for: "operator<<( has_template_operator )"
+==
+"operator<<( has_template_operator )"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }"
+==
+"{ StringMaker<has_maker> }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" for: "{ StringMaker<has_maker_and_operator> }"
+==
+"{ StringMaker<has_maker_and_operator> }"
+ToStringWhich.tests.cpp:<line number>: passed: ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" for: "{ operator<<( has_operator ) }"
+==
+"{ operator<<( has_operator ) }"
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 3 == 3
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 3 == 3
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 5 == 5
+Generators.tests.cpp:<line number>: passed: data.str.size() == data.len for: 4 == 4
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+Generators.tests.cpp:<line number>: passed: strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+Tag.tests.cpp:<line number>: passed: testcase.tags.size() == 1 for: 1 == 1
+Tag.tests.cpp:<line number>: passed: testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
+Skip.tests.cpp:<line number>: skipped:
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'Why would you throw a std::string?'
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+Misc.tests.cpp:<line number>: passed: result == "\"wide load\"" for: ""wide load"" == ""wide load""
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10"
+==
+"Unknown enum value 10"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "E2{0}" for: "E2{0}" == "E2{0}"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "E2{1}" for: "E2{1}" == "E2{1}"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+EnumToString.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+ToStringTuple.tests.cpp:<line number>: passed: "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }"
+ToStringTuple.tests.cpp:<line number>: passed: "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f"
+ToStringTuple.tests.cpp:<line number>: passed: "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ToStringTuple.tests.cpp:<line number>: passed: "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }"
+==
+"{ { 42 }, { }, 1.5f }"
+InternalBenchmark.tests.cpp:<line number>: passed: e.point == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.upper_bound == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.lower_bound == 23 for: 23.0 == 23
+InternalBenchmark.tests.cpp:<line number>: passed: e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996
+RandomNumberGeneration.tests.cpp:<line number>: passed: dist.a() == -10 for: -10 == -10
+RandomNumberGeneration.tests.cpp:<line number>: passed: dist.b() == 10 for: 10 == 10
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+UniquePtr.tests.cpp:<line number>: passed: ptr for: {?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() != 0 for: 0x<hex digits> != 0
+UniquePtr.tests.cpp:<line number>: passed: *ptr == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: !(ptr) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr.get() == 0 for: 0 == 0
+UniquePtr.tests.cpp:<line number>: passed: !(ptr1) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr2 for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr2 == 1 for: 1 == 1
+UniquePtr.tests.cpp:<line number>: passed: !(ptr2) for: !{?}
+UniquePtr.tests.cpp:<line number>: passed: ptr1 for: {?}
+UniquePtr.tests.cpp:<line number>: passed: *ptr1 == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: *ptr1 == 2 for: 2 == 2
+UniquePtr.tests.cpp:<line number>: passed: *ptr2 == 1 for: 1 == 1
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }"
+==
+"{ { "hello" }, { "world" } }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ true }" for: "{ true }" == "{ true }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(bools) == "{ true, false }" for: "{ true, false }" == "{ true, false }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
+ToStringVector.tests.cpp:<line number>: passed: ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 10 for: 10 == 10
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.capacity() == 0 for: 0 == 0
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 10 for: 10 >= 10
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+Misc.tests.cpp:<line number>: passed: v.size() == 5 for: 5 == 5
+Misc.tests.cpp:<line number>: passed: v.capacity() >= 5 for: 5 >= 5
+InternalBenchmark.tests.cpp:<line number>: passed: (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() for: 160000000 (0x<hex digits>) > 100
+InternalBenchmark.tests.cpp:<line number>: passed: (end - start) > Catch::Benchmark::Detail::warmup_time for: 310016000 ns > 100 ms
+InternalBenchmark.tests.cpp:<line number>: passed: q1 == 14.5 for: 14.5 == 14.5
+InternalBenchmark.tests.cpp:<line number>: passed: med == 18. for: 18.0 == 18.0
+InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
+Misc.tests.cpp:<line number>: passed:
+Misc.tests.cpp:<line number>: passed:
+test cases: 419 | 313 passed | 86 failed | 6 skipped | 14 failed as expected
+assertions: 2269 | 2087 passed | 147 failed | 35 failed as expected
+
+
diff --git a/tests/SelfTest/Baselines/console.std.approved.txt b/tests/SelfTest/Baselines/console.std.approved.txt
new file mode 100644
index 0000000..495264b
--- /dev/null
+++ b/tests/SelfTest/Baselines/console.std.approved.txt
@@ -0,0 +1,1615 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+Randomness seeded to: 1
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+<exe-name> is a Catch2 v<version> host application.
+Run with -? for options
+
+-------------------------------------------------------------------------------
+#1455 - INFO and WARN can start with a linebreak
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: warning:
+
+This warning message starts 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
+
+-------------------------------------------------------------------------------
+#2615 - Throwing in constructor generator fails test case but does not abort
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ failure to init
+
+-------------------------------------------------------------------------------
+#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
+
+-------------------------------------------------------------------------------
+#835 -- errno should not be touched by Catch2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+ CHECK( f() == 0 )
+with expansion:
+ 1 == 0
+
+-------------------------------------------------------------------------------
+'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 )
+
+-------------------------------------------------------------------------------
+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 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_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_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_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 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_PERSISTENT_FIXTURE based test run that fails
+ Second partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+
+-------------------------------------------------------------------------------
+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:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+An unchecked exception reports the line of the last assertion
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<line number>
+...............................................................................
+
+Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ unexpected exception
+
+-------------------------------------------------------------------------------
+Contains string matcher
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case
+ insensitive)
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Empty generators can SKIP in constructor
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ This generator is empty
+
+-------------------------------------------------------------------------------
+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)
+
+-------------------------------------------------------------------------------
+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.100000381f
+ ==
+ Approx( 9.10999965667724609 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14150000000000018 )
+
+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.30000000000000027
+ ==
+ Approx( 1.30099999999999993 )
+
+-------------------------------------------------------------------------------
+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 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
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+INFO and UNSCOPED_INFO can stream multiple arguments
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: FAILED:
+explicitly with messages:
+ This info has multiple parts.
+ This unscoped info has multiple parts.
+ Show infos!
+
+-------------------------------------------------------------------------------
+INFO and WARN do not abort tests
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: warning:
+ this is a warning
+
+-------------------------------------------------------------------------------
+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>: 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
+
+-------------------------------------------------------------------------------
+INFO is reset for each loop
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: FAILED:
+ REQUIRE( i < 10 )
+with expansion:
+ 10 < 10
+with messages:
+ current counter 10
+ i := 10
+
+-------------------------------------------------------------------------------
+Incomplete AssertionHandler
+-------------------------------------------------------------------------------
+AssertionHandler.tests.cpp:<line number>
+...............................................................................
+
+AssertionHandler.tests.cpp:<line number>: FAILED:
+ REQUIRE( Dummy )
+due to unexpected exception with message:
+ Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+
+-------------------------------------------------------------------------------
+Inequality checks that should fail
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<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.100000381f
+ !=
+ Approx( 9.10000038146972656 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14159265350000005 )
+
+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
+
+-------------------------------------------------------------------------------
+Matchers can be composed with both && and || - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "random" )
+
+-------------------------------------------------------------------------------
+Matchers can be negated (Not) with the ! operator - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mismatching exception messages failing the test
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<line number>
+...............................................................................
+
+Exception.tests.cpp:<line number>: FAILED:
+ REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
+with expansion:
+ "expected exception" equals: "should fail"
+
+-------------------------------------------------------------------------------
+Nice descriptive name
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: warning:
+ This one ran
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+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.100000381f < 9
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+
+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"
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+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
+
+A string sent directly to stdout
+A string sent directly to stderr
+A string sent to stderr via clog
+Message from section one
+Message from 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)
+
+-------------------------------------------------------------------------------
+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;
+ }
+ "
+
+-------------------------------------------------------------------------------
+Testing checked-if 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 3
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 4
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+Testing checked-if 5
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+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!
+
+-------------------------------------------------------------------------------
+Unexpected exceptions can be translated
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<line number>
+...............................................................................
+
+Exception.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ 3.14000000000000012
+
+-------------------------------------------------------------------------------
+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 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 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
+
+-------------------------------------------------------------------------------
+a succeeding test can still be skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+checkedElse, failing
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+ REQUIRE( testCheckedElse( false ) )
+with expansion:
+ false
+
+-------------------------------------------------------------------------------
+checkedIf, failing
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 41
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+failed assertions before SKIP cause test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+ CHECK( 3 == 4 )
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+loose text artifact
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+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 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>: 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>: 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:
+ and warn may mix
+
+Message.tests.cpp:<line number>: warning:
+ they are not cleared after warnings
+
+-------------------------------------------------------------------------------
+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
+
+a!
+b1!
+-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ B
+ B2
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+!
+-------------------------------------------------------------------------------
+not prints unscoped info from previous failures
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: FAILED:
+ REQUIRE( false )
+with message:
+ this SHOULD be seen
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+skipped tests can optionally provide a reason
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+tests can be skipped dynamically at runtime
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+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?
+
+===============================================================================
+test cases: 419 | 327 passed | 71 failed | 7 skipped | 14 failed as expected
+assertions: 2252 | 2087 passed | 130 failed | 35 failed as expected
+
diff --git a/tests/SelfTest/Baselines/console.sw.approved.txt b/tests/SelfTest/Baselines/console.sw.approved.txt
new file mode 100644
index 0000000..a53f40d
--- /dev/null
+++ b/tests/SelfTest/Baselines/console.sw.approved.txt
@@ -0,0 +1,19017 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+Randomness seeded to: 1
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+<exe-name> is a Catch2 v<version> host application.
+Run with -? for options
+
+-------------------------------------------------------------------------------
+# A test name that starts with a #
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ yay
+
+-------------------------------------------------------------------------------
+#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:
+
+-------------------------------------------------------------------------------
+#1319: Sections can have description (even if it is not saved
+ SectionName
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+#1905 -- test spec parser properly clears internal state between compound tests
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec . char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec , char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase(R"(spec \, char)")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ Various parentheses
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec {a} char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec [a] char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase("differs but has similar tag", "[a]")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ backslash in test name
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec \ char)")) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 3 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 6 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 4
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 4
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( 1 )
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - double
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323,
+ 4.9406564584124654e-324])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-
+ 324, -0.0000000000000000e+00])
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - float
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.
+ 00000000e+00])
+
+-------------------------------------------------------------------------------
+#2615 - Throwing in constructor generator fails test case but does not abort
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ failure to init
+
+-------------------------------------------------------------------------------
+#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::Matchers::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 Catch2
+-------------------------------------------------------------------------------
+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_after == 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 TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ First partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: PASSED:
+ REQUIRE( m_a++ == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ Second partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ First partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: PASSED:
+ REQUIRE( m_a++ == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ Second partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<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.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.22_a )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( -d == -1.23_a )
+with expansion:
+ -1.22999999999999998
+ ==
+ Approx( -1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1.2_a .epsilon(.1) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.19999999999999996 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.2_a .epsilon(.001) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.19999999999999996 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1_a .epsilon(.3) )
+with expansion:
+ 1.22999999999999998 == Approx( 1.0 )
+
+-------------------------------------------------------------------------------
+A couple of nested sections followed by a failure
+ Outer
+ Inner
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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.29999999999999716 != Approx( 100.0 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( 100.3 == Approx(100.0).margin(0.5) )
+with expansion:
+ 100.29999999999999716 == Approx( 100.0 )
+
+-------------------------------------------------------------------------------
+An empty test with no assertions
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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.14285714285714279
+ ==
+ Approx( 3.14100000000000001 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) )
+with expansion:
+ 3.14285714285714279
+ !=
+ Approx( 3.14100000000000001 )
+
+-------------------------------------------------------------------------------
+Approximate comparisons with different epsilons
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.231 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.23100000000000009 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.23100000000000009 )
+
+-------------------------------------------------------------------------------
+Approximate comparisons with floats
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( 1.23f == Approx( 1.23f ) )
+with expansion:
+ 1.230000019f
+ ==
+ Approx( 1.23000001907348633 )
+
+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.233999968f
+ ==
+ Approx( 1.23399999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( dMedium == Approx( 1.234f ) )
+with expansion:
+ 1.23399999999999999
+ ==
+ Approx( 1.23399996757507324 )
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Assertion macros support bit operators and bool conversions
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs | rhs )
+with expansion:
+ Val: 1 | Val: 2
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lhs & rhs )
+with expansion:
+ !(Val: 1 & Val: 2)
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( HasBitOperators{ 1 } & HasBitOperators{ 1 } )
+with expansion:
+ Val: 1 & Val: 1
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs ^ rhs )
+with expansion:
+ Val: 1 ^ Val: 2
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lhs ^ lhs )
+with expansion:
+ !(Val: 1 ^ Val: 1)
+
+-------------------------------------------------------------------------------
+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 )
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different argument ranges, same element type, default comparison
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(1) )
+with expansion:
+ { 1, 2, 3 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( b, Contains(1) )
+with expansion:
+ { 0, 1, 2 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( c, !Contains(1) )
+with expansion:
+ { 4, 5, 6 } not contains element 1
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different argument ranges, same element type, custom comparison
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(0, close_enough) )
+with expansion:
+ { 1, 2, 3 } contains element 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( b, Contains(0, close_enough) )
+with expansion:
+ { 0, 1, 2 } contains element 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( c, !Contains(0, close_enough) )
+with expansion:
+ { 4, 5, 6 } not contains element 0
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different element type, custom comparisons
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) )
+with expansion:
+ { "abc", "abcd", "abcde" } contains element 4
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Can handle type that requires ADL-found free function begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(1) )
+with expansion:
+ { 1, 2, 3, 4, 5 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, !Contains(8) )
+with expansion:
+ { 1, 2, 3, 4, 5 } not contains element 8
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Initialization with move only types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(MoveOnlyTestElement{ 2 }) )
+with expansion:
+ { 1, 2, 3 } contains element 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, !Contains(MoveOnlyTestElement{ 9 }) )
+with expansion:
+ { 1, 2, 3 } not contains element 9
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Matching using matcher
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) )
+with expansion:
+ { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Simple, std-provided containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_array, IsEmpty() )
+with expansion:
+ { } is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( non_empty_array, !IsEmpty() )
+with expansion:
+ { 0.0 } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, IsEmpty() )
+with expansion:
+ { } is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( non_empty_vec, !IsEmpty() )
+with expansion:
+ { 'a', 'b', 'c' } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( inner_lists_are_empty, !IsEmpty() )
+with expansion:
+ { { } } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( inner_lists_are_empty.front(), IsEmpty() )
+with expansion:
+ { } is empty
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Type with empty
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( has_empty{}, !IsEmpty() )
+with expansion:
+ {?} not is empty
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Type requires ADL found empty free function
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( unrelated::ADL_empty{}, IsEmpty() )
+with expansion:
+ {?} is empty
+
+-------------------------------------------------------------------------------
+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:
+ custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0
+ custom_index_op<int>{1, 2, 3}[(0, 1)] := 0
+ custom_index_op<int>{1, 2, 3}[0] := 0
+ (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
+
+-------------------------------------------------------------------------------
+CaseInsensitiveEqualsTo is case insensitive
+ Degenerate cases
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "", "" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "", "a" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveEqualsTo is case insensitive
+ Plain comparisons
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "a", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "a", "A" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "A", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "A", "A" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "a", "b" ) )
+with expansion:
+ !false
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "a", "B" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveLess is case insensitive
+ Degenerate cases
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lt( "a", "a" ) )
+with expansion:
+ !false
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lt( "", "" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveLess is case insensitive
+ Plain comparisons
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "a", "b" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "a", "B" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "A", "b" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "A", "B" ) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ Specifically escaped
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\t') == "'\\t'" )
+with expansion:
+ "'\t'" == "'\t'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\n') == "'\\n'" )
+with expansion:
+ "'\n'" == "'\n'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\r') == "'\\r'" )
+with expansion:
+ "'\r'" == "'\r'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\f') == "'\\f'" )
+with expansion:
+ "'\f'" == "'\f'"
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ General chars
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( ' ' ) == "' '" )
+with expansion:
+ "' '" == "' '"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( 'A' ) == "'A'" )
+with expansion:
+ "'A'" == "'A'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( 'z' ) == "'z'" )
+with expansion:
+ "'z'" == "'z'"
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ Low ASCII
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( '\0' ) == "0" )
+with expansion:
+ "0" == "0"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" )
+with expansion:
+ "2" == "2"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" )
+with expansion:
+ "5" == "5"
+
+-------------------------------------------------------------------------------
+Clara::Arg does not crash on incomplete input
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( result.type() == Catch::Clara::Detail::ResultType::Ok )
+with expansion:
+ 0 == 0
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parsed.type() == Catch::Clara::ParseResultType::NoMatch )
+with expansion:
+ 1 == 1
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parsed.remainingTokens().count() == 2 )
+with expansion:
+ 2 == 2
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Clara::Arg supports single-arg parse the way Opt does
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+Clara.tests.cpp:<line number>: PASSED:
+ REQUIRE( name == "foo" )
+with expansion:
+ "foo" == "foo"
+
+-------------------------------------------------------------------------------
+Clara::Opt supports accept-many lambdas
+ Parsing fails on multiple options without accept_many
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( parse_result )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Clara::Opt supports accept-many lambdas
+ Parsing succeeds on multiple options with accept_many
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parse_result )
+with expansion:
+ {?}
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( res == std::vector<std::string>{ "aaa", "bbb" } )
+with expansion:
+ { "aaa", "bbb" } == { "aaa", "bbb" }
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard is disengaged by default
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str().empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard is engaged by op<<
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" )
+with expansion:
+ "1
+ Using code: 2
+ 2
+ Using code: 0
+ 3
+ "
+ ==
+ "1
+ Using code: 2
+ 2
+ Using code: 0
+ 3
+ "
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard can be engaged explicitly
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" )
+with expansion:
+ "Using code: 2
+ A
+ B
+ Using code: 0
+ C
+ "
+ ==
+ "Using code: 2
+ A
+ B
+ Using code: 0
+ C
+ "
+
+-------------------------------------------------------------------------------
+Combining MatchAllOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::
+ Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && MatcherC() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::
+ Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() && ( MatcherB() && MatcherC() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() &&
+ MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA,
+ MatcherB, MatcherC, MatcherD>>:: value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 and equals: true )
+
+-------------------------------------------------------------------------------
+Combining MatchAnyOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::
+ Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || MatcherC() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::
+ Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || ( MatcherB() || MatcherC() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() ||
+ MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA,
+ MatcherB, MatcherC, MatcherD>>:: value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ or equals: true )
+
+-------------------------------------------------------------------------------
+Combining MatchNotOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::
+ MatchNotOfGeneric<MatcherA>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0, !MatcherA() )
+with expansion:
+ 0 not equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, !!MatcherA() )
+with expansion:
+ 1 equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::
+ MatchNotOfGeneric<MatcherA>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0, !!!MatcherA() )
+with expansion:
+ 0 not equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, !!!!MatcherA() )
+with expansion:
+ 1 equals: (int) 1 or (string) "1"
+
+-------------------------------------------------------------------------------
+Combining concrete matchers does not use templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) &&
+ EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::
+ MatchAnyOf<std::string>>::value
+
+-------------------------------------------------------------------------------
+Combining only templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail::
+ MatchAnyOfGeneric<MatcherA, MatcherB>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail::
+ MatchAllOfGeneric<MatcherA, MatcherB>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() && MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail:
+ :MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric
+ <MatcherB>>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || !MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+
+-------------------------------------------------------------------------------
+Combining templated and concrete matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) )
+with expansion:
+ { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5,
+ 3, 1 } )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' }
+ and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r'
+ } and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo"
+ and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with:
+ "foo" and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) )
+with expansion:
+ "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo"
+ and ends with: "bar" ) )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) )
+with expansion:
+ "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o',
+ 'f', 'b', 'a', 'r' } )
+
+-------------------------------------------------------------------------------
+Combining templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) )
+with expansion:
+ { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6
+ } )
+
+-------------------------------------------------------------------------------
+Commas in various macros are allowed
+-------------------------------------------------------------------------------
+Tricky.tests.cpp:<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 generic matchers shortcircuit
+ MatchAllOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( matcher.match( 1 ) )
+with expansion:
+ !false
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed generic matchers shortcircuit
+ MatchAnyOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK( matcher.match( 1 ) )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed matchers shortcircuit
+ MatchAllOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( matcher.match( 1 ) )
+with expansion:
+ !false
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed matchers shortcircuit
+ MatchAnyOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK( matcher.match( 1 ) )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Contains string matcher
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case
+ insensitive)
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+
+-------------------------------------------------------------------------------
+Copy and then generate a range
+ from var and iterators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Cout stream properly declares it writes to stdout
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "-" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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.00000099999999748 != 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 **}"
+
+-------------------------------------------------------------------------------
+Empty generators can SKIP in constructor
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ This generator is empty
+
+-------------------------------------------------------------------------------
+Empty stream name opens cout stream
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 CATCH_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
+CATCH_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.01000000000000512 != 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.100000381f
+ ==
+ Approx( 9.10999965667724609 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14150000000000018 )
+
+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.30000000000000027
+ ==
+ Approx( 1.30099999999999993 )
+
+-------------------------------------------------------------------------------
+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.100000381f
+ ==
+ Approx( 9.10000038146972656 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.double_pi == Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14159265350000005 )
+
+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.30000000000000027
+ ==
+ Approx( 1.30000000000000004 )
+
+-------------------------------------------------------------------------------
+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 message can be matched
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) )
+with expansion:
+ DerivedException::what matches "starts with: "Derived""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) )
+with expansion:
+ DerivedException::what matches "ends with: "::what""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) )
+with expansion:
+ DerivedException::what matches "not starts with: "::what""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) )
+with expansion:
+ SpecialException::what matches "starts with: "Special""
+
+-------------------------------------------------------------------------------
+Exception messages can be tested for
+ exact match
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<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(), ContainsSubstring( "except" ) )
+with expansion:
+ "expected exception" contains: "except"
+
+Exception.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "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>)
+
+-------------------------------------------------------------------------------
+Filter generator throws exception for empty generator
+-------------------------------------------------------------------------------
+GeneratorsImpl.tests.cpp:<line number>
+...............................................................................
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException )
+
+-------------------------------------------------------------------------------
+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.09999999999999964 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.19999999999999929 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.0 are within 99% of each other
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( -0., WithinRel( 0. ) )
+with expansion:
+ -0.0 and 0.0 are within 2.22045e-12% of each other
+
+-------------------------------------------------------------------------------
+Floating point matchers: double
+ Relative
+ Some subnormal values
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( v1, WithinRel( v2 ) )
+with expansion:
+ 0.0 and 0.0 are within 2.22045e-12% of each other
+
+-------------------------------------------------------------------------------
+Floating point matchers: double
+ Margin
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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.98999999999999999 of 1.0
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) )
+with expansion:
+ 0.0 not is within 0.98999999999999999 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.59999999999999964
+
+-------------------------------------------------------------------------------
+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.00000000000000022 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.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: double
+ IsNaN
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1., !IsNaN() )
+with expansion:
+ 1.0 not is NaN
+
+-------------------------------------------------------------------------------
+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.10000038146972656 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.19999980926513672 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.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.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 0.0 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.99000000953674316 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.99000000953674316 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.60000038146972656
+
+-------------------------------------------------------------------------------
+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( -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.000000119f 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.00100000004749745 of 0.0 or and 0.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 )
+
+-------------------------------------------------------------------------------
+Floating point matchers: float
+ IsNaN
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1., !IsNaN() )
+with expansion:
+ 1.0 not is NaN
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+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
+ 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
+ Simple filtering
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Generators internals
+ Filter generator
+ Filter out multiple elements at the start and end
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Generators internals
+ Filter generator
+ Throws on construction if it can't get initial element
+-------------------------------------------------------------------------------
+GeneratorsImpl.tests.cpp:<line number>
+...............................................................................
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter([](int) { return false; }, value(1)), Catch::GeneratorException )
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter([](int) { return false; }, values({ 1, 2, 3 })), 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.90000000000000002
+ ==
+ Approx( -0.90000000000000002 )
+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.80000000000000004
+ ==
+ Approx( -0.80000000000000004 )
+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.70000000000000007
+ ==
+ Approx( -0.70000000000000007 )
+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.60000000000000009
+ ==
+ Approx( -0.60000000000000009 )
+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.50000000000000011
+ ==
+ Approx( -0.50000000000000011 )
+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.40000000000000013
+ ==
+ Approx( -0.40000000000000013 )
+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.30000000000000016
+ ==
+ Approx( -0.30000000000000016 )
+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.20000000000000015
+ ==
+ Approx( -0.20000000000000015 )
+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.10000000000000014
+ ==
+ Approx( -0.10000000000000014 )
+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.00000000000000014
+ ==
+ Approx( -0.00000000000000014 )
+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.09999999999999987
+ ==
+ Approx( 0.09999999999999987 )
+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.19999999999999987
+ ==
+ Approx( 0.19999999999999987 )
+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.29999999999999988
+ ==
+ Approx( 0.29999999999999988 )
+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.39999999999999991
+ ==
+ Approx( 0.39999999999999991 )
+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.49999999999999989
+ ==
+ Approx( 0.49999999999999989 )
+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.59999999999999987
+ ==
+ Approx( 0.59999999999999987 )
+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.69999999999999984
+ ==
+ Approx( 0.69999999999999984 )
+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.79999999999999982
+ ==
+ Approx( 0.79999999999999982 )
+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.8999999999999998
+ ==
+ Approx( 0.8999999999999998 )
+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:
+ 0.99999999999999978 == 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.69999999999999996
+ ==
+ Approx( -0.69999999999999996 )
+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.39999999999999997
+ ==
+ Approx( -0.39999999999999997 )
+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.09999999999999998
+ ==
+ Approx( -0.09999999999999998 )
+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.20000000000000001
+ ==
+ Approx( 0.20000000000000001 )
+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.69999999999999996
+ ==
+ Approx( -0.69999999999999996 )
+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.39999999999999997
+ ==
+ Approx( -0.39999999999999997 )
+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.09999999999999998
+ ==
+ Approx( -0.09999999999999998 )
+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.20000000000000001
+ ==
+ Approx( 0.20000000000000001 )
+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.22999999999999998
+ >=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d >= Approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ >=
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( d >= Approx( 1.24 ) )
+with expansion:
+ !(1.22999999999999998
+ >=
+ Approx( 1.23999999999999999 ))
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) )
+with expansion:
+ 1.22999999999999998
+ >=
+ Approx( 1.23999999999999999 )
+
+-------------------------------------------------------------------------------
+Hashers with different seed produce different hash with same test case
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h1( dummy ) != h2( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ !=
+ 130711275 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashers with same seed produce same hash
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h1( dummy ) == h2( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ ==
+ 3422778688 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different test name
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2903002874 (0x<hex digits>)
+ !=
+ 2668622104 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different classname
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2673152918 (0x<hex digits>)
+ !=
+ 3916075712 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different tags
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2074929312 (0x<hex digits>)
+ !=
+ 3429949824 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing test case produces same hash across multiple calls
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy ) == h( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ ==
+ 3422778688 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+INFO and UNSCOPED_INFO can stream multiple arguments
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: FAILED:
+explicitly with messages:
+ This info has multiple parts.
+ This unscoped info has multiple parts.
+ Show infos!
+
+-------------------------------------------------------------------------------
+INFO and WARN do not abort tests
+-------------------------------------------------------------------------------
+Message.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Incomplete AssertionHandler
+-------------------------------------------------------------------------------
+AssertionHandler.tests.cpp:<line number>
+...............................................................................
+
+AssertionHandler.tests.cpp:<line number>: FAILED:
+ REQUIRE( Dummy )
+due to unexpected exception with message:
+ Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+
+-------------------------------------------------------------------------------
+Inequality checks that should fail
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<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.100000381f
+ !=
+ Approx( 9.10000038146972656 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14159265350000005 )
+
+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.100000381f
+ !=
+ Approx( 9.10999965667724609 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
+with expansion:
+ 9.100000381f != Approx( 9.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 1 ) )
+with expansion:
+ 9.100000381f != Approx( 1.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 0 ) )
+with expansion:
+ 9.100000381f != Approx( 0.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.double_pi != Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14150000000000018 )
+
+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
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Newly constructed JsonWriter does nothing
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "" )
+with expansion:
+ "" == ""
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeObject will create an empty pair of braces
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "{\n}" )
+with expansion:
+ "{
+ }"
+ ==
+ "{
+ }"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeObject with key will create an object to write the value
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) )
+with expansion:
+ "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+ }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains:
+ ""true": true," and contains: ""false": false," and contains: ""string":
+ "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+ }" )
+
+-------------------------------------------------------------------------------
+JsonWriter
+ nesting objects
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) )
+with expansion:
+ "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+ }" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeArray will create an empty pair of braces
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n]" )
+with expansion:
+ "[
+ ]"
+ ==
+ "[
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeArray creates array to write the values to
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" )
+with expansion:
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+ ]"
+ ==
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Moved from JsonObjectWriter shall not insert superfluous brace
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "{\n}" )
+with expansion:
+ "{
+ }"
+ ==
+ "{
+ }"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Moved from JsonArrayWriter shall not insert superfluous bracket
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n]" )
+with expansion:
+ "[
+ ]"
+ ==
+ "[
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Custom class shall be quoted
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "\"custom\"" )
+with expansion:
+ ""custom"" == ""custom""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Quote in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\"\"" )
+with expansion:
+ ""\""" == ""\"""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Backslash in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\\\"" )
+with expansion:
+ ""\\"" == ""\\""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Forward slash in a string is **not** escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"/\"" )
+with expansion:
+ ""/"" == ""/""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Backspace in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\b\"" )
+with expansion:
+ ""\b"" == ""\b""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Formfeed in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\f\"" )
+with expansion:
+ ""\f"" == ""\f""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ linefeed in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\n\"" )
+with expansion:
+ ""\n"" == ""\n""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ carriage return in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\r\"" )
+with expansion:
+ ""\r"" == ""\r""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ tab in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\t\"" )
+with expansion:
+ ""\t"" == ""\t""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ combination of characters is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\\/\\t\\r\\n\"" )
+with expansion:
+ ""\\/\t\r\n"" == ""\\/\t\r\n""
+
+-------------------------------------------------------------------------------
+Lambdas in assertions
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( []() { return true; }() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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.22999999999999998
+ <=
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d <= Approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ <=
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( d <= Approx( 1.22 ) )
+with expansion:
+ !(1.22999999999999998
+ <=
+ Approx( 1.21999999999999997 ))
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) )
+with expansion:
+ 1.22999999999999998
+ <=
+ Approx( 1.21999999999999997 )
+
+-------------------------------------------------------------------------------
+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(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( contains: "string" and
+ contains: "abc" and contains: "substring" and contains: "contains" )
+
+-------------------------------------------------------------------------------
+Matchers can be (AnyOf) composed with the || operator
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( contains: "string" or contains:
+ "different" or contains: "random" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
+with expansion:
+ "some completely different text that contains one common word" ( contains:
+ "string" or contains: "different" or contains: "random" )
+
+-------------------------------------------------------------------------------
+Matchers can be composed with both && and ||
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "substring" )
+
+-------------------------------------------------------------------------------
+Matchers can be composed with both && and || - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "random" )
+
+-------------------------------------------------------------------------------
+Matchers can be negated (Not) with the ! operator
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "different" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "different"
+
+-------------------------------------------------------------------------------
+Matchers can be negated (Not) with the ! operator - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+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"
+
+-------------------------------------------------------------------------------
+Multireporter calls reporters and listeners in correct order
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( records == expected )
+with expansion:
+ { "Hello", "world", "Goodbye", "world" }
+ ==
+ { "Hello", "world", "Goodbye", "world" }
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+ Adding listeners
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+ Adding reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+-------------------------------------------------------------------------------
+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)
+
+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.100000381f < 9
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+
+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.100000381f > 9
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one < 10 )
+with expansion:
+ 9.100000381f < 10
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one < 9.2 )
+with expansion:
+ 9.100000381f < 9.19999999999999929
+
+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
+
+-------------------------------------------------------------------------------
+Overloaded comma or address-of operators are not used
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( &EvilMatcher(), EvilAddressOfOperatorUsed )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() )
+
+-------------------------------------------------------------------------------
+Parse uints
+ proper inputs
+-------------------------------------------------------------------------------
+Parse.tests.cpp:<line number>
+...............................................................................
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "0" ) == Optional<unsigned int>{ 0 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "100" ) == Optional<unsigned int>{ 100 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+Parse uints
+ Bad inputs
+-------------------------------------------------------------------------------
+Parse.tests.cpp:<line number>
+...............................................................................
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "!!KJHF*#" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "-1" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "4294967296" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "42949672964294967296429496729642949672964294967296" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "2 4" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "0x<hex digits>", 10 ) )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Parsed tags are matched case insensitive
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ shard-count
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-count=8" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardCount == 8 )
+with expansion:
+ 8 == 8
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Negative shard count reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) )
+with expansion:
+ "Could not parse '-1' as shard count" contains: "Could not parse '-1' as
+ shard count"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Zero shard count reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) )
+with expansion:
+ "Shard count must be positive" contains: "Shard count must be positive"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ shard-index
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-index=2" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardIndex == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Negative shard index reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) )
+with expansion:
+ "Could not parse '-12' as shard index" contains: "Could not parse '-12' as
+ shard index"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Shard index 0 is accepted
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-index=0" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardIndex == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+Parsing tags with non-alphabetical characters is pass-through
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+-------------------------------------------------------------------------------
+Parsing tags with non-alphabetical characters is pass-through
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ NoAssertions
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( cli.parse( { "test", "-w", "NoAssertions" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.warnings == WarnAbout::NoAssertions )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ NoTests is no longer supported
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( cli.parse( { "test", "-w", "NoTests" } ) )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ Combining multiple warnings
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+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.reporterSpecifications.empty() )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( cfg.hasTestFilters() )
+with expansion:
+ !false
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getReporterSpecs().size() == 1 )
+with expansion:
+ 1 == 1
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } )
+with expansion:
+ {?} == {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getProcessedReporterSpecs().size() == 1 )
+with expansion:
+ 1 == 1
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ test lists
+ Specify one test case using
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ -r/xml
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ --reporter/junit
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ must match one of the available ones
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( !result )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Unrecognized reporter") )
+with expansion:
+ "Unrecognized reporter, 'unsupported'. Check available with --list-reporters"
+ contains: "Unrecognized reporter"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ With output file
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ With Windows-like absolute path as output file
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ All with output files
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } )
+with expansion:
+ { {?}, {?} } == { {?}, {?} }
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ Mixed output files and default output
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } )
+with expansion:
+ { {?}, {?} } == { {?}, {?} }
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ cannot have multiple reporters with default output
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( !result )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") )
+with expansion:
+ "Only one reporter may have unspecified output file." contains: "Only one
+ reporter may have unspecified output file."
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ debugger
+ -b
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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(), ContainsSubstring("convert") && ContainsSubstring("oops") )
+with expansion:
+ "Unable to convert 'oops' to destination type" ( contains: "convert" and
+ contains: "oops" )
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ abort
+ wait-for-keypress
+ Accepted options
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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(), ContainsSubstring("never") && ContainsSubstring("both") )
+with expansion:
+ "keypress argument must be one of: never, start, exit or both. 'sometimes'
+ not recognised" ( contains: "never" and contains: "both" )
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ nothrow
+ -e
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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.defaultOutputFilename == "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.defaultOutputFilename == "filename.ext" )
+with expansion:
+ "filename.ext" == "filename.ext"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ combinations
+ Single character flags can be combined
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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.defaultColourMode == ColourMode::PlatformDefault )
+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", "--colour-mode", "default" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault )
+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", "--colour-mode", "ansi"}) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::ANSI )
+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", "--colour-mode", "none"}) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::None )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+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(), ContainsSubstring( "colour mode must be one of" ) )
+with expansion:
+ "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not
+ recognised" contains: "colour mode must be one of"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ Benchmark options
+ samples
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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::Approx(0.99) )
+with expansion:
+ 0.98999999999999999
+ ==
+ Approx( 0.98999999999999999 )
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation reports unknown methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77)) )
+
+-------------------------------------------------------------------------------
+Range type with sentinel
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( Catch::Detail::stringify(UsesSentinel{}) == "{ }" )
+with expansion:
+ "{ }" == "{ }"
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Registering reporter with '::' in name fails
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_WITH( registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" )
+with expansion:
+ "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is
+ not allowed in reporter name: 'with::doublecolons'"
+
+-------------------------------------------------------------------------------
+Regression test #1
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( actual, !UnorderedEquals( expected ) )
+with expansion:
+ { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag"
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter"
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <TagsFromMatchingTests>
+ <Tag>
+ <Count>1</Count>
+ <Aliases>
+ <Alias>fakeTag</Alias>
+ </Aliases>
+ </Tag>
+ </TagsFromMatchingTests>" contains: "fakeTag"
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <AvailableReporters>
+ <Reporter>
+ <Name>fake reporter</Name>
+ <Description>fake description</Description>
+ </Reporter>
+ </AvailableReporters>" contains: "fake reporter"
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <MatchingTests>
+ <TestCase>
+ <Name>fake test name</Name>
+ <ClassName/>
+ <Tags>[fakeTestTag]</Tags>
+ <SourceInfo>
+ <File>fake-file.cpp</File>
+ <Line>123456789</Line>
+ </SourceInfo>
+ </TestCase>
+ </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reproducer for #2309 - a very long description past 80 chars (default console
+width) with a late colon : blablabla
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+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.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.22 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.24 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1.23_a )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.22_a )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) == 1.23 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.22999999999999998
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) != 1.22 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ !=
+ 1.21999999999999997
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) != 1.24 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ !=
+ 1.23999999999999999
+
+Message from section one
+-------------------------------------------------------------------------------
+Standard output from all sections is reported
+ one
+-------------------------------------------------------------------------------
+Message.tests.cpp:<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(), ContainsSubstring( "string" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "string"
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "string" (case
+ insensitive)
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "abc" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "abc"
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "abc" (case
+ insensitive)
+
+Matchers.tests.cpp:<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( std::strcmp( empty.data(), "" ) == 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( std::strcmp( rawChars, "hello" ) == 0 )
+with expansion:
+ 0 == 0
+
+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_NOTHROW( original.data() )
+
+-------------------------------------------------------------------------------
+StringRef
+ Copy construction is shallow
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( original.begin() == copy.begin() )
+with expansion:
+ "original string" == "original string"
+
+-------------------------------------------------------------------------------
+StringRef
+ Copy assignment is shallow
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( original.begin() == copy.begin() )
+with expansion:
+ "original string" == "original string"
+
+-------------------------------------------------------------------------------
+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.data(), "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.data(), "world!") == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+StringRef
+ Substrings
+ substring start after the end is empty
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( s.substr(1'000'000, 1).empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+StringRef
+ Comparisons are deep
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ CHECK( reinterpret_cast<char*>(buffer1) != reinterpret_cast<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
+ std::string += StringRef
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs == "some string += the stringref contents" )
+with expansion:
+ "some string += the stringref contents"
+ ==
+ "some string += the stringref contents"
+
+-------------------------------------------------------------------------------
+StringRef
+ StringRef + StringRef
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( together == "abrakadabra" )
+with expansion:
+ "abrakadabra" == "abrakadabra"
+
+-------------------------------------------------------------------------------
+StringRef at compilation time
+ Simple constructors
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ empty.size() == 0
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ empty.begin() == empty.end()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.size() == 3
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.data() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.begin() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.begin() != stringref.end()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.substr(10, 0).empty()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.substr(2, 1).data() == abc + 2
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref[1] == 'b'
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.size() == 2
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.data() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.begin() != shortened.end()
+
+-------------------------------------------------------------------------------
+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:
+ sr2.empty()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ sr2.size() == 0
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - signed char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - unsigned char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+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, ContainsSubstring( "[@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, ContainsSubstring( "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, ContainsSubstring( "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, ContainsSubstring( "10" ) )
+with expansion:
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+
+-------------------------------------------------------------------------------
+Tag alias can be registered against tag patterns
+ Tag aliases must be of the form [@name]
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<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 ) ) )
+
+-------------------------------------------------------------------------------
+Tags with spaces and non-alphanumerical characters are accepted
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags.size() == 2 )
+with expansion:
+ 2 == 2
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) )
+with expansion:
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+
+-------------------------------------------------------------------------------
+Template test case method with test types specified inside std::tuple - MyTypes
+- 0
+-------------------------------------------------------------------------------
+Class.tests.cpp:<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( std::is_default_constructible<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_default_constructible<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_trivially_copyable<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_trivially_copyable<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 1
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 identical tags keeps just one
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags.size() == 1 )
+with expansion:
+ 1 == 1
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags[0] == Tag( "tag1" ) )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+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:
+
+-------------------------------------------------------------------------------
+Testing checked-if
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_IF( true )
+
+Misc.tests.cpp:<line number>: PASSED:
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_IF( false )
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_ELSE( true )
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_IF( true )
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 3
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 4
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_ELSE( true )
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+Testing checked-if 5
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+The NO_FAIL macro reports a failure but does not fail the test
+-------------------------------------------------------------------------------
+Message.tests.cpp:<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'
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("[fakeTag]"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "[fakeTag]"
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing listeners
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) )
+with expansion:
+ "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+
+-------------------------------------------------------------------------------
+This test 'should' fail but doesn't
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( c_array ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( c_array ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types (differ in array N)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_3, !RangeEquals( array_int_4 ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_3, !UnorderedRangeEquals( array_int_4 ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types and value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers, one random access, one not
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+with message:
+ ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess(
+ list_char_a )
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( list_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( list_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Value type
+ Two equal containers of different value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, RangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, UnorderedRangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Value type
+ Two non-equal containers of different value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, !RangeEquals( vector_char_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, !UnorderedRangeEquals( vector_char_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Ranges with begin that needs ADL
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, !RangeEquals( b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 3, 2, 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, UnorderedRangeEquals( b ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, RangeEquals( array_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Unexpected exceptions can be translated
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<line number>
+...............................................................................
+
+Exception.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ 3.14000000000000012
+
+-------------------------------------------------------------------------------
+Upcasting special member functions
+ Move constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( bptr->i == 3 )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+Upcasting special member functions
+ move assignment
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( bptr->i == 3 )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllMatch(SizeIs(5)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } all match has size == 5
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllMatch(Contains(0) && Contains(1)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains
+ element 1 )
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, allMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !allMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ Empty evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ One false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { false, false, false, false, false } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ One false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { false, false, false, false, false } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyMatch(SizeIs(5)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } any match has size == 5
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyMatch(Contains(0) && Contains(10)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains
+ element 10 )
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !anyMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, anyMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[1] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[2] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { true, true, true, true, true } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ Empty evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ One true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { false, false, true, false, false } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { false, false, false, false, false } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { true, true, true, true, true } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ One true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { false, false, true, false, false } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { false, false, false, false, false } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AnyTrue() )
+with expansion:
+ { false, false, false, false, true } contains at least one true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AnyTrue() )
+with expansion:
+ { false, false, true, true, true } contains at least one true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneMatch(SizeIs(6)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } none match has size == 6
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneMatch(Contains(0) && Contains(1)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains
+ element 1 )
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, noneMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !noneMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[1] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[2] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ All true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { true, true, true, true, true } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ Empty evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ One true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { false, false, true, false, false } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ All false evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { true, true, true, true, true } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ One true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { false, false, true, false, false } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !NoneTrue() )
+with expansion:
+ { false, false, true, true, true } not contains no true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Empty container matches empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, RangeEquals( empty_vector ) )
+with expansion:
+ { } elements are { }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Empty container does not match non-empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, !RangeEquals( non_empty_vector ) )
+with expansion:
+ { } not elements are { 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_vector, !RangeEquals( empty_vector ) )
+with expansion:
+ { 1 } not elements are { }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal 1-length non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_array, RangeEquals( non_empty_array ) )
+with expansion:
+ { 1 } elements are { 1 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal-sized, equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, RangeEquals( array_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal-sized, non-equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !RangeEquals( array_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 2, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !RangeEquals( array_c ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two non-equal-sized, non-empty containers (with same first elements)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !RangeEquals( vector_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, RangeEquals( vector_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Custom predicate
+ Two non-equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !RangeEquals( vector_b, close_enough ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 3, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Ranges that need ADL begin/end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl2 ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Compare against std::initializer_list
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, RangeEquals( { 1, 2, 3 } ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 4, 6 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Check short-circuiting behaviour
+ Check short-circuits on failure
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked1, !RangeEquals( arr ) )
+with expansion:
+ { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked1.m_derefed[3] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Check short-circuiting behaviour
+ All elements are checked on success
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked1, RangeEquals( arr ) )
+with expansion:
+ { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[3] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Empty container matches empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, UnorderedRangeEquals( empty_vector ) )
+with expansion:
+ { } unordered elements are { }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Empty container does not match non-empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, !UnorderedRangeEquals( non_empty_vector ) )
+with expansion:
+ { } not unordered elements are { 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_vector, !UnorderedRangeEquals( empty_vector ) )
+with expansion:
+ { 1 } not unordered elements are { }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal 1-length non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_array, UnorderedRangeEquals( non_empty_array ) )
+with expansion:
+ { 1 } unordered elements are { 1 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal-sized, equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, UnorderedRangeEquals( array_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal-sized, non-equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !UnorderedRangeEquals( array_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two non-equal-sized, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Custom predicate
+ Two non-equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b, close_enough ) )
+with expansion:
+ { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Ranges that need ADL begin/end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, UnorderedRangeEquals( needs_adl2 ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Compare against std::initializer_list
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, UnorderedRangeEquals( { 10, 20, 1 } ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Some with stdlib containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, SizeIs(0) )
+with expansion:
+ { } has size == 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, !SizeIs(2) )
+with expansion:
+ { } not has size == 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, SizeIs(Lt(2)) )
+with expansion:
+ { } size matches is less than 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, SizeIs(2) )
+with expansion:
+ { 0, 0 } has size == 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, SizeIs( Lt(3)) )
+with expansion:
+ { 0, 0 } size matches is less than 3
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, !SizeIs(!Lt(3)) )
+with expansion:
+ { 0, 0 } not size matches not is less than 3
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( map, SizeIs(3) )
+with expansion:
+ { {?}, {?}, {?} } has size == 3
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Type requires ADL found size free function
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( unrelated::ADL_size{}, SizeIs(12) )
+with expansion:
+ {?} has size == 12
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Type has size member
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( has_size{}, SizeIs(13) )
+with expansion:
+ {?} has size == 13
+
+-------------------------------------------------------------------------------
+Use a custom approx
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.22 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.24 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != approx( 1.25 ) )
+with expansion:
+ 1.22999999999999998 != Approx( 1.25 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.23 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.22999999999999998
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.22 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.21999999999999997
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.24 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.23999999999999999
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) != 1.25 )
+with expansion:
+ Approx( 1.22999999999999998 ) != 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 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( v1, Approx<double>( { 1., 2., 3. } ) )
+with expansion:
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+
+-------------------------------------------------------------------------------
+Vector Approx matcher
+ Vectors with elements
+ Different length
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( VectorContains<int, CustomAllocator<int>>( 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<int>( { 1, 2 } ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( 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: { }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, Contains( v6 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2 }
+
+-------------------------------------------------------------------------------
+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<int>( { 1, 2, 3 } ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, Equals( v6 ) )
+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( v, UnorderedEquals<int>( { 3, 2, 1 } ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+
+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 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5_permuted, UnorderedEquals( v5 ) )
+with expansion:
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Vector matchers that fail
+ Contains (element)
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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'
+
+-------------------------------------------------------------------------------
+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]"
+
+-------------------------------------------------------------------------------
+XmlWriter writes boolean attributes as true/false
+-------------------------------------------------------------------------------
+Xml.tests.cpp:<line number>
+...............................................................................
+
+Xml.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <Element1 attr1="true" attr2="false"/>
+ " ( contains: "attr1="true"" and contains: "attr2="false"" )
+
+-------------------------------------------------------------------------------
+a succeeding test can still be skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+analyse no analysis
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.point.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.lower_bound.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.upper_bound.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.point.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.lower_bound.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.upper_bound.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.total() == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.low_mild == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.low_severe == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.high_mild == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.high_severe == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.samples_seen == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outlier_variance == 0 )
+with expansion:
+ 0.0 == 0
+
+-------------------------------------------------------------------------------
+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 }"
+
+-------------------------------------------------------------------------------
+benchmark function call
+ without chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( called == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+benchmark function call
+ with chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( called == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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 - but was ok:
+ 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 - but was ok:
+ CHECKED_IF( flag )
+with expansion:
+ false
+
+Misc.tests.cpp:<line number>: FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+
+-------------------------------------------------------------------------------
+classify_outliers
+ none
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+classify_outliers
+ low severe
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ low mild
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ high mild
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ high severe
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ mixed
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+convertToBits
+-------------------------------------------------------------------------------
+FloatingPoint.tests.cpp:<line number>
+...............................................................................
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( 0.f ) == 0 )
+with expansion:
+ 0 == 0
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( -0.f ) == ( 1ULL << 31 ) )
+with expansion:
+ 2147483648 (0x<hex digits>)
+ ==
+ 2147483648 (0x<hex digits>)
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( 0. ) == 0 )
+with expansion:
+ 0 == 0
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( -0. ) == ( 1ULL << 63 ) )
+with expansion:
+ 9223372036854775808 (0x<hex digits>)
+ ==
+ 9223372036854775808 (0x<hex digits>)
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 )
+with expansion:
+ 1 == 1
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 41
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+empty tags are not allowed
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) )
+
+-------------------------------------------------------------------------------
+erfc_inv
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) )
+with expansion:
+ -0.09203687623843014
+ ==
+ Approx( -0.09203687623843015 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) )
+with expansion:
+ -0.05980291115763361
+ ==
+ Approx( -0.05980291115763361 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) )
+with expansion:
+ 1.38590382434967774
+ ==
+ Approx( 1.38590382434967796 )
+
+-------------------------------------------------------------------------------
+estimate_clock_resolution
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.mean.count() == rate )
+with expansion:
+ 2000.0 == 2000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.outliers.total() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+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:
+
+-------------------------------------------------------------------------------
+failed assertions before SKIP cause test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+ CHECK( 3 == 4 )
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+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'
+
+-------------------------------------------------------------------------------
+is_unary_function
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<int>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<std::string const&>::value)
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+makeStream recognizes %debug stream name
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::makeStream( "%debug" ) )
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ From lvalue copies
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lval.has_moved )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ From rvalue moves
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( rval.has_moved )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ Variadic constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == std::tuple<int, double, int>{1, 2., 3} )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+mean
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( m == 19. )
+with expansion:
+ 19.0 == 19.0
+
+-------------------------------------------------------------------------------
+measure
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x == 17 )
+with expansion:
+ 17 == 17
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x == 23 )
+with expansion:
+ 23 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.elapsed.count() == 42 )
+with expansion:
+ 42 == 42
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.result == 23 )
+with expansion:
+ 23 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.iterations == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.elapsed.count() == 69 )
+with expansion:
+ 69 == 69
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.result == 17 )
+with expansion:
+ 17 == 17
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.iterations == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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
+
+a-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ A
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in section 'A'
+
+!
+b1-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ B
+ B1
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in section 'B1'
+
+!
+-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ B
+ B2
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+!
+-------------------------------------------------------------------------------
+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:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+normal_quantile
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) )
+with expansion:
+ 0.13015979861484195
+ ==
+ Approx( 0.13015979861484198 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) )
+with expansion:
+ 0.08457408802851875
+ ==
+ Approx( 0.08457408802851875 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) )
+with expansion:
+ -1.95996398454005405
+ ==
+ Approx( -1.95996398454005449 )
+
+-------------------------------------------------------------------------------
+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
+ no replace in already-replaced string
+ lengthening
+-------------------------------------------------------------------------------
+StringManip.tests.cpp:<line number>
+...............................................................................
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( Catch::replaceInPlace(letters, "c", "cc") )
+with expansion:
+ true
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( letters == "abccdefccg" )
+with expansion:
+ "abccdefccg" == "abccdefccg"
+
+-------------------------------------------------------------------------------
+replaceInPlace
+ no replace in already-replaced string
+ shortening
+-------------------------------------------------------------------------------
+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 == "--" )
+with expansion:
+ "--" == "--"
+
+-------------------------------------------------------------------------------
+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"
+
+-------------------------------------------------------------------------------
+request an unknown %-starting stream fails
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::makeStream( "%somestream" ) )
+
+-------------------------------------------------------------------------------
+resolution
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.size() == count )
+with expansion:
+ 10 == 10
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+run_for_at_least, chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 1 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 2 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 4 >= 2
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 8 >= 4
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 16 >= 8
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 32 >= 16
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 64 >= 32
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 128 >= 64
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.elapsed >= time )
+with expansion:
+ 128 ns >= 100 ns
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.result == Timing.iterations + 17 )
+with expansion:
+ 145 == 145
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.iterations >= time.count() )
+with expansion:
+ 128 >= 100
+
+-------------------------------------------------------------------------------
+run_for_at_least, int
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 1 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 2 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 4 >= 2
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 8 >= 4
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 16 >= 8
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 32 >= 16
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 64 >= 32
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 128 >= 64
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.elapsed >= time )
+with expansion:
+ 128 ns >= 100 ns
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.result == Timing.iterations + 17 )
+with expansion:
+ 145 == 145
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.iterations >= time.count() )
+with expansion:
+ 128 >= 100
+
+-------------------------------------------------------------------------------
+second tag
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in test case 'second tag'
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ also not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+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, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) )
+with expansion:
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+
+-------------------------------------------------------------------------------
+skipped tests can optionally provide a reason
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+startsWith
+-------------------------------------------------------------------------------
+StringManip.tests.cpp:<line number>
+...............................................................................
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( startsWith("", 'c') )
+with expansion:
+ !false
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( startsWith(std::string("abc"), 'a') )
+with expansion:
+ true
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( startsWith("def"_catch_sr, 'd') )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 } }"
+
+-------------------------------------------------------------------------------
+stdout and stderr streams have %-starting name
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "%stderr" )->isConsole() )
+with expansion:
+ true
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "%stdout" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+tags with dots in later positions are not parsed as hidden
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testcase.tags.size() == 1 )
+with expansion:
+ 1 == 1
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testcase.tags[0].original == "magic.tag"_catch_sr )
+with expansion:
+ magic.tag == magic.tag
+
+-------------------------------------------------------------------------------
+tests can be skipped dynamically at runtime
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+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.5f" == ::Catch::Detail::stringify(float(1.5)) )
+with expansion:
+ "1.5f" == "1.5f"
+
+ToStringTuple.tests.cpp:<line number>: PASSED:
+ CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) )
+with expansion:
+ "{ 1.5f, 0 }" == "{ 1.5f, 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<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.5f }" == ::Catch::Detail::stringify(value) )
+with expansion:
+ "{ { 42 }, { }, 1.5f }"
+ ==
+ "{ { 42 }, { }, 1.5f }"
+
+-------------------------------------------------------------------------------
+uniform samples
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.point == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.upper_bound == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.lower_bound == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.confidence_interval == 0.95 )
+with expansion:
+ 0.94999999999999996 == 0.94999999999999996
+
+-------------------------------------------------------------------------------
+uniform_integer_distribution can return the bounds
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE( dist.a() == -10 )
+with expansion:
+ -10 == -10
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE( dist.b() == 10 )
+with expansion:
+ 10 == 10
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Default constructed unique_ptr is empty
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 0 )
+with expansion:
+ 0 == 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == naked_ptr )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+ Plain reset deallocates
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 0 )
+with expansion:
+ 0 == 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == naked_ptr )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+ Reset replaces ownership
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() != 0 )
+with expansion:
+ 0x<hex digits> != 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Release releases ownership
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ CHECK( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Move constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr1 )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr2 )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr2 == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Move assignment
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr2 )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr1 )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr1 == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ free swap
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr1 == 2 )
+with expansion:
+ 2 == 2
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr2 == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+warmup
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() )
+with expansion:
+ 160000000 (0x<hex digits>) > 100
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( (end - start) > Catch::Benchmark::Detail::warmup_time )
+with expansion:
+ 310016000 ns > 100 ms
+
+-------------------------------------------------------------------------------
+weighted_average_quantile
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( q1 == 14.5 )
+with expansion:
+ 14.5 == 14.5
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( med == 18. )
+with expansion:
+ 18.0 == 18.0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( q3 == 23. )
+with expansion:
+ 23.0 == 23.0
+
+-------------------------------------------------------------------------------
+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: 419 | 313 passed | 86 failed | 6 skipped | 14 failed as expected
+assertions: 2269 | 2087 passed | 147 failed | 35 failed as expected
+
diff --git a/tests/SelfTest/Baselines/console.sw.multi.approved.txt b/tests/SelfTest/Baselines/console.sw.multi.approved.txt
new file mode 100644
index 0000000..418ccf7
--- /dev/null
+++ b/tests/SelfTest/Baselines/console.sw.multi.approved.txt
@@ -0,0 +1,19006 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+Randomness seeded to: 1
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+<exe-name> is a Catch2 v<version> host application.
+Run with -? for options
+
+-------------------------------------------------------------------------------
+# A test name that starts with a #
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ yay
+
+-------------------------------------------------------------------------------
+#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:
+
+-------------------------------------------------------------------------------
+#1319: Sections can have description (even if it is not saved
+ SectionName
+-------------------------------------------------------------------------------
+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'
+
+-------------------------------------------------------------------------------
+#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
+
+-------------------------------------------------------------------------------
+#1905 -- test spec parser properly clears internal state between compound tests
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec . char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec , char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase(R"(spec \, char)")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ Various parentheses
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec {a} char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec [a] char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase("differs but has similar tag", "[a]")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ backslash in test name
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec \ char)")) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 3 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 6 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 4
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 4
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( 1 )
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - double
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323,
+ 4.9406564584124654e-324])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-
+ 324, -0.0000000000000000e+00])
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - float
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.
+ 00000000e+00])
+
+-------------------------------------------------------------------------------
+#2615 - Throwing in constructor generator fails test case but does not abort
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ failure to init
+
+-------------------------------------------------------------------------------
+#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::Matchers::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 Catch2
+-------------------------------------------------------------------------------
+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_after == 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 TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ First partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: PASSED:
+ REQUIRE( m_a++ == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ Second partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ First partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<line number>
+...............................................................................
+
+Class.tests.cpp:<line number>: PASSED:
+ REQUIRE( m_a++ == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ Second partial run
+-------------------------------------------------------------------------------
+Class.tests.cpp:<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.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.22_a )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( -d == -1.23_a )
+with expansion:
+ -1.22999999999999998
+ ==
+ Approx( -1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1.2_a .epsilon(.1) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.19999999999999996 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.2_a .epsilon(.001) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.19999999999999996 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1_a .epsilon(.3) )
+with expansion:
+ 1.22999999999999998 == Approx( 1.0 )
+
+-------------------------------------------------------------------------------
+A couple of nested sections followed by a failure
+ Outer
+ Inner
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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.29999999999999716 != Approx( 100.0 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( 100.3 == Approx(100.0).margin(0.5) )
+with expansion:
+ 100.29999999999999716 == Approx( 100.0 )
+
+-------------------------------------------------------------------------------
+An empty test with no assertions
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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.14285714285714279
+ ==
+ Approx( 3.14100000000000001 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) )
+with expansion:
+ 3.14285714285714279
+ !=
+ Approx( 3.14100000000000001 )
+
+-------------------------------------------------------------------------------
+Approximate comparisons with different epsilons
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.231 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.23100000000000009 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.23100000000000009 )
+
+-------------------------------------------------------------------------------
+Approximate comparisons with floats
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( 1.23f == Approx( 1.23f ) )
+with expansion:
+ 1.230000019f
+ ==
+ Approx( 1.23000001907348633 )
+
+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.233999968f
+ ==
+ Approx( 1.23399999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( dMedium == Approx( 1.234f ) )
+with expansion:
+ 1.23399999999999999
+ ==
+ Approx( 1.23399996757507324 )
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Assertion macros support bit operators and bool conversions
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs | rhs )
+with expansion:
+ Val: 1 | Val: 2
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lhs & rhs )
+with expansion:
+ !(Val: 1 & Val: 2)
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( HasBitOperators{ 1 } & HasBitOperators{ 1 } )
+with expansion:
+ Val: 1 & Val: 1
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs ^ rhs )
+with expansion:
+ Val: 1 ^ Val: 2
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lhs ^ lhs )
+with expansion:
+ !(Val: 1 ^ Val: 1)
+
+-------------------------------------------------------------------------------
+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 )
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different argument ranges, same element type, default comparison
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(1) )
+with expansion:
+ { 1, 2, 3 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( b, Contains(1) )
+with expansion:
+ { 0, 1, 2 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( c, !Contains(1) )
+with expansion:
+ { 4, 5, 6 } not contains element 1
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different argument ranges, same element type, custom comparison
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(0, close_enough) )
+with expansion:
+ { 1, 2, 3 } contains element 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( b, Contains(0, close_enough) )
+with expansion:
+ { 0, 1, 2 } contains element 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( c, !Contains(0, close_enough) )
+with expansion:
+ { 4, 5, 6 } not contains element 0
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Different element type, custom comparisons
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) )
+with expansion:
+ { "abc", "abcd", "abcde" } contains element 4
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Can handle type that requires ADL-found free function begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(1) )
+with expansion:
+ { 1, 2, 3, 4, 5 } contains element 1
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, !Contains(8) )
+with expansion:
+ { 1, 2, 3, 4, 5 } not contains element 8
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Initialization with move only types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(MoveOnlyTestElement{ 2 }) )
+with expansion:
+ { 1, 2, 3 } contains element 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, !Contains(MoveOnlyTestElement{ 9 }) )
+with expansion:
+ { 1, 2, 3 } not contains element 9
+
+-------------------------------------------------------------------------------
+Basic use of the Contains range matcher
+ Matching using matcher
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) )
+with expansion:
+ { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Simple, std-provided containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_array, IsEmpty() )
+with expansion:
+ { } is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( non_empty_array, !IsEmpty() )
+with expansion:
+ { 0.0 } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, IsEmpty() )
+with expansion:
+ { } is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( non_empty_vec, !IsEmpty() )
+with expansion:
+ { 'a', 'b', 'c' } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( inner_lists_are_empty, !IsEmpty() )
+with expansion:
+ { { } } not is empty
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( inner_lists_are_empty.front(), IsEmpty() )
+with expansion:
+ { } is empty
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Type with empty
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( has_empty{}, !IsEmpty() )
+with expansion:
+ {?} not is empty
+
+-------------------------------------------------------------------------------
+Basic use of the Empty range matcher
+ Type requires ADL found empty free function
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( unrelated::ADL_empty{}, IsEmpty() )
+with expansion:
+ {?} is empty
+
+-------------------------------------------------------------------------------
+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:
+ custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0
+ custom_index_op<int>{1, 2, 3}[(0, 1)] := 0
+ custom_index_op<int>{1, 2, 3}[0] := 0
+ (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
+
+-------------------------------------------------------------------------------
+CaseInsensitiveEqualsTo is case insensitive
+ Degenerate cases
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "", "" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "", "a" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveEqualsTo is case insensitive
+ Plain comparisons
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "a", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "a", "A" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "A", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( eq( "A", "A" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "a", "b" ) )
+with expansion:
+ !false
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( eq( "a", "B" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveLess is case insensitive
+ Degenerate cases
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "", "a" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lt( "a", "a" ) )
+with expansion:
+ !false
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lt( "", "" ) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+CaseInsensitiveLess is case insensitive
+ Plain comparisons
+-------------------------------------------------------------------------------
+Details.tests.cpp:<line number>
+...............................................................................
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "a", "b" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "a", "B" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "A", "b" ) )
+with expansion:
+ true
+
+Details.tests.cpp:<line number>: PASSED:
+ REQUIRE( lt( "A", "B" ) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ Specifically escaped
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\t') == "'\\t'" )
+with expansion:
+ "'\t'" == "'\t'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\n') == "'\\n'" )
+with expansion:
+ "'\n'" == "'\n'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\r') == "'\\r'" )
+with expansion:
+ "'\r'" == "'\r'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify('\f') == "'\\f'" )
+with expansion:
+ "'\f'" == "'\f'"
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ General chars
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( ' ' ) == "' '" )
+with expansion:
+ "' '" == "' '"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( 'A' ) == "'A'" )
+with expansion:
+ "'A'" == "'A'"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( 'z' ) == "'z'" )
+with expansion:
+ "'z'" == "'z'"
+
+-------------------------------------------------------------------------------
+Character pretty printing
+ Low ASCII
+-------------------------------------------------------------------------------
+ToStringGeneral.tests.cpp:<line number>
+...............................................................................
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( '\0' ) == "0" )
+with expansion:
+ "0" == "0"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" )
+with expansion:
+ "2" == "2"
+
+ToStringGeneral.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" )
+with expansion:
+ "5" == "5"
+
+-------------------------------------------------------------------------------
+Clara::Arg does not crash on incomplete input
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( result.type() == Catch::Clara::Detail::ResultType::Ok )
+with expansion:
+ 0 == 0
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parsed.type() == Catch::Clara::ParseResultType::NoMatch )
+with expansion:
+ 1 == 1
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parsed.remainingTokens().count() == 2 )
+with expansion:
+ 2 == 2
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Clara::Arg supports single-arg parse the way Opt does
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( name.empty() )
+with expansion:
+ true
+
+Clara.tests.cpp:<line number>: PASSED:
+ REQUIRE( name == "foo" )
+with expansion:
+ "foo" == "foo"
+
+-------------------------------------------------------------------------------
+Clara::Opt supports accept-many lambdas
+ Parsing fails on multiple options without accept_many
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( parse_result )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Clara::Opt supports accept-many lambdas
+ Parsing succeeds on multiple options with accept_many
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( parse_result )
+with expansion:
+ {?}
+
+Clara.tests.cpp:<line number>: PASSED:
+ CHECK( res == std::vector<std::string>{ "aaa", "bbb" } )
+with expansion:
+ { "aaa", "bbb" } == { "aaa", "bbb" }
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard is disengaged by default
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str().empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard is engaged by op<<
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" )
+with expansion:
+ "1
+ Using code: 2
+ 2
+ Using code: 0
+ 3
+ "
+ ==
+ "1
+ Using code: 2
+ 2
+ Using code: 0
+ 3
+ "
+
+-------------------------------------------------------------------------------
+ColourGuard behaviour
+ ColourGuard can be engaged explicitly
+-------------------------------------------------------------------------------
+ColourImpl.tests.cpp:<line number>
+...............................................................................
+
+ColourImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE( streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" )
+with expansion:
+ "Using code: 2
+ A
+ B
+ Using code: 0
+ C
+ "
+ ==
+ "Using code: 2
+ A
+ B
+ Using code: 0
+ C
+ "
+
+-------------------------------------------------------------------------------
+Combining MatchAllOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::
+ Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && MatcherC() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::
+ Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() && ( MatcherB() && MatcherC() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() &&
+ MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA,
+ MatcherB, MatcherC, MatcherD>>:: value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
+ 1 and equals: true )
+
+-------------------------------------------------------------------------------
+Combining MatchAnyOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::
+ Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || MatcherC() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::
+ Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || ( MatcherB() || MatcherC() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() ||
+ MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA,
+ MatcherB, MatcherC, MatcherD>>:: value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
+ or equals: true )
+
+-------------------------------------------------------------------------------
+Combining MatchNotOfGeneric does not nest
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::
+ MatchNotOfGeneric<MatcherA>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0, !MatcherA() )
+with expansion:
+ 0 not equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, !!MatcherA() )
+with expansion:
+ 1 equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::
+ MatchNotOfGeneric<MatcherA>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0, !!!MatcherA() )
+with expansion:
+ 0 not equals: (int) 1 or (string) "1"
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, !!!!MatcherA() )
+with expansion:
+ 1 equals: (int) 1 or (string) "1"
+
+-------------------------------------------------------------------------------
+Combining concrete matchers does not use templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) &&
+ EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::
+ MatchAnyOf<std::string>>::value
+
+-------------------------------------------------------------------------------
+Combining only templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail::
+ MatchAnyOfGeneric<MatcherA, MatcherB>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail::
+ MatchAllOfGeneric<MatcherA, MatcherB>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() && MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+
+Matchers.tests.cpp:<line number>: PASSED:
+with message:
+ std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail:
+ :MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric
+ <MatcherB>>>::value
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1, MatcherA() || !MatcherB() )
+with expansion:
+ 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+
+-------------------------------------------------------------------------------
+Combining templated and concrete matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) )
+with expansion:
+ { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5,
+ 3, 1 } )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' }
+ and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r'
+ } and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo"
+ and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
+with expansion:
+ "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with:
+ "foo" and ends with: "bar" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) )
+with expansion:
+ "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo"
+ and ends with: "bar" ) )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) )
+with expansion:
+ "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o',
+ 'f', 'b', 'a', 'r' } )
+
+-------------------------------------------------------------------------------
+Combining templated matchers
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) )
+with expansion:
+ { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6
+ } )
+
+-------------------------------------------------------------------------------
+Commas in various macros are allowed
+-------------------------------------------------------------------------------
+Tricky.tests.cpp:<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 generic matchers shortcircuit
+ MatchAllOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( matcher.match( 1 ) )
+with expansion:
+ !false
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed generic matchers shortcircuit
+ MatchAnyOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK( matcher.match( 1 ) )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed matchers shortcircuit
+ MatchAllOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( matcher.match( 1 ) )
+with expansion:
+ !false
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Composed matchers shortcircuit
+ MatchAnyOf
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK( matcher.match( 1 ) )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( first.matchCalled )
+with expansion:
+ true
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE( !second.matchCalled )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Contains string matcher
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case
+ insensitive)
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+
+-------------------------------------------------------------------------------
+Copy and then generate a range
+ from var and iterators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Cout stream properly declares it writes to stdout
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "-" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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.00000099999999748 != 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 **}"
+
+-------------------------------------------------------------------------------
+Empty generators can SKIP in constructor
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ This generator is empty
+
+-------------------------------------------------------------------------------
+Empty stream name opens cout stream
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 CATCH_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
+CATCH_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.01000000000000512 != 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.100000381f
+ ==
+ Approx( 9.10999965667724609 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14150000000000018 )
+
+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.30000000000000027
+ ==
+ Approx( 1.30099999999999993 )
+
+-------------------------------------------------------------------------------
+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.100000381f
+ ==
+ Approx( 9.10000038146972656 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.double_pi == Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14159265350000005 )
+
+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.30000000000000027
+ ==
+ Approx( 1.30000000000000004 )
+
+-------------------------------------------------------------------------------
+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 message can be matched
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) )
+with expansion:
+ DerivedException::what matches "starts with: "Derived""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) )
+with expansion:
+ DerivedException::what matches "ends with: "::what""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) )
+with expansion:
+ DerivedException::what matches "not starts with: "::what""
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) )
+with expansion:
+ SpecialException::what matches "starts with: "Special""
+
+-------------------------------------------------------------------------------
+Exception messages can be tested for
+ exact match
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<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(), ContainsSubstring( "except" ) )
+with expansion:
+ "expected exception" contains: "except"
+
+Exception.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "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>)
+
+-------------------------------------------------------------------------------
+Filter generator throws exception for empty generator
+-------------------------------------------------------------------------------
+GeneratorsImpl.tests.cpp:<line number>
+...............................................................................
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException )
+
+-------------------------------------------------------------------------------
+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.09999999999999964 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.19999999999999929 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.0 are within 99% of each other
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( -0., WithinRel( 0. ) )
+with expansion:
+ -0.0 and 0.0 are within 2.22045e-12% of each other
+
+-------------------------------------------------------------------------------
+Floating point matchers: double
+ Relative
+ Some subnormal values
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( v1, WithinRel( v2 ) )
+with expansion:
+ 0.0 and 0.0 are within 2.22045e-12% of each other
+
+-------------------------------------------------------------------------------
+Floating point matchers: double
+ Margin
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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.98999999999999999 of 1.0
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) )
+with expansion:
+ 0.0 not is within 0.98999999999999999 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.59999999999999964
+
+-------------------------------------------------------------------------------
+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.00000000000000022 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.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: double
+ IsNaN
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1., !IsNaN() )
+with expansion:
+ 1.0 not is NaN
+
+-------------------------------------------------------------------------------
+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.10000038146972656 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.19999980926513672 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.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.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 0.0 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.99000000953674316 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.99000000953674316 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.60000038146972656
+
+-------------------------------------------------------------------------------
+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( -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.000000119f 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.00100000004749745 of 0.0 or and 0.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 )
+
+-------------------------------------------------------------------------------
+Floating point matchers: float
+ IsNaN
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( 1., !IsNaN() )
+with expansion:
+ 1.0 not is NaN
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i % 2 == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+GENERATE can combine literals and generators
+-------------------------------------------------------------------------------
+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
+ 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
+ Simple filtering
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Generators internals
+ Filter generator
+ Filter out multiple elements at the start and end
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Generators internals
+ Filter generator
+ Throws on construction if it can't get initial element
+-------------------------------------------------------------------------------
+GeneratorsImpl.tests.cpp:<line number>
+...............................................................................
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter([](int) { return false; }, value(1)), Catch::GeneratorException )
+
+GeneratorsImpl.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( filter([](int) { return false; }, values({ 1, 2, 3 })), 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.90000000000000002
+ ==
+ Approx( -0.90000000000000002 )
+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.80000000000000004
+ ==
+ Approx( -0.80000000000000004 )
+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.70000000000000007
+ ==
+ Approx( -0.70000000000000007 )
+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.60000000000000009
+ ==
+ Approx( -0.60000000000000009 )
+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.50000000000000011
+ ==
+ Approx( -0.50000000000000011 )
+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.40000000000000013
+ ==
+ Approx( -0.40000000000000013 )
+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.30000000000000016
+ ==
+ Approx( -0.30000000000000016 )
+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.20000000000000015
+ ==
+ Approx( -0.20000000000000015 )
+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.10000000000000014
+ ==
+ Approx( -0.10000000000000014 )
+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.00000000000000014
+ ==
+ Approx( -0.00000000000000014 )
+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.09999999999999987
+ ==
+ Approx( 0.09999999999999987 )
+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.19999999999999987
+ ==
+ Approx( 0.19999999999999987 )
+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.29999999999999988
+ ==
+ Approx( 0.29999999999999988 )
+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.39999999999999991
+ ==
+ Approx( 0.39999999999999991 )
+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.49999999999999989
+ ==
+ Approx( 0.49999999999999989 )
+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.59999999999999987
+ ==
+ Approx( 0.59999999999999987 )
+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.69999999999999984
+ ==
+ Approx( 0.69999999999999984 )
+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.79999999999999982
+ ==
+ Approx( 0.79999999999999982 )
+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.8999999999999998
+ ==
+ Approx( 0.8999999999999998 )
+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:
+ 0.99999999999999978 == 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.69999999999999996
+ ==
+ Approx( -0.69999999999999996 )
+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.39999999999999997
+ ==
+ Approx( -0.39999999999999997 )
+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.09999999999999998
+ ==
+ Approx( -0.09999999999999998 )
+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.20000000000000001
+ ==
+ Approx( 0.20000000000000001 )
+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.69999999999999996
+ ==
+ Approx( -0.69999999999999996 )
+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.39999999999999997
+ ==
+ Approx( -0.39999999999999997 )
+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.09999999999999998
+ ==
+ Approx( -0.09999999999999998 )
+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.20000000000000001
+ ==
+ Approx( 0.20000000000000001 )
+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.22999999999999998
+ >=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d >= Approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ >=
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( d >= Approx( 1.24 ) )
+with expansion:
+ !(1.22999999999999998
+ >=
+ Approx( 1.23999999999999999 ))
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) )
+with expansion:
+ 1.22999999999999998
+ >=
+ Approx( 1.23999999999999999 )
+
+-------------------------------------------------------------------------------
+Hashers with different seed produce different hash with same test case
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h1( dummy ) != h2( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ !=
+ 130711275 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashers with same seed produce same hash
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h1( dummy ) == h2( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ ==
+ 3422778688 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different test name
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2903002874 (0x<hex digits>)
+ !=
+ 2668622104 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different classname
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2673152918 (0x<hex digits>)
+ !=
+ 3916075712 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing different test cases produces different result
+ Different tags
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy1 ) != h( dummy2 ) )
+with expansion:
+ 2074929312 (0x<hex digits>)
+ !=
+ 3429949824 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+Hashing test case produces same hash across multiple calls
+-------------------------------------------------------------------------------
+TestCaseInfoHasher.tests.cpp:<line number>
+...............................................................................
+
+TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
+ REQUIRE( h( dummy ) == h( dummy ) )
+with expansion:
+ 3422778688 (0x<hex digits>)
+ ==
+ 3422778688 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+INFO and UNSCOPED_INFO can stream multiple arguments
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+Message.tests.cpp:<line number>: FAILED:
+explicitly with messages:
+ This info has multiple parts.
+ This unscoped info has multiple parts.
+ Show infos!
+
+-------------------------------------------------------------------------------
+INFO and WARN do not abort tests
+-------------------------------------------------------------------------------
+Message.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Incomplete AssertionHandler
+-------------------------------------------------------------------------------
+AssertionHandler.tests.cpp:<line number>
+...............................................................................
+
+AssertionHandler.tests.cpp:<line number>: FAILED:
+ REQUIRE( Dummy )
+due to unexpected exception with message:
+ Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+
+-------------------------------------------------------------------------------
+Inequality checks that should fail
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<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.100000381f
+ !=
+ Approx( 9.10000038146972656 )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14159265350000005 )
+
+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.100000381f
+ !=
+ Approx( 9.10999965667724609 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
+with expansion:
+ 9.100000381f != Approx( 9.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 1 ) )
+with expansion:
+ 9.100000381f != Approx( 1.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one != Approx( 0 ) )
+with expansion:
+ 9.100000381f != Approx( 0.0 )
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.double_pi != Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14150000000000018 )
+
+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
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Newly constructed JsonWriter does nothing
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "" )
+with expansion:
+ "" == ""
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeObject will create an empty pair of braces
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "{\n}" )
+with expansion:
+ "{
+ }"
+ ==
+ "{
+ }"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeObject with key will create an object to write the value
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) )
+with expansion:
+ "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+ }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains:
+ ""true": true," and contains: ""false": false," and contains: ""string":
+ "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+ }" )
+
+-------------------------------------------------------------------------------
+JsonWriter
+ nesting objects
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) )
+with expansion:
+ "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+ }" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeArray will create an empty pair of braces
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n]" )
+with expansion:
+ "[
+ ]"
+ ==
+ "[
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Calling writeArray creates array to write the values to
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" )
+with expansion:
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+ ]"
+ ==
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Moved from JsonObjectWriter shall not insert superfluous brace
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "{\n}" )
+with expansion:
+ "{
+ }"
+ ==
+ "{
+ }"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Moved from JsonArrayWriter shall not insert superfluous bracket
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "[\n]" )
+with expansion:
+ "[
+ ]"
+ ==
+ "[
+ ]"
+
+-------------------------------------------------------------------------------
+JsonWriter
+ Custom class shall be quoted
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( stream.str() == "\"custom\"" )
+with expansion:
+ ""custom"" == ""custom""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Quote in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\"\"" )
+with expansion:
+ ""\""" == ""\"""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Backslash in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\\\"" )
+with expansion:
+ ""\\"" == ""\\""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Forward slash in a string is **not** escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"/\"" )
+with expansion:
+ ""/"" == ""/""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Backspace in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\b\"" )
+with expansion:
+ ""\b"" == ""\b""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ Formfeed in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\f\"" )
+with expansion:
+ ""\f"" == ""\f""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ linefeed in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\n\"" )
+with expansion:
+ ""\n"" == ""\n""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ carriage return in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\r\"" )
+with expansion:
+ ""\r"" == ""\r""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ tab in a string is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\t\"" )
+with expansion:
+ ""\t"" == ""\t""
+
+-------------------------------------------------------------------------------
+JsonWriter escapes charaters in strings properly
+ combination of characters is escaped
+-------------------------------------------------------------------------------
+Json.tests.cpp:<line number>
+...............................................................................
+
+Json.tests.cpp:<line number>: PASSED:
+ REQUIRE( sstream.str() == "\"\\\\/\\t\\r\\n\"" )
+with expansion:
+ ""\\/\t\r\n"" == ""\\/\t\r\n""
+
+-------------------------------------------------------------------------------
+Lambdas in assertions
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( []() { return true; }() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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.22999999999999998
+ <=
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d <= Approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ <=
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( d <= Approx( 1.22 ) )
+with expansion:
+ !(1.22999999999999998
+ <=
+ Approx( 1.21999999999999997 ))
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) )
+with expansion:
+ 1.22999999999999998
+ <=
+ Approx( 1.21999999999999997 )
+
+-------------------------------------------------------------------------------
+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(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( contains: "string" and
+ contains: "abc" and contains: "substring" and contains: "contains" )
+
+-------------------------------------------------------------------------------
+Matchers can be (AnyOf) composed with the || operator
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( contains: "string" or contains:
+ "different" or contains: "random" )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
+with expansion:
+ "some completely different text that contains one common word" ( contains:
+ "string" or contains: "different" or contains: "random" )
+
+-------------------------------------------------------------------------------
+Matchers can be composed with both && and ||
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "substring" )
+
+-------------------------------------------------------------------------------
+Matchers can be composed with both && and || - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "random" )
+
+-------------------------------------------------------------------------------
+Matchers can be negated (Not) with the ! operator
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "different" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "different"
+
+-------------------------------------------------------------------------------
+Matchers can be negated (Not) with the ! operator - failing
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ A
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 1
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Mayfail test case with nested sections
+ B
+ 2
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+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"
+
+-------------------------------------------------------------------------------
+Multireporter calls reporters and listeners in correct order
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( records == expected )
+with expansion:
+ { "Hello", "world", "Goodbye", "world" }
+ ==
+ { "Hello", "world", "Goodbye", "world" }
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+ Adding listeners
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+-------------------------------------------------------------------------------
+Multireporter updates ReporterPreferences properly
+ Adding reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
+with expansion:
+ false == false
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
+with expansion:
+ true == true
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
+with expansion:
+ true == true
+
+-------------------------------------------------------------------------------
+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)
+
+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.100000381f < 9
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+
+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.100000381f > 9
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one < 10 )
+with expansion:
+ 9.100000381f < 10
+
+Condition.tests.cpp:<line number>: PASSED:
+ REQUIRE( data.float_nine_point_one < 9.2 )
+with expansion:
+ 9.100000381f < 9.19999999999999929
+
+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
+
+-------------------------------------------------------------------------------
+Overloaded comma or address-of operators are not used
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_AS( &EvilMatcher(), EvilAddressOfOperatorUsed )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) )
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() )
+
+-------------------------------------------------------------------------------
+Parse uints
+ proper inputs
+-------------------------------------------------------------------------------
+Parse.tests.cpp:<line number>
+...............................................................................
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "0" ) == Optional<unsigned int>{ 0 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "100" ) == Optional<unsigned int>{ 100 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } )
+with expansion:
+ {?} == {?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE( parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+Parse uints
+ Bad inputs
+-------------------------------------------------------------------------------
+Parse.tests.cpp:<line number>
+...............................................................................
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "!!KJHF*#" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "-1" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "4294967296" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "42949672964294967296429496729642949672964294967296" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "2 4" ) )
+with expansion:
+ !{?}
+
+Parse.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( parseUInt( "0x<hex digits>", 10 ) )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Parsed tags are matched case insensitive
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ shard-count
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-count=8" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardCount == 8 )
+with expansion:
+ 8 == 8
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Negative shard count reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) )
+with expansion:
+ "Could not parse '-1' as shard count" contains: "Could not parse '-1' as
+ shard count"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Zero shard count reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) )
+with expansion:
+ "Shard count must be positive" contains: "Shard count must be positive"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ shard-index
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-index=2" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardIndex == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Negative shard index reports error
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( result )
+with expansion:
+ !{?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) )
+with expansion:
+ "Could not parse '-12' as shard index" contains: "Could not parse '-12' as
+ shard index"
+
+-------------------------------------------------------------------------------
+Parsing sharding-related cli flags
+ Shard index 0 is accepted
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "--shard-index=0" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.shardIndex == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+Parsing tags with non-alphabetical characters is pass-through
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+with message:
+ tagString := "[tag with spaces]"
+
+-------------------------------------------------------------------------------
+Parsing tags with non-alphabetical characters is pass-through
+-------------------------------------------------------------------------------
+TestSpecParser.tests.cpp:<line number>
+...............................................................................
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.hasFilters() )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.getInvalidSpecs().empty() )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+TestSpecParser.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches( testCase ) )
+with expansion:
+ true
+with message:
+ tagString := "[I said "good day" sir!]"
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ NoAssertions
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( cli.parse( { "test", "-w", "NoAssertions" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.warnings == WarnAbout::NoAssertions )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ NoTests is no longer supported
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( cli.parse( { "test", "-w", "NoTests" } ) )
+with expansion:
+ !{?}
+
+-------------------------------------------------------------------------------
+Parsing warnings
+ Combining multiple warnings
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+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.reporterSpecifications.empty() )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( cfg.hasTestFilters() )
+with expansion:
+ !false
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getReporterSpecs().size() == 1 )
+with expansion:
+ 1 == 1
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } )
+with expansion:
+ {?} == {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getProcessedReporterSpecs().size() == 1 )
+with expansion:
+ 1 == 1
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ test lists
+ Specify one test case using
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ -r/xml
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ --reporter/junit
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ must match one of the available ones
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( !result )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Unrecognized reporter") )
+with expansion:
+ "Unrecognized reporter, 'unsupported'. Check available with --list-reporters"
+ contains: "Unrecognized reporter"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ With output file
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ With Windows-like absolute path as output file
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( result )
+with expansion:
+ {?}
+with message:
+ result.errorMessage() := ""
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } )
+with expansion:
+ { {?} } == { {?} }
+with message:
+ result.errorMessage() := ""
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ All with output files
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } )
+with expansion:
+ { {?}, {?} } == { {?}, {?} }
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ Mixed output files and default output
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } )
+with expansion:
+ { {?}, {?} } == { {?}, {?} }
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ reporter
+ Multiple reporters
+ cannot have multiple reporters with default output
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<line number>
+...............................................................................
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ CHECK( !result )
+with expansion:
+ true
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") )
+with expansion:
+ "Only one reporter may have unspecified output file." contains: "Only one
+ reporter may have unspecified output file."
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ debugger
+ -b
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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(), ContainsSubstring("convert") && ContainsSubstring("oops") )
+with expansion:
+ "Unable to convert 'oops' to destination type" ( contains: "convert" and
+ contains: "oops" )
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ abort
+ wait-for-keypress
+ Accepted options
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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(), ContainsSubstring("never") && ContainsSubstring("both") )
+with expansion:
+ "keypress argument must be one of: never, start, exit or both. 'sometimes'
+ not recognised" ( contains: "never" and contains: "both" )
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ nothrow
+ -e
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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.defaultOutputFilename == "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.defaultOutputFilename == "filename.ext" )
+with expansion:
+ "filename.ext" == "filename.ext"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ combinations
+ Single character flags can be combined
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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.defaultColourMode == ColourMode::PlatformDefault )
+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", "--colour-mode", "default" } ) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault )
+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", "--colour-mode", "ansi"}) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::ANSI )
+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", "--colour-mode", "none"}) )
+with expansion:
+ {?}
+
+CmdLine.tests.cpp:<line number>: PASSED:
+ REQUIRE( config.defaultColourMode == ColourMode::None )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+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(), ContainsSubstring( "colour mode must be one of" ) )
+with expansion:
+ "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not
+ recognised" contains: "colour mode must be one of"
+
+-------------------------------------------------------------------------------
+Process can be configured on command line
+ Benchmark options
+ samples
+-------------------------------------------------------------------------------
+CmdLine.tests.cpp:<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::Approx(0.99) )
+with expansion:
+ 0.98999999999999999
+ ==
+ Approx( 0.98999999999999999 )
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation accepts known methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )
+
+-------------------------------------------------------------------------------
+Random seed generation reports unknown methods
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77)) )
+
+-------------------------------------------------------------------------------
+Range type with sentinel
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( Catch::Detail::stringify(UsesSentinel{}) == "{ }" )
+with expansion:
+ "{ }" == "{ }"
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+Registering reporter with '::' in name fails
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS_WITH( registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" )
+with expansion:
+ "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is
+ not allowed in reporter name: 'with::doublecolons'"
+
+-------------------------------------------------------------------------------
+Regression test #1
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( actual, !UnorderedEquals( expected ) )
+with expansion:
+ { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ Automake reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: Automake
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ compact reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: compact
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ console reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: console
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag"
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter"
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JSON reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: JSON
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ JUnit reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: JUnit
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ SonarQube reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: SonarQube
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TAP reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: TAP
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "fakeTag"
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ TeamCity reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: TeamCity
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <TagsFromMatchingTests>
+ <Tag>
+ <Count>1</Count>
+ <Aliases>
+ <Alias>fakeTag</Alias>
+ </Aliases>
+ </Tag>
+ </TagsFromMatchingTests>" contains: "fakeTag"
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <AvailableReporters>
+ <Reporter>
+ <Name>fake reporter</Name>
+ <Description>fake description</Description>
+ </Reporter>
+ </AvailableReporters>" contains: "fake reporter"
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( factories.empty() )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Reporter's write listings to provided stream
+ XML reporter lists tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <MatchingTests>
+ <TestCase>
+ <Name>fake test name</Name>
+ <ClassName/>
+ <Tags>[fakeTestTag]</Tags>
+ <SourceInfo>
+ <File>fake-file.cpp</File>
+ <Line>123456789</Line>
+ </SourceInfo>
+ </TestCase>
+ </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
+with message:
+ Tested reporter: XML
+
+-------------------------------------------------------------------------------
+Reproducer for #2309 - a very long description past 80 chars (default console
+width) with a late colon : blablabla
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+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.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.22 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != Approx( 1.24 ) )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == 1.23_a )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != 1.22_a )
+with expansion:
+ 1.22999999999999998
+ !=
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) == 1.23 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.22999999999999998
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) != 1.22 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ !=
+ 1.21999999999999997
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( Approx( d ) != 1.24 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ !=
+ 1.23999999999999999
+
+-------------------------------------------------------------------------------
+Standard output from all sections is reported
+ one
+-------------------------------------------------------------------------------
+Message.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in section 'one'
+
+-------------------------------------------------------------------------------
+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(), ContainsSubstring( "string" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "string"
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "string" (case
+ insensitive)
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "abc" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "abc"
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "abc" (case
+ insensitive)
+
+Matchers.tests.cpp:<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( std::strcmp( empty.data(), "" ) == 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( std::strcmp( rawChars, "hello" ) == 0 )
+with expansion:
+ 0 == 0
+
+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_NOTHROW( original.data() )
+
+-------------------------------------------------------------------------------
+StringRef
+ Copy construction is shallow
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( original.begin() == copy.begin() )
+with expansion:
+ "original string" == "original string"
+
+-------------------------------------------------------------------------------
+StringRef
+ Copy assignment is shallow
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( original.begin() == copy.begin() )
+with expansion:
+ "original string" == "original string"
+
+-------------------------------------------------------------------------------
+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.data(), "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.data(), "world!") == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+StringRef
+ Substrings
+ substring start after the end is empty
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( s.substr(1'000'000, 1).empty() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+StringRef
+ Comparisons are deep
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ CHECK( reinterpret_cast<char*>(buffer1) != reinterpret_cast<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
+ std::string += StringRef
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( lhs == "some string += the stringref contents" )
+with expansion:
+ "some string += the stringref contents"
+ ==
+ "some string += the stringref contents"
+
+-------------------------------------------------------------------------------
+StringRef
+ StringRef + StringRef
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+ REQUIRE( together == "abrakadabra" )
+with expansion:
+ "abrakadabra" == "abrakadabra"
+
+-------------------------------------------------------------------------------
+StringRef at compilation time
+ Simple constructors
+-------------------------------------------------------------------------------
+String.tests.cpp:<line number>
+...............................................................................
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ empty.size() == 0
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ empty.begin() == empty.end()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.size() == 3
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.data() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.begin() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.begin() != stringref.end()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.substr(10, 0).empty()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref.substr(2, 1).data() == abc + 2
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ stringref[1] == 'b'
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.size() == 2
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.data() == abc
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ shortened.begin() != shortened.end()
+
+-------------------------------------------------------------------------------
+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:
+ sr2.empty()
+
+String.tests.cpp:<line number>: PASSED:
+with message:
+ sr2.size() == 0
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - signed char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+Stringifying char arrays with statically known sizes - unsigned char
+-------------------------------------------------------------------------------
+ToString.tests.cpp:<line number>
+...............................................................................
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+ToString.tests.cpp:<line number>: PASSED:
+ CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
+with expansion:
+ ""abc"" == ""abc""
+
+-------------------------------------------------------------------------------
+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, ContainsSubstring( "[@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, ContainsSubstring( "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, ContainsSubstring( "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, ContainsSubstring( "10" ) )
+with expansion:
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+
+-------------------------------------------------------------------------------
+Tag alias can be registered against tag patterns
+ Tag aliases must be of the form [@name]
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<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 ) ) )
+
+-------------------------------------------------------------------------------
+Tags with spaces and non-alphanumerical characters are accepted
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags.size() == 2 )
+with expansion:
+ 2 == 2
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) )
+with expansion:
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+
+-------------------------------------------------------------------------------
+Template test case method with test types specified inside std::tuple - MyTypes
+- 0
+-------------------------------------------------------------------------------
+Class.tests.cpp:<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( std::is_default_constructible<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_default_constructible<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_trivially_copyable<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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( std::is_trivially_copyable<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 1
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Template test case with test types specified inside std::tuple - MyTypes - 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ REQUIRE( std::is_arithmetic<TestType>::value )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 identical tags keeps just one
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags.size() == 1 )
+with expansion:
+ 1 == 1
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testCase.tags[0] == Tag( "tag1" ) )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+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:
+
+-------------------------------------------------------------------------------
+Testing checked-if
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_IF( true )
+
+Misc.tests.cpp:<line number>: PASSED:
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_IF( false )
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_ELSE( true )
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_IF( true )
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 3
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+Testing checked-if 4
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+ CHECKED_ELSE( true )
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+Testing checked-if 5
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: FAILED - but was ok:
+ CHECKED_ELSE( false )
+
+Misc.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
+due to unexpected exception with message:
+ Uncaught exception should fail!
+
+-------------------------------------------------------------------------------
+The NO_FAIL macro reports a failure but does not fail the test
+-------------------------------------------------------------------------------
+Message.tests.cpp:<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'
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing tags
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring("[fakeTag]"s) )
+with expansion:
+ "All available tags:
+ 1 [fakeTag]
+ 1 tag
+
+" contains: "[fakeTag]"
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing reporters
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) )
+with expansion:
+ "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing tests
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
+with expansion:
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+ 1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+
+-------------------------------------------------------------------------------
+The default listing implementation write to provided stream
+ Listing listeners
+-------------------------------------------------------------------------------
+Reporters.tests.cpp:<line number>
+...............................................................................
+
+Reporters.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) )
+with expansion:
+ "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+
+-------------------------------------------------------------------------------
+This test 'should' fail but doesn't
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<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
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( c_array ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( c_array ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types (differ in array N)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_3, !RangeEquals( array_int_4 ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_3, !UnorderedRangeEquals( array_int_4 ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers of different container types and value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Container conversions
+ Two equal containers, one random access, one not
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+with message:
+ ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess(
+ list_char_a )
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, RangeEquals( list_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_int_a, UnorderedRangeEquals( list_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Value type
+ Two equal containers of different value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, RangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, UnorderedRangeEquals( vector_char_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Value type
+ Two non-equal containers of different value types
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, !RangeEquals( vector_char_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_int_a, !UnorderedRangeEquals( vector_char_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Ranges with begin that needs ADL
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, !RangeEquals( b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 3, 2, 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( a, UnorderedRangeEquals( b ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+
+-------------------------------------------------------------------------------
+Type conversions of RangeEquals and similar
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, RangeEquals( array_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Unexpected exceptions can be translated
+-------------------------------------------------------------------------------
+Exception.tests.cpp:<line number>
+...............................................................................
+
+Exception.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ 3.14000000000000012
+
+-------------------------------------------------------------------------------
+Upcasting special member functions
+ Move constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( bptr->i == 3 )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+Upcasting special member functions
+ move assignment
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( bptr->i == 3 )
+with expansion:
+ 3 == 3
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllMatch(SizeIs(5)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } all match has size == 5
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllMatch(Contains(0) && Contains(1)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains
+ element 1 )
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, allMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AllMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !allMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ Empty evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ One false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Basic usage
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { false, false, false, false, false } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ One false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AllTrue() )
+with expansion:
+ { false, false, false, false, false } not contains only true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AllTrue() )
+with expansion:
+ { true, true, true, true, true } contains only true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AllTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !AllTrue() )
+with expansion:
+ { true, true, false, true, true } not contains only true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyMatch(SizeIs(5)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } any match has size == 5
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyMatch(Contains(0) && Contains(10)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains
+ element 10 )
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !anyMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AnyMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, anyMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[1] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[2] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { true, true, true, true, true } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ Empty evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ One true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { false, false, true, false, false } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Basic usage
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { false, false, false, false, false } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { true, true, true, true, true } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ One true evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, AnyTrue() )
+with expansion:
+ { false, false, true, false, false } contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !AnyTrue() )
+with expansion:
+ { false, false, false, false, false } not contains at least one true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AnyTrue() )
+with expansion:
+ { false, false, false, false, true } contains at least one true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of AnyTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, AnyTrue() )
+with expansion:
+ { false, false, true, true, true } contains at least one true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Basic usage
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneMatch(SizeIs(6)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } none match has size == 6
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneMatch(Contains(0) && Contains(1)) )
+with expansion:
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
+ }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains
+ element 1 )
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Type requires ADL found begin and end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, noneMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of NoneMatch range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !noneMatch )
+with expansion:
+ { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[1] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[2] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ All true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { true, true, true, true, true } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ Empty evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ One true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { false, false, true, false, false } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Basic usage
+ All false evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ All true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { true, true, true, true, true } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ One true evaluates to false
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, !NoneTrue() )
+with expansion:
+ { false, false, true, false, false } not contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Contained type is convertible to bool
+ All false evaluates to true
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( data, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Shortcircuiting
+ All are read
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, NoneTrue() )
+with expansion:
+ { false, false, false, false, false } contains no true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[3] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[4] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of NoneTrue range matcher
+ Shortcircuiting
+ Short-circuited
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked, !NoneTrue() )
+with expansion:
+ { false, false, true, true, true } not contains no true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[3] )
+with expansion:
+ !false
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked.m_derefed[4] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Empty container matches empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, RangeEquals( empty_vector ) )
+with expansion:
+ { } elements are { }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Empty container does not match non-empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, !RangeEquals( non_empty_vector ) )
+with expansion:
+ { } not elements are { 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_vector, !RangeEquals( empty_vector ) )
+with expansion:
+ { 1 } not elements are { }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal 1-length non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_array, RangeEquals( non_empty_array ) )
+with expansion:
+ { 1 } elements are { 1 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal-sized, equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, RangeEquals( array_a ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two equal-sized, non-equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !RangeEquals( array_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 2, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !RangeEquals( array_c ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Basic usage
+ Two non-equal-sized, non-empty containers (with same first elements)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !RangeEquals( vector_b ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, RangeEquals( vector_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Custom predicate
+ Two non-equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !RangeEquals( vector_b, close_enough ) )
+with expansion:
+ { 1, 2, 3 } not elements are { 3, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Ranges that need ADL begin/end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl2 ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Compare against std::initializer_list
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, RangeEquals( { 1, 2, 3 } ) )
+with expansion:
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) )
+with expansion:
+ { 1, 2, 3 } elements are { 2, 4, 6 }
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Check short-circuiting behaviour
+ Check short-circuits on failure
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked1, !RangeEquals( arr ) )
+with expansion:
+ { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( mocked1.m_derefed[3] )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+Usage of RangeEquals range matcher
+ Check short-circuiting behaviour
+ All elements are checked on success
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( mocked1, RangeEquals( arr ) )
+with expansion:
+ { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[0] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[1] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[2] )
+with expansion:
+ true
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE( mocked1.m_derefed[3] )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Empty container matches empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, UnorderedRangeEquals( empty_vector ) )
+with expansion:
+ { } unordered elements are { }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Empty container does not match non-empty container
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( empty_vector, !UnorderedRangeEquals( non_empty_vector ) )
+with expansion:
+ { } not unordered elements are { 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_vector, !UnorderedRangeEquals( empty_vector ) )
+with expansion:
+ { 1 } not unordered elements are { }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal 1-length non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( non_empty_array, UnorderedRangeEquals( non_empty_array ) )
+with expansion:
+ { 1 } unordered elements are { 1 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal-sized, equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, UnorderedRangeEquals( array_a ) )
+with expansion:
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two equal-sized, non-equal, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( array_a, !UnorderedRangeEquals( array_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Basic usage
+ Two non-equal-sized, non-empty containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b ) )
+with expansion:
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Custom predicate
+ Two equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Custom predicate
+ Two non-equal non-empty containers (close enough)
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b, close_enough ) )
+with expansion:
+ { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Ranges that need ADL begin/end
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( needs_adl1, UnorderedRangeEquals( needs_adl2 ) )
+with expansion:
+ { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+
+-------------------------------------------------------------------------------
+Usage of UnorderedRangeEquals range matcher
+ Compare against std::initializer_list
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, UnorderedRangeEquals( { 10, 20, 1 } ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) )
+with expansion:
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Some with stdlib containers
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, SizeIs(0) )
+with expansion:
+ { } has size == 0
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, !SizeIs(2) )
+with expansion:
+ { } not has size == 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( empty_vec, SizeIs(Lt(2)) )
+with expansion:
+ { } size matches is less than 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, SizeIs(2) )
+with expansion:
+ { 0, 0 } has size == 2
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, SizeIs( Lt(3)) )
+with expansion:
+ { 0, 0 } size matches is less than 3
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( arr, !SizeIs(!Lt(3)) )
+with expansion:
+ { 0, 0 } not size matches not is less than 3
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( map, SizeIs(3) )
+with expansion:
+ { {?}, {?}, {?} } has size == 3
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Type requires ADL found size free function
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( unrelated::ADL_size{}, SizeIs(12) )
+with expansion:
+ {?} has size == 12
+
+-------------------------------------------------------------------------------
+Usage of the SizeIs range matcher
+ Type has size member
+-------------------------------------------------------------------------------
+MatchersRanges.tests.cpp:<line number>
+...............................................................................
+
+MatchersRanges.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( has_size{}, SizeIs(13) )
+with expansion:
+ {?} has size == 13
+
+-------------------------------------------------------------------------------
+Use a custom approx
+-------------------------------------------------------------------------------
+Approx.tests.cpp:<line number>
+...............................................................................
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.23 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.22999999999999998 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.22 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.21999999999999997 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d == approx( 1.24 ) )
+with expansion:
+ 1.22999999999999998
+ ==
+ Approx( 1.23999999999999999 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( d != approx( 1.25 ) )
+with expansion:
+ 1.22999999999999998 != Approx( 1.25 )
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.23 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.22999999999999998
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.22 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.21999999999999997
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) == 1.24 )
+with expansion:
+ Approx( 1.22999999999999998 )
+ ==
+ 1.23999999999999999
+
+Approx.tests.cpp:<line number>: PASSED:
+ REQUIRE( approx( d ) != 1.25 )
+with expansion:
+ Approx( 1.22999999999999998 ) != 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 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( v1, Approx<double>( { 1., 2., 3. } ) )
+with expansion:
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+
+-------------------------------------------------------------------------------
+Vector Approx matcher
+ Vectors with elements
+ Different length
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( VectorContains<int, CustomAllocator<int>>( 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<int>( { 1, 2 } ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( 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: { }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, Contains( v6 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2 }
+
+-------------------------------------------------------------------------------
+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<int>( { 1, 2, 3 } ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, Equals( v6 ) )
+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( v, UnorderedEquals<int>( { 3, 2, 1 } ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+
+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 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( v5_permuted, UnorderedEquals( v5 ) )
+with expansion:
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+
+-------------------------------------------------------------------------------
+Vector matchers that fail
+ Contains (element)
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<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'
+
+-------------------------------------------------------------------------------
+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]"
+
+-------------------------------------------------------------------------------
+XmlWriter writes boolean attributes as true/false
+-------------------------------------------------------------------------------
+Xml.tests.cpp:<line number>
+...............................................................................
+
+Xml.tests.cpp:<line number>: PASSED:
+ REQUIRE_THAT( stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") )
+with expansion:
+ "<?xml version="1.0" encoding="UTF-8"?>
+ <Element1 attr1="true" attr2="false"/>
+ " ( contains: "attr1="true"" and contains: "attr2="false"" )
+
+-------------------------------------------------------------------------------
+a succeeding test can still be skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+analyse no analysis
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.point.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.lower_bound.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.mean.upper_bound.count() == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.point.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.lower_bound.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.standard_deviation.upper_bound.count() == 0 )
+with expansion:
+ 0.0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.total() == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.low_mild == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.low_severe == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.high_mild == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.high_severe == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outliers.samples_seen == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( analysis.outlier_variance == 0 )
+with expansion:
+ 0.0 == 0
+
+-------------------------------------------------------------------------------
+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 }"
+
+-------------------------------------------------------------------------------
+benchmark function call
+ without chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( called == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+benchmark function call
+ with chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.started == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( model.finished == 0 )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( called == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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 - but was ok:
+ 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 - but was ok:
+ CHECKED_IF( flag )
+with expansion:
+ false
+
+Misc.tests.cpp:<line number>: FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+
+-------------------------------------------------------------------------------
+classify_outliers
+ none
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+classify_outliers
+ low severe
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ low mild
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ high mild
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ high severe
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+classify_outliers
+ mixed
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
+with expansion:
+ 6 == 6
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_severe == los )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.low_mild == lom )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_mild == him )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.high_severe == his )
+with expansion:
+ 0 == 0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( o.total() == los + lom + him + his )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+convertToBits
+-------------------------------------------------------------------------------
+FloatingPoint.tests.cpp:<line number>
+...............................................................................
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( 0.f ) == 0 )
+with expansion:
+ 0 == 0
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( -0.f ) == ( 1ULL << 31 ) )
+with expansion:
+ 2147483648 (0x<hex digits>)
+ ==
+ 2147483648 (0x<hex digits>)
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( 0. ) == 0 )
+with expansion:
+ 0 == 0
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( -0. ) == ( 1ULL << 63 ) )
+with expansion:
+ 9223372036854775808 (0x<hex digits>)
+ ==
+ 9223372036854775808 (0x<hex digits>)
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 )
+with expansion:
+ 1 == 1
+
+FloatingPoint.tests.cpp:<line number>: PASSED:
+ CHECK( convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 41
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+dynamic skipping works with generators
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+empty tags are not allowed
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) )
+
+-------------------------------------------------------------------------------
+erfc_inv
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) )
+with expansion:
+ -0.09203687623843014
+ ==
+ Approx( -0.09203687623843015 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) )
+with expansion:
+ -0.05980291115763361
+ ==
+ Approx( -0.05980291115763361 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) )
+with expansion:
+ 1.38590382434967774
+ ==
+ Approx( 1.38590382434967796 )
+
+-------------------------------------------------------------------------------
+estimate_clock_resolution
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.mean.count() == rate )
+with expansion:
+ 2000.0 == 2000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.outliers.total() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+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:
+
+-------------------------------------------------------------------------------
+failed assertions before SKIP cause test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+ CHECK( 3 == 4 )
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+failing for some generator values causes entire test case to fail
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+failing in some unskipped sections causes entire test case to fail
+ not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: FAILED:
+
+-------------------------------------------------------------------------------
+first tag
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in test case 'first tag'
+
+-------------------------------------------------------------------------------
+has printf
+-------------------------------------------------------------------------------
+Tricky.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in test case 'has printf'
+
+-------------------------------------------------------------------------------
+is_unary_function
+-------------------------------------------------------------------------------
+Clara.tests.cpp:<line number>
+...............................................................................
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<int>::value)
+
+Clara.tests.cpp:<line number>: PASSED:
+with message:
+ !(Catch::Clara::Detail::is_unary_function<std::string const&>::value)
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+makeStream recognizes %debug stream name
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE_NOTHROW( Catch::makeStream( "%debug" ) )
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ From lvalue copies
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( lval.has_moved )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ From rvalue moves
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( rval.has_moved )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+make_unique reimplementation
+ Variadic constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == std::tuple<int, double, int>{1, 2., 3} )
+with expansion:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+mean
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( m == 19. )
+with expansion:
+ 19.0 == 19.0
+
+-------------------------------------------------------------------------------
+measure
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x == 17 )
+with expansion:
+ 17 == 17
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x == 23 )
+with expansion:
+ 23 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.elapsed.count() == 42 )
+with expansion:
+ 42 == 42
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.result == 23 )
+with expansion:
+ 23 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( r.iterations == 1 )
+with expansion:
+ 1 == 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.elapsed.count() == 69 )
+with expansion:
+ 69 == 69
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.result == 17 )
+with expansion:
+ 17 == 17
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( s.iterations == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ A
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in section 'A'
+
+-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ B
+ B1
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in section 'B1'
+
+-------------------------------------------------------------------------------
+nested sections can be skipped dynamically at runtime
+ B
+ B2
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+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:
+ {?} == {?}
+
+-------------------------------------------------------------------------------
+normal_quantile
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) )
+with expansion:
+ 0.13015979861484195
+ ==
+ Approx( 0.13015979861484198 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) )
+with expansion:
+ 0.08457408802851875
+ ==
+ Approx( 0.08457408802851875 )
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) )
+with expansion:
+ -1.95996398454005405
+ ==
+ Approx( -1.95996398454005449 )
+
+-------------------------------------------------------------------------------
+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
+ no replace in already-replaced string
+ lengthening
+-------------------------------------------------------------------------------
+StringManip.tests.cpp:<line number>
+...............................................................................
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( Catch::replaceInPlace(letters, "c", "cc") )
+with expansion:
+ true
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( letters == "abccdefccg" )
+with expansion:
+ "abccdefccg" == "abccdefccg"
+
+-------------------------------------------------------------------------------
+replaceInPlace
+ no replace in already-replaced string
+ shortening
+-------------------------------------------------------------------------------
+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 == "--" )
+with expansion:
+ "--" == "--"
+
+-------------------------------------------------------------------------------
+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"
+
+-------------------------------------------------------------------------------
+request an unknown %-starting stream fails
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE_THROWS( Catch::makeStream( "%somestream" ) )
+
+-------------------------------------------------------------------------------
+resolution
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res.size() == count )
+with expansion:
+ 10 == 10
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( res[i] == rate )
+with expansion:
+ 1000.0 == 1000 (0x<hex digits>)
+
+-------------------------------------------------------------------------------
+run_for_at_least, chronometer
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 1 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 2 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 4 >= 2
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 8 >= 4
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 16 >= 8
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 32 >= 16
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 64 >= 32
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( meter.runs() >= old_runs )
+with expansion:
+ 128 >= 64
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.elapsed >= time )
+with expansion:
+ 128 ns >= 100 ns
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.result == Timing.iterations + 17 )
+with expansion:
+ 145 == 145
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.iterations >= time.count() )
+with expansion:
+ 128 >= 100
+
+-------------------------------------------------------------------------------
+run_for_at_least, int
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 1 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 2 >= 1
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 4 >= 2
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 8 >= 4
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 16 >= 8
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 32 >= 16
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 64 >= 32
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( x >= old_x )
+with expansion:
+ 128 >= 64
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.elapsed >= time )
+with expansion:
+ 128 ns >= 100 ns
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.result == Timing.iterations + 17 )
+with expansion:
+ 145 == 145
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( Timing.iterations >= time.count() )
+with expansion:
+ 128 >= 100
+
+-------------------------------------------------------------------------------
+second tag
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+
+No assertions in test case 'second tag'
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+sections can be skipped dynamically at runtime
+ also not skipped
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+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, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) )
+with expansion:
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+
+-------------------------------------------------------------------------------
+skipped tests can optionally provide a reason
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+explicitly with message:
+ skipping because answer = 43
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+startsWith
+-------------------------------------------------------------------------------
+StringManip.tests.cpp:<line number>
+...............................................................................
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( startsWith("", 'c') )
+with expansion:
+ !false
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( startsWith(std::string("abc"), 'a') )
+with expansion:
+ true
+
+StringManip.tests.cpp:<line number>: PASSED:
+ CHECK( startsWith("def"_catch_sr, 'd') )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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 } }"
+
+-------------------------------------------------------------------------------
+stdout and stderr streams have %-starting name
+-------------------------------------------------------------------------------
+Stream.tests.cpp:<line number>
+...............................................................................
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "%stderr" )->isConsole() )
+with expansion:
+ true
+
+Stream.tests.cpp:<line number>: PASSED:
+ REQUIRE( Catch::makeStream( "%stdout" )->isConsole() )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+tags with dots in later positions are not parsed as hidden
+-------------------------------------------------------------------------------
+Tag.tests.cpp:<line number>
+...............................................................................
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testcase.tags.size() == 1 )
+with expansion:
+ 1 == 1
+
+Tag.tests.cpp:<line number>: PASSED:
+ REQUIRE( testcase.tags[0].original == "magic.tag"_catch_sr )
+with expansion:
+ magic.tag == magic.tag
+
+-------------------------------------------------------------------------------
+tests can be skipped dynamically at runtime
+-------------------------------------------------------------------------------
+Skip.tests.cpp:<line number>
+...............................................................................
+
+Skip.tests.cpp:<line number>: SKIPPED:
+
+-------------------------------------------------------------------------------
+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.5f" == ::Catch::Detail::stringify(float(1.5)) )
+with expansion:
+ "1.5f" == "1.5f"
+
+ToStringTuple.tests.cpp:<line number>: PASSED:
+ CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) )
+with expansion:
+ "{ 1.5f, 0 }" == "{ 1.5f, 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<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.5f }" == ::Catch::Detail::stringify(value) )
+with expansion:
+ "{ { 42 }, { }, 1.5f }"
+ ==
+ "{ { 42 }, { }, 1.5f }"
+
+-------------------------------------------------------------------------------
+uniform samples
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.point == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.upper_bound == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.lower_bound == 23 )
+with expansion:
+ 23.0 == 23
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ CHECK( e.confidence_interval == 0.95 )
+with expansion:
+ 0.94999999999999996 == 0.94999999999999996
+
+-------------------------------------------------------------------------------
+uniform_integer_distribution can return the bounds
+-------------------------------------------------------------------------------
+RandomNumberGeneration.tests.cpp:<line number>
+...............................................................................
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE( dist.a() == -10 )
+with expansion:
+ -10 == -10
+
+RandomNumberGeneration.tests.cpp:<line number>: PASSED:
+ REQUIRE( dist.b() == 10 )
+with expansion:
+ 10 == 10
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Default constructed unique_ptr is empty
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 0 )
+with expansion:
+ 0 == 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == naked_ptr )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+ Plain reset deallocates
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 0 )
+with expansion:
+ 0 == 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() == naked_ptr )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Take ownership of allocation
+ Reset replaces ownership
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr.get() != 0 )
+with expansion:
+ 0x<hex digits> != 0
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Release releases ownership
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ CHECK_FALSE( ptr )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ CHECK( ptr.get() == 0 )
+with expansion:
+ 0 == 0
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Move constructor
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr1 )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr2 )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr2 == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ Move assignment
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( ptr2 )
+with expansion:
+ !{?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( ptr1 )
+with expansion:
+ {?}
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr1 == 2 )
+with expansion:
+ 2 == 2
+
+-------------------------------------------------------------------------------
+unique_ptr reimplementation: basic functionality
+ free swap
+-------------------------------------------------------------------------------
+UniquePtr.tests.cpp:<line number>
+...............................................................................
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr1 == 2 )
+with expansion:
+ 2 == 2
+
+UniquePtr.tests.cpp:<line number>: PASSED:
+ REQUIRE( *ptr2 == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+warmup
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() )
+with expansion:
+ 160000000 (0x<hex digits>) > 100
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( (end - start) > Catch::Benchmark::Detail::warmup_time )
+with expansion:
+ 310016000 ns > 100 ms
+
+-------------------------------------------------------------------------------
+weighted_average_quantile
+-------------------------------------------------------------------------------
+InternalBenchmark.tests.cpp:<line number>
+...............................................................................
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( q1 == 14.5 )
+with expansion:
+ 14.5 == 14.5
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( med == 18. )
+with expansion:
+ 18.0 == 18.0
+
+InternalBenchmark.tests.cpp:<line number>: PASSED:
+ REQUIRE( q3 == 23. )
+with expansion:
+ 23.0 == 23.0
+
+-------------------------------------------------------------------------------
+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: 419 | 313 passed | 86 failed | 6 skipped | 14 failed as expected
+assertions: 2269 | 2087 passed | 147 failed | 35 failed as expected
+
diff --git a/tests/SelfTest/Baselines/console.swa4.approved.txt b/tests/SelfTest/Baselines/console.swa4.approved.txt
new file mode 100644
index 0000000..41b7612
--- /dev/null
+++ b/tests/SelfTest/Baselines/console.swa4.approved.txt
@@ -0,0 +1,956 @@
+Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+Randomness seeded to: 1
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+<exe-name> is a Catch2 v<version> host application.
+Run with -? for options
+
+-------------------------------------------------------------------------------
+# A test name that starts with a #
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ yay
+
+-------------------------------------------------------------------------------
+#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:
+
+-------------------------------------------------------------------------------
+#1319: Sections can have description (even if it is not saved
+ SectionName
+-------------------------------------------------------------------------------
+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
+
+-------------------------------------------------------------------------------
+#1905 -- test spec parser properly clears internal state between compound tests
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec . char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase("spec , char")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase(R"(spec \, char)")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ Various parentheses
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec {a} char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec [a] char)")) )
+with expansion:
+ true
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE_FALSE( spec.matches(*fakeTestCase("differs but has similar tag", "[a]")) )
+with expansion:
+ !false
+
+-------------------------------------------------------------------------------
+#1912 -- test spec parser handles escaping
+ backslash in test name
+-------------------------------------------------------------------------------
+TestSpec.tests.cpp:<line number>
+...............................................................................
+
+TestSpec.tests.cpp:<line number>: PASSED:
+ REQUIRE( spec.matches(*fakeTestCase(R"(spec \ char)")) )
+with expansion:
+ true
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 3 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATE inside a for loop should not keep recreating the generator
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( counter < 7 )
+with expansion:
+ 6 < 7
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 1 != 4
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 3
+
+-------------------------------------------------------------------------------
+#1913 - GENERATEs can share a line
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: PASSED:
+ REQUIRE( i != j )
+with expansion:
+ 2 != 4
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - GENERATE after a section
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( 1 )
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - Section followed by flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - flat generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 1
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ A
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ A
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 3
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+ B
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with message:
+ B
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 5
+
+-------------------------------------------------------------------------------
+#1938 - mixed sections and generates
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+with messages:
+ i := 2
+ j := 4
+ k := 6
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 1
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 2
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 1
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 2
+
+-------------------------------------------------------------------------------
+#1938 - nested generate
+-------------------------------------------------------------------------------
+PartTracker.tests.cpp:<line number>
+...............................................................................
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( m )
+with expansion:
+ 3
+
+PartTracker.tests.cpp:<line number>: PASSED:
+ REQUIRE( n )
+with expansion:
+ 3
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - double
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323,
+ 4.9406564584124654e-324])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-
+ 324, -0.0000000000000000e+00])
+
+-------------------------------------------------------------------------------
+#2152 - ULP checks between differently signed values were wrong - float
+-------------------------------------------------------------------------------
+Matchers.tests.cpp:<line number>
+...............................................................................
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
+with expansion:
+ 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+
+Matchers.tests.cpp:<line number>: PASSED:
+ CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
+with expansion:
+ 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.
+ 00000000e+00])
+
+-------------------------------------------------------------------------------
+#2615 - Throwing in constructor generator fails test case but does not abort
+-------------------------------------------------------------------------------
+Generators.tests.cpp:<line number>
+...............................................................................
+
+Generators.tests.cpp:<line number>: FAILED:
+due to unexpected exception with message:
+ failure to init
+
+-------------------------------------------------------------------------------
+#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::Matchers::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 Catch2
+-------------------------------------------------------------------------------
+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_after == 1 )
+with expansion:
+ 1 == 1
+
+-------------------------------------------------------------------------------
+#872
+-------------------------------------------------------------------------------
+Compilation.tests.cpp:<line number>
+...............................................................................
+
+Compilation.tests.cpp:<line number>: PASSED:
+ REQUIRE( x == 4 )
+with expansion:
+ {?} == 4
+with message:
+ dummy := 0
+
+-------------------------------------------------------------------------------
+#961 -- Dynamically created sections should all be reported
+ Looped section 0
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ Everything is OK
+
+-------------------------------------------------------------------------------
+#961 -- Dynamically created sections should all be reported
+ Looped section 1
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ Everything is OK
+
+-------------------------------------------------------------------------------
+#961 -- Dynamically created sections should all be reported
+ Looped section 2
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ Everything is OK
+
+-------------------------------------------------------------------------------
+#961 -- Dynamically created sections should all be reported
+ Looped section 3
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ Everything is OK
+
+-------------------------------------------------------------------------------
+#961 -- Dynamically created sections should all be reported
+ Looped section 4
+-------------------------------------------------------------------------------
+Misc.tests.cpp:<line number>
+...............................................................................
+
+Misc.tests.cpp:<line number>: PASSED:
+with message:
+ Everything is OK
+
+-------------------------------------------------------------------------------
+'Not' checks that should fail
+-------------------------------------------------------------------------------
+Condition.tests.cpp:<line number>
+...............................................................................
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( false != false )
+
+Condition.tests.cpp:<line number>: FAILED:
+ CHECK( true != true )
+
+===============================================================================
+test cases: 33 | 27 passed | 3 failed | 3 failed as expected
+assertions: 102 | 94 passed | 4 failed | 4 failed as expected
+
diff --git a/tests/SelfTest/Baselines/default.sw.multi.approved.txt b/tests/SelfTest/Baselines/default.sw.multi.approved.txt
new file mode 100644
index 0000000..bb17484
--- /dev/null
+++ b/tests/SelfTest/Baselines/default.sw.multi.approved.txt
@@ -0,0 +1,11 @@
+This would not be caught previously
+Nor would this
+A string sent directly to stdout
+A string sent directly to stderr
+A string sent to stderr via clog
+Message from section one
+Message from section two
+loose text artifact
+a!
+b1!
+!
diff --git a/tests/SelfTest/Baselines/junit.sw.approved.txt b/tests/SelfTest/Baselines/junit.sw.approved.txt
new file mode 100644
index 0000000..c3571f3
--- /dev/null
+++ b/tests/SelfTest/Baselines/junit.sw.approved.txt
@@ -0,0 +1,2305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuitesloose text artifact
+>
+ <testsuite name="<exe-name>" errors="17" failures="130" skipped="12" tests="2281" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
+ <properties>
+ <property name="random-seed" value="1"/>
+ <property name="filters" value="&quot;*&quot; ~[!nonportable] ~[!benchmark] ~[approvals]"/>
+ </properties>
+ <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1147" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1175 - Hidden Test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1238" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.(Fixture_1245&lt;int, int>)" name="#1245" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1319: Sections can have description (even if it is not saved" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1319: Sections can have description (even if it is not saved/SectionName" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1403" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1455 - INFO and WARN can start with a linebreak" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1514: stderr/stdout is not captured in tests aborted by an exception" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+1514
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <system-out>
+This would not be caught previously
+ </system-out>
+ <system-err>
+Nor would this
+ </system-err>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#1548" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1905 -- test spec parser properly clears internal state between compound tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping/Various parentheses" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping/backslash in test name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1913 - GENERATE inside a for loop should not keep recreating the generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1913 - GENERATEs can share a line" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section/B" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - Section followed by flat generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - Section followed by flat generate/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - flat generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates/B" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - nested generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2615 - Throwing in constructor generator fails test case but does not abort" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error type="TEST_CASE">
+FAILED:
+failure to init
+at Generators.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/outside assertions" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error type="TEST_CASE">
+FAILED:
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/inside REQUIRE_NOTHROW" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="thisThrows()" type="REQUIRE_NOTHROW">
+FAILED:
+ REQUIRE_NOTHROW( thisThrows() )
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/inside REQUIRE_THROWS" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#809" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#833" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#835 -- errno should not be touched by Catch2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="f() == 0" type="CHECK">
+FAILED:
+ CHECK( f() == 0 )
+with expansion:
+ 1 == 0
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#872" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="'Not' checks that should fail" time="{duration}" status="run">
+ <failure message="false != false" type="CHECK">
+FAILED:
+ CHECK( false != false )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="true != true" type="CHECK">
+FAILED:
+ CHECK( true != true )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!true" type="CHECK">
+FAILED:
+ CHECK( !true )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(true)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( true )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!trueValue" type="CHECK">
+FAILED:
+ CHECK( !trueValue )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(trueValue)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( trueValue )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(1 == 1)" type="CHECK">
+FAILED:
+ CHECK( !(1 == 1) )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(1 == 1)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( 1 == 1 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="'Not' checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/compare to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/compare to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/negation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/double negation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/direct" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="3x3x3 ints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.TestClass" name="A METHOD_AS_TEST_CASE based test run that fails" time="{duration}" status="run">
+ <failure message="s == &quot;world&quot;" type="REQUIRE">
+FAILED:
+ REQUIRE( s == "world" )
+with expansion:
+ "hello" == "world"
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.TestClass" name="A METHOD_AS_TEST_CASE based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0f == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 3 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 6 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="A TEST_CASE_METHOD based test run that fails" time="{duration}" status="run">
+ <failure message="m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Fixture" name="A TEST_CASE_METHOD based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/First partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/Second partial run" time="{duration}" status="run">
+ <failure message="m_a == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/First partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/Second partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - Foo&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - Foo&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - std::vector&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - std::vector&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - Bar&lt;float, 42>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - Bar&lt;int, 9>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - std::array&lt;float, 42>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - std::array&lt;int, 9>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A comparison that uses literals instead of the normal constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+to infinity and beyond
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure/Outer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure/Outer/Inner" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A failing expression with a non streamable type is still captured" time="{duration}" status="run">
+ <failure message="&amp;o1 == &amp;o2" type="CHECK">
+FAILED:
+ CHECK( &amp;o1 == &amp;o2 )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <failure message="o1 == o2" type="CHECK">
+FAILED:
+ CHECK( o1 == o2 )
+with expansion:
+ {?} == {?}
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Absolute margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An empty test with no assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An expression with side-effects should only be evaluated once" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An unchecked exception reports the line of the last assertion" time="{duration}" status="run">
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Anonymous test case 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approx setters validate their arguments" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approx with exactly-representable margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate PI" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with floats" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with ints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with mixed numeric types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another other section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different argument ranges, same element type, default comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different argument ranges, same element type, custom comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different element type, custom comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Can handle type that requires ADL-found free function begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Initialization with move only types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Matching using matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Simple, std-provided containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Type with empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Type requires ADL found empty free function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE can deal with complex expressions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE can deal with complex expressions involving commas" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE parses string and character constants" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages/Capture should stringify like assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages/Info should NOT stringify the way assertions do" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive/Degenerate cases" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive/Plain comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive/Degenerate cases" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive/Plain comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/Specifically escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/General chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/Low ASCII" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Arg does not crash on incomplete input" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Arg supports single-arg parse the way Opt does" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas/Parsing fails on multiple options without accept_many" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas/Parsing succeeds on multiple options with accept_many" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard is disengaged by default" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard is engaged by op&lt;&lt;" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard can be engaged explicitly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchAllOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchAnyOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchNotOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining concrete matchers does not use templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining only templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining templated and concrete matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Commas in various macros are allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparing function pointers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparison ops" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparison with explicitly convertible types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons between ints where one side is computed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons with int literals don't warn when mixing signed/ unsigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit/MatchAllOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit/MatchAnyOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit/MatchAllOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit/MatchAnyOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Contains string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), ContainsSubstring( &quot;not there&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), ContainsSubstring( &quot;STRING&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/from var and iterators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/From a temporary container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/Final validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Cout stream properly declares it writes to stdout" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Custom exceptions can be translated when testing for nothrow" time="{duration}" status="run">
+ <error message="throwCustom()" type="REQUIRE_NOTHROW">
+FAILED:
+ REQUIRE_NOTHROW( throwCustom() )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Custom exceptions can be translated when testing for throwing as something else" time="{duration}" status="run">
+ <error message="throwCustom(), std::exception" type="REQUIRE_THROWS_AS">
+FAILED:
+ REQUIRE_THROWS_AS( throwCustom(), std::exception )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Custom std-exceptions can be custom translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+custom std exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Default scale is invisible to comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Directly creating an EnumInfo" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Empty generators can SKIP in constructor" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+This generator is empty
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Empty stream name opens cout stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="EndsWith string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), EndsWith( &quot;Substring&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "Substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), EndsWith( &quot;this&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "this" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Epsilon only applies to Approx's value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equality checks that should fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="data.int_seven == 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 6 )
+with expansion:
+ 7 == 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven == 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 8 )
+with expansion:
+ 7 == 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven == 0" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 0 )
+with expansion:
+ 7 == 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 9.11f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.11f ) )
+with expansion:
+ 9.100000381f
+ ==
+ Approx( 9.10999965667724609 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 9.0f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 1 )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 0 )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.double_pi == Approx( 3.1415 )" type="CHECK">
+FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14150000000000018 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;goodbye&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "goodbye" )
+with expansion:
+ "hello" == "goodbye"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;hell&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "hell" )
+with expansion:
+ "hello" == "hell"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;hello1&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "hello1" )
+with expansion:
+ "hello" == "hello1"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello.size() == 6" type="CHECK">
+FAILED:
+ CHECK( data.str_hello.size() == 6 )
+with expansion:
+ 5 == 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="x == Approx( 1.301 )" type="CHECK">
+FAILED:
+ CHECK( x == Approx( 1.301 ) )
+with expansion:
+ 1.30000000000000027
+ ==
+ Approx( 1.30099999999999993 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Equality checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equals string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), Equals( &quot;this string contains 'ABC' as a substring&quot; )" type="CHECK_THAT">
+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"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Equals( &quot;something else&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" equals: "something else" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/No exception" time="{duration}" status="run">
+ <failure message="doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/Type mismatch" time="{duration}" status="run">
+ <error message="throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ <error message="throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/Contents are wrong" time="{duration}" status="run">
+ <failure message="throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception message can be matched" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/exact match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/different case" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/wildcarded" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exceptions matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Expected exceptions that don't throw or unexpected exceptions fail the test" time="{duration}" status="run">
+ <error message="thisThrows(), std::string" type="CHECK_THROWS_AS">
+FAILED:
+ CHECK_THROWS_AS( thisThrows(), std::string )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ <failure message="thisDoesntThrow(), std::domain_error" type="CHECK_THROWS_AS">
+FAILED:
+ CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
+at Exception.tests.cpp:<line number>
+ </failure>
+ <error message="thisThrows()" type="CHECK_NOTHROW">
+FAILED:
+ CHECK_NOTHROW( thisThrows() )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL aborts the test" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL_CHECK does not abort the test" time="{duration}" status="run">
+ <failure type="FAIL_CHECK">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Factorials are computed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Filter generator throws exception for empty generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Relative" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Relative/Some subnormal values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/ULPs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Constructor validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/IsNaN" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Relative" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Relative/Some subnormal values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/ULPs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Constructor validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/IsNaN" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="GENERATE can combine literals and generators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate/Throws if there are no matching values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Shortening a range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Same type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Different type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Different deduced type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Repeating a generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is divisible by chunk size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is not divisible by chunk size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Chunk size of zero" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Throws on too small generators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple/one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple/two" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Single value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Preset values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Generator combinator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Explicitly typed generator sequence" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Simple filtering" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Filter out multiple elements at the start and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Throws on construction if it can't get initial element" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator/Take less" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator/Take more" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Map with explicit return type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Map with deduced return type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat/Singular repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat/Actual repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive auto step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive auto step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative auto step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative auto step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Greater-than inequalities with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashers with different seed produce different hash with same test case" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashers with same seed produce same hash" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different test name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different classname" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing test case produces same hash across multiple calls" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="INFO and UNSCOPED_INFO can stream multiple arguments" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Show infos!
+This info has multiple parts.
+This unscoped info has multiple parts.
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO and WARN do not abort tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="INFO gets logged on failure" time="{duration}" status="run">
+ <failure message="a == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( a == 1 )
+with expansion:
+ 2 == 1
+this message should be logged
+so should this
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO gets logged on failure, even if captured before successful assertions" time="{duration}" status="run">
+ <failure message="a == 1" type="CHECK">
+FAILED:
+ CHECK( a == 1 )
+with expansion:
+ 2 == 1
+this message may be logged later
+this message should be logged
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="a == 0" type="CHECK">
+FAILED:
+ CHECK( a == 0 )
+with expansion:
+ 2 == 0
+this message may be logged later
+this message should be logged
+and this, but later
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO is reset for each loop" time="{duration}" status="run">
+ <failure message="i &lt; 10" type="REQUIRE">
+FAILED:
+ REQUIRE( i &lt; 10 )
+with expansion:
+ 10 &lt; 10
+current counter 10
+i := 10
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Incomplete AssertionHandler" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="Dummy" type="REQUIRE">
+FAILED:
+ REQUIRE( Dummy )
+Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+at AssertionHandler.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Inequality checks that should fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="data.int_seven != 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven != 7 )
+with expansion:
+ 7 != 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one != Approx( 9.1f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one != Approx( 9.1f ) )
+with expansion:
+ 9.100000381f
+ !=
+ Approx( 9.10000038146972656 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.double_pi != Approx( 3.1415926535 )" type="CHECK">
+FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14159265350000005 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello != &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello != "hello" )
+with expansion:
+ "hello" != "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello.size() != 5" type="CHECK">
+FAILED:
+ CHECK( data.str_hello.size() != 5 )
+with expansion:
+ 5 != 5
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Inequality checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Newly constructed JsonWriter does nothing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeObject will create an empty pair of braces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeObject with key will create an object to write the value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/nesting objects" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeArray will create an empty pair of braces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeArray creates array to write the values to" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Moved from JsonObjectWriter shall not insert superfluous brace" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Moved from JsonArrayWriter shall not insert superfluous bracket" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Custom class shall be quoted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Quote in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Backslash in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Forward slash in a string is **not** escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Backspace in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Formfeed in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/linefeed in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/carriage return in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/tab in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/combination of characters is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Lambdas in assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Less-than inequalities with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ManuallyRegistered" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be (AllOf) composed with the &amp;&amp; operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be (AnyOf) composed with the || operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be composed with both &amp;&amp; and ||" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be composed with both &amp;&amp; and || - failing" time="{duration}" status="run">
+ <failure message="testStringForMatching(), ( ContainsSubstring( &quot;string&quot; ) || ContainsSubstring( &quot;different&quot; ) ) &amp;&amp; ContainsSubstring( &quot;random&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "random" )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Matchers can be negated (Not) with the ! operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be negated (Not) with the ! operator - failing" time="{duration}" status="run">
+ <failure message="testStringForMatching(), !ContainsSubstring( &quot;substring&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1/A" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2/A" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1/B" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2/B" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mismatching exception messages failing the test" time="{duration}" status="run">
+ <failure message="thisThrows(), &quot;should fail&quot;" type="REQUIRE_THROWS_WITH">
+FAILED:
+ REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
+with expansion:
+ "expected exception" equals: "should fail"
+at Exception.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Multireporter calls reporters and listeners in correct order" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly/Adding listeners" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly/Adding reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Nested generators and captured variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Nice descriptive name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Non-std exceptions can be translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+custom exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Optionally static assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Ordering comparison checks that should fail" time="{duration}" status="run">
+ <failure message="data.int_seven > 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven > 7 )
+with expansion:
+ 7 > 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 7 )
+with expansion:
+ 7 &lt; 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven > 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven > 8 )
+with expansion:
+ 7 > 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 6 )
+with expansion:
+ 7 &lt; 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 0" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 0 )
+with expansion:
+ 7 &lt; 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; -1" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; -1 )
+with expansion:
+ 7 &lt; -1
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven >= 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven >= 8 )
+with expansion:
+ 7 >= 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt;= 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt;= 6 )
+with expansion:
+ 7 &lt;= 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one &lt; 9" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one &lt; 9 )
+with expansion:
+ 9.100000381f &lt; 9
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one > 10" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one > 9.2" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "hello" )
+with expansion:
+ "hello" > "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "hello" )
+with expansion:
+ "hello" &lt; "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;hellp&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "hellp" )
+with expansion:
+ "hello" > "hellp"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;z&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "z" )
+with expansion:
+ "hello" > "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;hellm&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "hellm" )
+with expansion:
+ "hello" &lt; "hellm"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;a&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "a" )
+with expansion:
+ "hello" &lt; "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello >= &quot;z&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello >= "z" )
+with expansion:
+ "hello" >= "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt;= &quot;a&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt;= "a" )
+with expansion:
+ "hello" &lt;= "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Ordering comparison checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds/Default seeded" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds/Specific seed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Output from all sections is reported/one" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Message from section one
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Output from all sections is reported/two" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Message from section two
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Overloaded comma or address-of operators are not used" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints/proper inputs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints/Bad inputs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsed tags are matched case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/shard-count" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Negative shard count reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Zero shard count reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/shard-index" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Negative shard index reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Shard index 0 is accepted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing tags with non-alphabetical characters is pass-through" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/NoAssertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/NoTests is no longer supported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/Combining multiple warnings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Pointers can be compared to null" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set/Floats" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set/Double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Predicate matcher can accept const char*" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/empty args don't cause a crash" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/default - no arguments" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case using" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case exclusion using exclude:" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case exclusion using ~" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/-r/console" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/-r/xml" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/--reporter/junit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/must match one of the available ones" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/With output file" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/With Windows-like absolute path as output file" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/All with output files" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/Mixed output files and default output" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/cannot have multiple reporters with default output" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/-b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/--break" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-a aborts after first failure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-x 2 aborts after two failures" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-x must be numeric" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress/Accepted options" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress/invalid options are reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow/-e" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow/--nothrow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename/-o filename" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename/--out" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/combinations" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/combinations/Single character flags can be combined" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/without option" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/auto" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/yes" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/no" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/samples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/resamples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/confidence-interval" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/no-analysis" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/warmup-time" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int, double, float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int, double>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Random seed generation accepts known methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Random seed generation reports unknown methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Range type with sentinel" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reconstruction should be based on stringification: #914" time="{duration}" status="run">
+ <failure message="truthy(false)" type="CHECK">
+FAILED:
+ CHECK( truthy(false) )
+with expansion:
+ Hey, its truthy!
+at Decomposition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Regex string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), Matches( &quot;this STRING contains 'abc' as a substring&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Matches( &quot;contains 'abc' as a substring&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Matches( &quot;this string contains 'abc' as a&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Registering reporter with '::' in name fails" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Regression test #1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="SUCCEED counts as a test pass" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="SUCCEED does not require an argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me/When: We get the count" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger/Then: the size and capacity go up" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: we reserve more space" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Sends stuff to stdout and stderr" time="{duration}" status="run">
+ <system-out>
+A string sent directly to stdout
+ </system-out>
+ <system-err>
+A string sent directly to stderr
+A string sent to stderr via clog
+ </system-err>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Some simple comparisons between doubles" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported/one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported/two" time="{duration}" status="run">
+ <system-out>
+Message from section one
+Message from section two
+ </system-out>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="StartsWith string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), StartsWith( &quot;This String&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "This String"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), StartsWith( &quot;string&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "string" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Multiple" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Non-trivial inner items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="String matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Empty string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/From string literal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/From sub-string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Copy construction is shallow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Copy assignment is shallow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/zero-based substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/non-zero-based substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Pointer values of full refs should match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Pointer values of substring refs should also match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Past the end substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Substring off the end are trimmed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/substring start after the end is empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Comparisons are deep" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/implicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/explicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/assigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string/explicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string/assigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/std::string += StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/StringRef + StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time/Simple constructors" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time/UDL construction" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - signed char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - unsigned char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::duration helpers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::duration with weird ratios" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::time_point&lt;system_clock>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tabs and newlines show in output" time="{duration}" status="run">
+ <failure message="s1 == s2" type="CHECK">
+FAILED:
+ CHECK( s1 == s2 )
+with expansion:
+ "if ($b == 10) {
+ $a = 20;
+ }"
+ ==
+ "if ($b == 10) {
+ $a = 20;
+ }
+ "
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/The same tag alias can only be registered once" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/Tag aliases must be of the form [@name]" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tags with spaces and non-alphanumerical characters are accepted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test case with identical tags keeps just one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test case with one argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test enum bit values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test with special, characters &quot;in name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Testing checked-if" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 3" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 4" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 5" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="The NO_FAIL macro reports a failure but does not fail the test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing listeners" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="This test 'should' fail but doesn't" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Thrown string literals are translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+For some reason someone is throwing a string literal!
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Tracker" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section/re-enter after failed section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section/re-enter after failed section and find next section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/Successfully close S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/fail S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/open a nested section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Trim strings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types (differ in array N)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types and value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers, one random access, one not" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type/Two equal containers of different value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type/Two non-equal containers of different value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Ranges with begin that needs ADL" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Unexpected exceptions can be translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+3.14000000000000012
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions/Move constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions/move assignment" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/Empty evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/One false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/One false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/Empty evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/One true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/One true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/All true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/Empty evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/One true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/All false evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/One true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All false evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Empty container matches empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Empty container does not match non-empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers (with same first elements)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Ranges that need ADL begin/end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Compare against std::initializer_list" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/Check short-circuits on failure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/All elements are checked on success" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container matches empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container does not match non-empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Ranges that need ADL begin/end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Compare against std::initializer_list" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Some with stdlib containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Type requires ADL found size free function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Type has size member" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Use a custom approx" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Variadic macros" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Variadic macros/Section with one argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Empty vector is roughly equal to an empty vector" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/A vector is approx equal to itself" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/Different length" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/Same length, different elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing/Empty and non empty vectors are not approx equal" time="{duration}" status="run">
+ <failure message="empty, Approx( t1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Approx( t1 ) )
+with expansion:
+ { } is approx: { 1.0, 2.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing/Just different vectors" time="{duration}" status="run">
+ <failure message="v1, Approx( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v1, Approx( v2 ) )
+with expansion:
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (element)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (vector)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (element), composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Equals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/UnorderedEquals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Contains (element)" time="{duration}" status="run">
+ <failure message="v, VectorContains( -1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, VectorContains( -1 ) )
+with expansion:
+ { 1, 2, 3 } Contains: -1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, VectorContains( 1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, VectorContains( 1 ) )
+with expansion:
+ { } Contains: 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Contains (vector)" time="{duration}" status="run">
+ <failure message="empty, Contains( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Contains( v ) )
+with expansion:
+ { } Contains: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v, Contains( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Contains( v2 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Equals" time="{duration}" status="run">
+ <failure message="v, Equals( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v2, Equals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v2, Equals( v ) )
+with expansion:
+ { 1, 2 } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, Equals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Equals( v ) )
+with expansion:
+ { } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v, Equals( empty )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Equals( empty ) )
+with expansion:
+ { 1, 2, 3 } Equals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/UnorderedEquals" time="{duration}" status="run">
+ <failure message="v, UnorderedEquals( empty )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, UnorderedEquals( empty ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, UnorderedEquals( v ) )
+with expansion:
+ { } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="permuted, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="permuted, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When checked exceptions are thrown they can be expected or unexpected" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown directly they are always failures" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown during a CHECK the test should continue" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="CHECK">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from functions they are always failures" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="CHECK">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from sections they are always failures/section name" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown, but caught, they do not affect the test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/0/a" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/0/b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/1/a" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/1/b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/normal string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/empty string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with ampersand" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with less-than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with greater-than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with quotes" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with control char (1)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with control char (x7F)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlWriter writes boolean attributes as true/false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="a succeeding test can still be skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="analyse no analysis" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="array&lt;int, N> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call/without chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call/with chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="boolean member" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedElse" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedElse, failing" time="{duration}" status="run">
+ <failure message="testCheckedElse( false )" type="REQUIRE">
+FAILED:
+ REQUIRE( testCheckedElse( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="checkedIf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedIf, failing" time="{duration}" status="run">
+ <failure message="testCheckedIf( false )" type="REQUIRE">
+FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="classify_outliers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/none" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/low severe" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/low mild" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/high mild" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/high severe" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/mixed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="comparisons between const int variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="comparisons between int variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="convertToBits" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="dynamic skipping works with generators" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 41
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="empty tags are not allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="erfc_inv" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="estimate_clock_resolution" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c/d (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c/e (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/f (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="failed assertions before SKIP cause test case to fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="3 == 4" type="CHECK">
+FAILED:
+ CHECK( 3 == 4 )
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing for some generator values causes entire test case to fail" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing in some unskipped sections causes entire test case to fail/skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing in some unskipped sections causes entire test case to fail/not skipped" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="first tag" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="has printf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="is_unary_function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="just failure" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Previous info should not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="just failure after unscoped info" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+previous unscoped info SHOULD not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="just info" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="just unscoped info" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="long long" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 0" time="{duration}" status="run">
+ <failure message="b > a" type="CHECK">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 0 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 1" time="{duration}" status="run">
+ <failure message="b > a" type="CHECK">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 1 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 5" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 7" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 8" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 9" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped tests" time="{duration}" status="run">
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[0] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[1] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[3] (3) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[4] (5) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[6] (13) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[7] (21) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="makeStream recognizes %debug stream name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/From lvalue copies" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/From rvalue moves" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/Variadic constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="mean" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="measure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="mix info, unscoped info and warning" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/equal/doesn't equal" time="{duration}" status="run">
+ <failure message="a == b" type="REQUIRE">
+FAILED:
+ REQUIRE( a == b )
+with expansion:
+ 1 == 2
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal/less than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests/doesn't equal/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2/B1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2/B" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B" time="{duration}" status="run">
+ <system-out>
+a!
+b1!
+!
+ </system-out>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="non streamable - with conv. op" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="non-copyable objects" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="normal_quantile" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="not allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="not prints unscoped info from previous failures" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="null strings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="null_ptr" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/No enums" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/One enum value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/Multiple enum values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="pointer to class" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="print unscoped info if passing unscoped info is printed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="prints unscoped info on failure" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+this SHOULD also be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="prints unscoped info only for the first assertion" time="{duration}" status="run">
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+this SHOULD be seen only ONCE
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="random SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="random SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="random SECTION tests/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace single char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace two chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace first char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace last char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace all chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace no chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string/lengthening" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string/shortening" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/escape '" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="request an unknown %-starting stream fails" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="resolution" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="run_for_at_least, chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="run_for_at_least, int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="second tag" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/not skipped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/also not skipped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="send a single char to INFO" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+3
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="sends information to INFO" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+hi
+i := 7
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="shortened hide tags are split apart" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="skipped tests can optionally provide a reason" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="splitString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stacks unscoped info in loops" time="{duration}" status="run">
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+Count 1 to 3...
+1
+2
+3
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+Count 4 to 6...
+4
+5
+6
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="startsWith" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/several items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::pair&lt;int,const std::string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::pair&lt;int,std::string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/several items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stdout and stderr streams have %-starting name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify ranges" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_maker )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_maker_and_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_neither )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_template_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_maker> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_maker_and_operator> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_operator> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="strlen3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tags with dots in later positions are not parsed as hidden" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tests can be skipped dynamically at runtime" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="thrown std::strings are translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+Why would you throw a std::string?
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="toString on const wchar_t const pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on const wchar_t pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on wchar_t const pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on wchar_t returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum class w/operator&lt;&lt;)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum class)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum w/operator&lt;&lt;)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;float,int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;string,string>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="uniform samples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="uniform_integer_distribution can return the bounds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Default constructed unique_ptr is empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Plain reset deallocates" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Reset replaces ownership" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Release releases ownership" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Move constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Move assignment" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/free swap" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vec&lt;vec&lt;string,alloc>> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;bool> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;int,allocator> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;int> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="warmup" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="weighted_average_quantile" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck/embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck/encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" time="{duration}" status="run"/>
+ <system-out>
+This would not be caught previously
+A string sent directly to stdout
+Message from section one
+Message from section two
+a!
+b1!
+!
+ </system-out>
+ <system-err>
+Nor would this
+A string sent directly to stderr
+A string sent to stderr via clog
+ </system-err>
+ </testsuite>
+</testsuites>
diff --git a/tests/SelfTest/Baselines/junit.sw.multi.approved.txt b/tests/SelfTest/Baselines/junit.sw.multi.approved.txt
new file mode 100644
index 0000000..55f5520
--- /dev/null
+++ b/tests/SelfTest/Baselines/junit.sw.multi.approved.txt
@@ -0,0 +1,2304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuites>
+ <testsuite name="<exe-name>" errors="17" failures="130" skipped="12" tests="2281" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
+ <properties>
+ <property name="random-seed" value="1"/>
+ <property name="filters" value="&quot;*&quot; ~[!nonportable] ~[!benchmark] ~[approvals]"/>
+ </properties>
+ <testcase classname="<exe-name>.global" name="# A test name that starts with a #" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1027: Bitfields can be captured" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1147" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1175 - Hidden Test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1238" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.(Fixture_1245&lt;int, int>)" name="#1245" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1319: Sections can have description (even if it is not saved" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1319: Sections can have description (even if it is not saved/SectionName" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1403" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1455 - INFO and WARN can start with a linebreak" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1514: stderr/stdout is not captured in tests aborted by an exception" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+1514
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <system-out>
+This would not be caught previously
+ </system-out>
+ <system-err>
+Nor would this
+ </system-err>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#1548" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1905 -- test spec parser properly clears internal state between compound tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping/Various parentheses" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1912 -- test spec parser handles escaping/backslash in test name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1913 - GENERATE inside a for loop should not keep recreating the generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1913 - GENERATEs can share a line" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - GENERATE after a section/B" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - Section followed by flat generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - Section followed by flat generate/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - flat generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - mixed sections and generates/B" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1938 - nested generate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#2615 - Throwing in constructor generator fails test case but does not abort" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error type="TEST_CASE">
+FAILED:
+failure to init
+at Generators.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/outside assertions" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error type="TEST_CASE">
+FAILED:
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/inside REQUIRE_NOTHROW" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="thisThrows()" type="REQUIRE_NOTHROW">
+FAILED:
+ REQUIRE_NOTHROW( thisThrows() )
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/inside REQUIRE_THROWS" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#809" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#833" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#835 -- errno should not be touched by Catch2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="f() == 0" type="CHECK">
+FAILED:
+ CHECK( f() == 0 )
+with expansion:
+ 1 == 0
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="#872" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="#961 -- Dynamically created sections should all be reported/Looped section 4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="'Not' checks that should fail" time="{duration}" status="run">
+ <failure message="false != false" type="CHECK">
+FAILED:
+ CHECK( false != false )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="true != true" type="CHECK">
+FAILED:
+ CHECK( true != true )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!true" type="CHECK">
+FAILED:
+ CHECK( !true )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(true)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( true )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!trueValue" type="CHECK">
+FAILED:
+ CHECK( !trueValue )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(trueValue)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( trueValue )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(1 == 1)" type="CHECK">
+FAILED:
+ CHECK( !(1 == 1) )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="!(1 == 1)" type="CHECK_FALSE">
+FAILED:
+ CHECK_FALSE( 1 == 1 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="'Not' checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/compare to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/compare to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/negation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/double negation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="(unimplemented) static bools can be evaluated/direct" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="3x3x3 ints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.TestClass" name="A METHOD_AS_TEST_CASE based test run that fails" time="{duration}" status="run">
+ <failure message="s == &quot;world&quot;" type="REQUIRE">
+FAILED:
+ REQUIRE( s == "world" )
+with expansion:
+ "hello" == "world"
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.TestClass" name="A METHOD_AS_TEST_CASE based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>::m_a.size() == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" time="{duration}" status="run">
+ <failure message="Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture_2" name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0f == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" time="{duration}" status="run">
+ <failure message="Template_Fixture&lt;TestType>::m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 3 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" time="{duration}" status="run">
+ <failure message="Nttp_Fixture&lt;V>::value == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 6 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Nttp_Fixture" name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="A TEST_CASE_METHOD based test run that fails" time="{duration}" status="run">
+ <failure message="m_a == 2" type="REQUIRE">
+FAILED:
+ REQUIRE( m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Fixture" name="A TEST_CASE_METHOD based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/First partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/Second partial run" time="{duration}" status="run">
+ <failure message="m_a == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/First partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Persistent_Fixture" name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/Second partial run" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - Foo&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - Foo&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - std::vector&lt;float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case - std::vector&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - Bar&lt;float, 42>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - Bar&lt;int, 9>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - std::array&lt;float, 42>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A Template product test case with array signature - std::array&lt;int, 9>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A comparison that uses literals instead of the normal constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+to infinity and beyond
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure/Outer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A couple of nested sections followed by a failure/Outer/Inner" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="A failing expression with a non streamable type is still captured" time="{duration}" status="run">
+ <failure message="&amp;o1 == &amp;o2" type="CHECK">
+FAILED:
+ CHECK( &amp;o1 == &amp;o2 )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <failure message="o1 == o2" type="CHECK">
+FAILED:
+ CHECK( o1 == o2 )
+with expansion:
+ {?} == {?}
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Absolute margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An empty test with no assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An expression with side-effects should only be evaluated once" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="An unchecked exception reports the line of the last assertion" time="{duration}" status="run">
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Anonymous test case 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approx setters validate their arguments" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approx with exactly-representable margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate PI" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with floats" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with ints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Approximate comparisons with mixed numeric types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another other section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different argument ranges, same element type, default comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different argument ranges, same element type, custom comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Different element type, custom comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Can handle type that requires ADL-found free function begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Initialization with move only types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Contains range matcher/Matching using matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Simple, std-provided containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Type with empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Basic use of the Empty range matcher/Type requires ADL found empty free function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE can deal with complex expressions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE can deal with complex expressions involving commas" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CAPTURE parses string and character constants" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages/Capture should stringify like assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Capture and info messages/Info should NOT stringify the way assertions do" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive/Degenerate cases" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveEqualsTo is case insensitive/Plain comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive/Degenerate cases" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="CaseInsensitiveLess is case insensitive/Plain comparisons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/Specifically escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/General chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Character pretty printing/Low ASCII" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Arg does not crash on incomplete input" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Arg supports single-arg parse the way Opt does" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas/Parsing fails on multiple options without accept_many" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Clara::Opt supports accept-many lambdas/Parsing succeeds on multiple options with accept_many" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard is disengaged by default" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard is engaged by op&lt;&lt;" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ColourGuard behaviour/ColourGuard can be engaged explicitly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchAllOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchAnyOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining MatchNotOfGeneric does not nest" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining concrete matchers does not use templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining only templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining templated and concrete matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Combining templated matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Commas in various macros are allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparing function pointers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparison ops" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparison with explicitly convertible types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons between ints where one side is computed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Comparisons with int literals don't warn when mixing signed/ unsigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit/MatchAllOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed generic matchers shortcircuit/MatchAnyOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit/MatchAllOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Composed matchers shortcircuit/MatchAnyOf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Contains string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), ContainsSubstring( &quot;not there&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), ContainsSubstring( &quot;STRING&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/from var and iterators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/From a temporary container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Copy and then generate a range/Final validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Cout stream properly declares it writes to stdout" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Custom exceptions can be translated when testing for nothrow" time="{duration}" status="run">
+ <error message="throwCustom()" type="REQUIRE_NOTHROW">
+FAILED:
+ REQUIRE_NOTHROW( throwCustom() )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Custom exceptions can be translated when testing for throwing as something else" time="{duration}" status="run">
+ <error message="throwCustom(), std::exception" type="REQUIRE_THROWS_AS">
+FAILED:
+ REQUIRE_THROWS_AS( throwCustom(), std::exception )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Custom std-exceptions can be custom translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+custom std exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Default scale is invisible to comparison" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Directly creating an EnumInfo" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Empty generators can SKIP in constructor" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+This generator is empty
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Empty stream name opens cout stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="EndsWith string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), EndsWith( &quot;Substring&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "Substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), EndsWith( &quot;this&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "this" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Epsilon only applies to Approx's value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equality checks that should fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="data.int_seven == 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 6 )
+with expansion:
+ 7 == 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven == 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 8 )
+with expansion:
+ 7 == 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven == 0" type="CHECK">
+FAILED:
+ CHECK( data.int_seven == 0 )
+with expansion:
+ 7 == 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 9.11f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.11f ) )
+with expansion:
+ 9.100000381f
+ ==
+ Approx( 9.10999965667724609 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 9.0f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 1 )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one == Approx( 0 )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.double_pi == Approx( 3.1415 )" type="CHECK">
+FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+ ==
+ Approx( 3.14150000000000018 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;goodbye&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "goodbye" )
+with expansion:
+ "hello" == "goodbye"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;hell&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "hell" )
+with expansion:
+ "hello" == "hell"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello == &quot;hello1&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello == "hello1" )
+with expansion:
+ "hello" == "hello1"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello.size() == 6" type="CHECK">
+FAILED:
+ CHECK( data.str_hello.size() == 6 )
+with expansion:
+ 5 == 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="x == Approx( 1.301 )" type="CHECK">
+FAILED:
+ CHECK( x == Approx( 1.301 ) )
+with expansion:
+ 1.30000000000000027
+ ==
+ Approx( 1.30099999999999993 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Equality checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Equals string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), Equals( &quot;this string contains 'ABC' as a substring&quot; )" type="CHECK_THAT">
+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"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Equals( &quot;something else&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" equals: "something else" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/No exception" time="{duration}" status="run">
+ <failure message="doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/Type mismatch" time="{duration}" status="run">
+ <error message="throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ <error message="throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that fail/Contents are wrong" time="{duration}" status="run">
+ <failure message="throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 }" type="CHECK_THROWS_MATCHES">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 }" type="REQUIRE_THROWS_MATCHES">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Exception matchers that succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception message can be matched" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/exact match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/different case" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exception messages can be tested for/wildcarded" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Exceptions matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Expected exceptions that don't throw or unexpected exceptions fail the test" time="{duration}" status="run">
+ <error message="thisThrows(), std::string" type="CHECK_THROWS_AS">
+FAILED:
+ CHECK_THROWS_AS( thisThrows(), std::string )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ <failure message="thisDoesntThrow(), std::domain_error" type="CHECK_THROWS_AS">
+FAILED:
+ CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
+at Exception.tests.cpp:<line number>
+ </failure>
+ <error message="thisThrows()" type="CHECK_NOTHROW">
+FAILED:
+ CHECK_NOTHROW( thisThrows() )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL aborts the test" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="FAIL_CHECK does not abort the test" time="{duration}" status="run">
+ <failure type="FAIL_CHECK">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Factorials are computed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Filter generator throws exception for empty generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Relative" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Relative/Some subnormal values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/ULPs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/Constructor validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: double/IsNaN" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Relative" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Relative/Some subnormal values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Margin" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/ULPs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/Constructor validation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Floating point matchers: float/IsNaN" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="GENERATE can combine literals and generators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Filtering by predicate/Throws if there are no matching values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Shortening a range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Same type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Different type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Transforming elements/Different deduced type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Repeating a generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is divisible by chunk size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is not divisible by chunk size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Chunk size of zero" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- adapters/Chunking a generator into sized pieces/Throws on too small generators" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple/one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators -- simple/two" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Single value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Preset values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Generator combinator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Explicitly typed generator sequence" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Simple filtering" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Filter out multiple elements at the start and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Filter generator/Throws on construction if it can't get initial element" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator/Take less" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Take generator/Take more" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Map with explicit return type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Map with deduced return type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat/Singular repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Repeat/Actual repeat" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive auto step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive auto step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative auto step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative auto step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Integer/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Positive manual step/Floating Point/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Exact" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Slightly over end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Generators internals/Range/Negative manual step/Integer/Slightly under end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Greater-than inequalities with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashers with different seed produce different hash with same test case" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashers with same seed produce same hash" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different test name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different classname" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing different test cases produces different result/Different tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Hashing test case produces same hash across multiple calls" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="INFO and UNSCOPED_INFO can stream multiple arguments" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Show infos!
+This info has multiple parts.
+This unscoped info has multiple parts.
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO and WARN do not abort tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="INFO gets logged on failure" time="{duration}" status="run">
+ <failure message="a == 1" type="REQUIRE">
+FAILED:
+ REQUIRE( a == 1 )
+with expansion:
+ 2 == 1
+this message should be logged
+so should this
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO gets logged on failure, even if captured before successful assertions" time="{duration}" status="run">
+ <failure message="a == 1" type="CHECK">
+FAILED:
+ CHECK( a == 1 )
+with expansion:
+ 2 == 1
+this message may be logged later
+this message should be logged
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="a == 0" type="CHECK">
+FAILED:
+ CHECK( a == 0 )
+with expansion:
+ 2 == 0
+this message may be logged later
+this message should be logged
+and this, but later
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="INFO is reset for each loop" time="{duration}" status="run">
+ <failure message="i &lt; 10" type="REQUIRE">
+FAILED:
+ REQUIRE( i &lt; 10 )
+with expansion:
+ 10 &lt; 10
+current counter 10
+i := 10
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Incomplete AssertionHandler" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="Dummy" type="REQUIRE">
+FAILED:
+ REQUIRE( Dummy )
+Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+at AssertionHandler.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Inequality checks that should fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="data.int_seven != 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven != 7 )
+with expansion:
+ 7 != 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one != Approx( 9.1f )" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one != Approx( 9.1f ) )
+with expansion:
+ 9.100000381f
+ !=
+ Approx( 9.10000038146972656 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.double_pi != Approx( 3.1415926535 )" type="CHECK">
+FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+ !=
+ Approx( 3.14159265350000005 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello != &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello != "hello" )
+with expansion:
+ "hello" != "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello.size() != 5" type="CHECK">
+FAILED:
+ CHECK( data.str_hello.size() != 5 )
+with expansion:
+ 5 != 5
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Inequality checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Newly constructed JsonWriter does nothing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeObject will create an empty pair of braces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeObject with key will create an object to write the value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/nesting objects" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeArray will create an empty pair of braces" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Calling writeArray creates array to write the values to" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Moved from JsonObjectWriter shall not insert superfluous brace" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Moved from JsonArrayWriter shall not insert superfluous bracket" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter/Custom class shall be quoted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Quote in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Backslash in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Forward slash in a string is **not** escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Backspace in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/Formfeed in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/linefeed in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/carriage return in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/tab in a string is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="JsonWriter escapes charaters in strings properly/combination of characters is escaped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Lambdas in assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Less-than inequalities with different epsilons" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="ManuallyRegistered" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be (AllOf) composed with the &amp;&amp; operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be (AnyOf) composed with the || operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be composed with both &amp;&amp; and ||" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be composed with both &amp;&amp; and || - failing" time="{duration}" status="run">
+ <failure message="testStringForMatching(), ( ContainsSubstring( &quot;string&quot; ) || ContainsSubstring( &quot;different&quot; ) ) &amp;&amp; ContainsSubstring( &quot;random&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or
+ contains: "different" ) and contains: "random" )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Matchers can be negated (Not) with the ! operator" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Matchers can be negated (Not) with the ! operator - failing" time="{duration}" status="run">
+ <failure message="testStringForMatching(), !ContainsSubstring( &quot;substring&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1/A" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2/A" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/1/B" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mayfail test case with nested sections/2/B" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Mismatching exception messages failing the test" time="{duration}" status="run">
+ <failure message="thisThrows(), &quot;should fail&quot;" type="REQUIRE_THROWS_WITH">
+FAILED:
+ REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
+with expansion:
+ "expected exception" equals: "should fail"
+at Exception.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Multireporter calls reporters and listeners in correct order" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly/Adding listeners" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Multireporter updates ReporterPreferences properly/Adding reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Nested generators and captured variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Nice descriptive name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Non-std exceptions can be translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+custom exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Objects that evaluated in boolean contexts can be checked" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Optionally static assertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Ordering comparison checks that should fail" time="{duration}" status="run">
+ <failure message="data.int_seven > 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven > 7 )
+with expansion:
+ 7 > 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 7" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 7 )
+with expansion:
+ 7 &lt; 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven > 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven > 8 )
+with expansion:
+ 7 > 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 6 )
+with expansion:
+ 7 &lt; 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; 0" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; 0 )
+with expansion:
+ 7 &lt; 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt; -1" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt; -1 )
+with expansion:
+ 7 &lt; -1
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven >= 8" type="CHECK">
+FAILED:
+ CHECK( data.int_seven >= 8 )
+with expansion:
+ 7 >= 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.int_seven &lt;= 6" type="CHECK">
+FAILED:
+ CHECK( data.int_seven &lt;= 6 )
+with expansion:
+ 7 &lt;= 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one &lt; 9" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one &lt; 9 )
+with expansion:
+ 9.100000381f &lt; 9
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one > 10" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.float_nine_point_one > 9.2" type="CHECK">
+FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "hello" )
+with expansion:
+ "hello" > "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;hello&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "hello" )
+with expansion:
+ "hello" &lt; "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;hellp&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "hellp" )
+with expansion:
+ "hello" > "hellp"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello > &quot;z&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello > "z" )
+with expansion:
+ "hello" > "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;hellm&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "hellm" )
+with expansion:
+ "hello" &lt; "hellm"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt; &quot;a&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt; "a" )
+with expansion:
+ "hello" &lt; "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello >= &quot;z&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello >= "z" )
+with expansion:
+ "hello" >= "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="data.str_hello &lt;= &quot;a&quot;" type="CHECK">
+FAILED:
+ CHECK( data.str_hello &lt;= "a" )
+with expansion:
+ "hello" &lt;= "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Ordering comparison checks that should succeed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds/Default seeded" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Our PCG implementation provides expected results for known seeds/Specific seed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Output from all sections is reported/one" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Message from section one
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Output from all sections is reported/two" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Message from section two
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Overloaded comma or address-of operators are not used" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints/proper inputs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parse uints/Bad inputs" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsed tags are matched case insensitive" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/shard-count" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Negative shard count reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Zero shard count reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/shard-index" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Negative shard index reports error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing sharding-related cli flags/Shard index 0 is accepted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing tags with non-alphabetical characters is pass-through" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/NoAssertions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/NoTests is no longer supported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Parsing warnings/Combining multiple warnings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Pointers can be compared to null" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set/Floats" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Precision of floating point stringification can be set/Double" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Predicate matcher can accept const char*" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/empty args don't cause a crash" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/default - no arguments" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case using" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case exclusion using exclude:" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/test lists/Specify one test case exclusion using ~" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/-r/console" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/-r/xml" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/--reporter/junit" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/must match one of the available ones" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/With output file" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/With Windows-like absolute path as output file" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/All with output files" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/Mixed output files and default output" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/reporter/Multiple reporters/cannot have multiple reporters with default output" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/-b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/debugger/--break" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-a aborts after first failure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-x 2 aborts after two failures" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/-x must be numeric" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress/Accepted options" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/abort/wait-for-keypress/invalid options are reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow/-e" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/nothrow/--nothrow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename/-o filename" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/output filename/--out" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/combinations" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/combinations/Single character flags can be combined" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/without option" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/auto" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/yes" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/no" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/use-colour/error" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/samples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/resamples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/confidence-interval" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/no-analysis" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Process can be configured on command line/Benchmark options/warmup-time" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int, double, float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int, double>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Product with differing arities - std::tuple&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Random seed generation accepts known methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Random seed generation reports unknown methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Range type with sentinel" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reconstruction should be based on stringification: #914" time="{duration}" status="run">
+ <failure message="truthy(false)" type="CHECK">
+FAILED:
+ CHECK( truthy(false) )
+with expansion:
+ Hey, its truthy!
+at Decomposition.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Regex string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), Matches( &quot;this STRING contains 'abc' as a substring&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Matches( &quot;contains 'abc' as a substring&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), Matches( &quot;this string contains 'abc' as a&quot; )" type="CHECK_THAT">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Registering reporter with '::' in name fails" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Regression test #1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/Automake reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/compact reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/console reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JSON reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/JUnit reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/SonarQube reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TAP reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/TeamCity reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reporter's write listings to provided stream/XML reporter lists tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="SUCCEED counts as a test pass" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="SUCCEED does not require an argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me/When: We get the count" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Fixture" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger/Then: the size and capacity go up" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: we reserve more space" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Sends stuff to stdout and stderr" time="{duration}" status="run">
+ <system-out>
+A string sent directly to stdout
+ </system-out>
+ <system-err>
+A string sent directly to stderr
+A string sent to stderr via clog
+ </system-err>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Some simple comparisons between doubles" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported/one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Standard output from all sections is reported/two" time="{duration}" status="run">
+ <system-out>
+Message from section one
+Message from section two
+ </system-out>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="StartsWith string matcher" time="{duration}" status="run">
+ <failure message="testStringForMatching(), StartsWith( &quot;This String&quot; )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "This String"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="testStringForMatching(), StartsWith( &quot;string&quot;, Catch::CaseSensitive::No )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "string" (case
+ insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Multiple" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Static arrays are convertible to string/Non-trivial inner items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="String matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Empty string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/From string literal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/From sub-string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Copy construction is shallow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Copy assignment is shallow" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/zero-based substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/non-zero-based substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Pointer values of full refs should match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Pointer values of substring refs should also match" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Past the end substring" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/Substring off the end are trimmed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Substrings/substring start after the end is empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/Comparisons are deep" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/implicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/explicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/from std::string/assigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string/explicitly constructed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/to std::string/assigned" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/std::string += StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef/StringRef + StringRef" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time/Simple constructors" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="StringRef at compilation time/UDL construction" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - signed char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying char arrays with statically known sizes - unsigned char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::duration helpers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::duration with weird ratios" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Stringifying std::chrono::time_point&lt;system_clock>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tabs and newlines show in output" time="{duration}" status="run">
+ <failure message="s1 == s2" type="CHECK">
+FAILED:
+ CHECK( s1 == s2 )
+with expansion:
+ "if ($b == 10) {
+ $a = 20;
+ }"
+ ==
+ "if ($b == 10) {
+ $a = 20;
+ }
+ "
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/The same tag alias can only be registered once" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tag alias can be registered against tag patterns/Tag aliases must be of the form [@name]" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tags with spaces and non-alphanumerical characters are accepted" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.Template_Fixture" name="Template test case method with test types specified inside std::tuple - MyTypes - 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 0" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Template test case with test types specified inside std::tuple - MyTypes - 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - float/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - int/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::string/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - float,4/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - int,5/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="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" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test case with identical tags keeps just one" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test case with one argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test enum bit values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Test with special, characters &quot;in name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Testing checked-if" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 2" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 3" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 4" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Testing checked-if 5" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <error message="{Unknown expression after the reported line}">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="The NO_FAIL macro reports a failure but does not fail the test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tags" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing reporters" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="The default listing implementation write to provided stream/Listing listeners" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="This test 'should' fail but doesn't" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Thrown string literals are translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+For some reason someone is throwing a string literal!
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Tracker" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section/re-enter after failed section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/fail one section/re-enter after failed section and find next section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/Successfully close S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/fail S2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Tracker/open a nested section" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Trim strings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types (differ in array N)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types and value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers, one random access, one not" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type/Two equal containers of different value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Value type/Two non-equal containers of different value types" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Ranges with begin that needs ADL" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Type conversions of RangeEquals and similar/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Unexpected exceptions can be translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+3.14000000000000012
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions/Move constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Upcasting special member functions/move assignment" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/Empty evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/One false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Basic usage/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/One false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Contained type is convertible to bool/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AllTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/Empty evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/One true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Basic usage/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/One true evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All false evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of AnyTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Type requires ADL found begin and end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneMatch range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/All true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/Empty evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/One true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Basic usage/All false evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/One true evaluates to false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All false evaluates to true" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting/All are read" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of NoneTrue range matcher/Shortcircuiting/Short-circuited" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Empty container matches empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Empty container does not match non-empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers (with same first elements)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Ranges that need ADL begin/end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Compare against std::initializer_list" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/Check short-circuits on failure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/All elements are checked on success" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container matches empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container does not match non-empty container" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Ranges that need ADL begin/end" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of UnorderedRangeEquals range matcher/Compare against std::initializer_list" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Some with stdlib containers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Type requires ADL found size free function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Usage of the SizeIs range matcher/Type has size member" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Use a custom approx" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Variadic macros" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Variadic macros/Section with one argument" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Empty vector is roughly equal to an empty vector" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/A vector is approx equal to itself" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/Different length" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher/Vectors with elements/Same length, different elements" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing/Empty and non empty vectors are not approx equal" time="{duration}" status="run">
+ <failure message="empty, Approx( t1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Approx( t1 ) )
+with expansion:
+ { } is approx: { 1.0, 2.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector Approx matcher -- failing/Just different vectors" time="{duration}" status="run">
+ <failure message="v1, Approx( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v1, Approx( v2 ) )
+with expansion:
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (element)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (vector)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Contains (element), composed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/Equals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers/UnorderedEquals" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Contains (element)" time="{duration}" status="run">
+ <failure message="v, VectorContains( -1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, VectorContains( -1 ) )
+with expansion:
+ { 1, 2, 3 } Contains: -1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, VectorContains( 1 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, VectorContains( 1 ) )
+with expansion:
+ { } Contains: 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Contains (vector)" time="{duration}" status="run">
+ <failure message="empty, Contains( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Contains( v ) )
+with expansion:
+ { } Contains: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v, Contains( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Contains( v2 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/Equals" time="{duration}" status="run">
+ <failure message="v, Equals( v2 )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v2, Equals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v2, Equals( v ) )
+with expansion:
+ { 1, 2 } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, Equals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, Equals( v ) )
+with expansion:
+ { } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="v, Equals( empty )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, Equals( empty ) )
+with expansion:
+ { 1, 2, 3 } Equals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="Vector matchers that fail/UnorderedEquals" time="{duration}" status="run">
+ <failure message="v, UnorderedEquals( empty )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( v, UnorderedEquals( empty ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="empty, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( empty, UnorderedEquals( v ) )
+with expansion:
+ { } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="permuted, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="permuted, UnorderedEquals( v )" type="CHECK_THAT">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When checked exceptions are thrown they can be expected or unexpected" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown directly they are always failures" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown during a CHECK the test should continue" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="CHECK">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="REQUIRE">
+FAILED:
+ REQUIRE( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from functions they are always failures" time="{duration}" status="run">
+ <error message="thisThrows() == 0" type="CHECK">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from sections they are always failures/section name" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown, but caught, they do not affect the test" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/0/a" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/0/b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/1/a" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="X/level/1/b" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/normal string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/empty string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with ampersand" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with less-than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with greater-than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with quotes" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with control char (1)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlEncode/string with control char (x7F)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="XmlWriter writes boolean attributes as true/false" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="a succeeding test can still be skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="analyse no analysis" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="array&lt;int, N> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call/without chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="benchmark function call/with chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="boolean member" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedElse" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedElse, failing" time="{duration}" status="run">
+ <failure message="testCheckedElse( false )" type="REQUIRE">
+FAILED:
+ REQUIRE( testCheckedElse( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="checkedIf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="checkedIf, failing" time="{duration}" status="run">
+ <failure message="testCheckedIf( false )" type="REQUIRE">
+FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="classify_outliers" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/none" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/low severe" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/low mild" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/high mild" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/high severe" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="classify_outliers/mixed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="comparisons between const int variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="comparisons between int variables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="convertToBits" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="dynamic skipping works with generators" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 41
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="empty tags are not allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="erfc_inv" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="estimate_clock_resolution" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c/d (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/c/e (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="even more nested SECTION tests/f (leaf)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="failed assertions before SKIP cause test case to fail" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure message="3 == 4" type="CHECK">
+FAILED:
+ CHECK( 3 == 4 )
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing for some generator values causes entire test case to fail" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing in some unskipped sections causes entire test case to fail/skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="failing in some unskipped sections causes entire test case to fail/not skipped" time="{duration}" status="run">
+ <skipped message="TEST_CASE tagged with !mayfail"/>
+ <failure type="FAIL">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="first tag" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="has printf" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="is_unary_function" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="just failure" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+Previous info should not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="just failure after unscoped info" time="{duration}" status="run">
+ <failure type="FAIL">
+FAILED:
+previous unscoped info SHOULD not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="just info" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="just unscoped info" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="long long" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 0" time="{duration}" status="run">
+ <failure message="b > a" type="CHECK">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 0 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 1" time="{duration}" status="run">
+ <failure message="b > a" type="CHECK">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 1 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 4" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 5" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 6" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 7" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 8" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped SECTION tests/b is currently: 9" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="looped tests" time="{duration}" status="run">
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[0] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[1] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[3] (3) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[4] (5) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[6] (13) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="( fib[i] % 2 ) == 0" type="CHECK">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[7] (21) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="makeStream recognizes %debug stream name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/From lvalue copies" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/From rvalue moves" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="make_unique reimplementation/Variadic constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="mean" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="measure" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="mix info, unscoped info and warning" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/equal/doesn't equal" time="{duration}" status="run">
+ <failure message="a == b" type="REQUIRE">
+FAILED:
+ REQUIRE( a == b )
+with expansion:
+ 1 == 2
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="more nested SECTION tests/doesn't equal/less than" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested SECTION tests/doesn't equal/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/A" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2/B1" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B2/B" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="nested sections can be skipped dynamically at runtime/B" time="{duration}" status="run">
+ <system-out>
+a!
+b1!
+!
+ </system-out>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="non streamable - with conv. op" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="non-copyable objects" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="normal_quantile" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="not allowed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="not prints unscoped info from previous failures" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="null strings" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="null_ptr" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/No enums" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/One enum value" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="parseEnums/Multiple enum values" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="pointer to class" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="print unscoped info if passing unscoped info is printed" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="prints unscoped info on failure" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+this SHOULD also be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="prints unscoped info only for the first assertion" time="{duration}" status="run">
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+this SHOULD be seen only ONCE
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="random SECTION tests" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="random SECTION tests/doesn't equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="random SECTION tests/not equal" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace single char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace two chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace first char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace last char" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace all chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/replace no chars" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string/lengthening" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/no replace in already-replaced string/shortening" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="replaceInPlace/escape '" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="request an unknown %-starting stream fails" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="resolution" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="run_for_at_least, chronometer" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="run_for_at_least, int" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="second tag" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/not skipped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/skipped" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="sections can be skipped dynamically at runtime/also not skipped" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="send a single char to INFO" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+3
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="sends information to INFO" time="{duration}" status="run">
+ <failure message="false" type="REQUIRE">
+FAILED:
+ REQUIRE( false )
+hi
+i := 7
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="shortened hide tags are split apart" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="skipped tests can optionally provide a reason" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="splitString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stacks unscoped info in loops" time="{duration}" status="run">
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+Count 1 to 3...
+1
+2
+3
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="false" type="CHECK">
+FAILED:
+ CHECK( false )
+Count 4 to 6...
+4
+5
+6
+at Message.tests.cpp:<line number>
+ </failure>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="startsWith" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::map is convertible string/several items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::pair&lt;int,const std::string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::pair&lt;int,std::string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/single item" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::set is convertible string/several items" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stdout and stderr streams have %-starting name" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify ranges" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_maker )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_maker_and_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_neither )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( has_template_operator )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_maker> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_maker_and_operator> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="stringify( vectors&lt;has_operator> )" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="strlen3" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tables" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tags with dots in later positions are not parsed as hidden" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tests can be skipped dynamically at runtime" time="{duration}" status="run">
+ <skipped type="SKIP">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="thrown std::strings are translated" time="{duration}" status="run">
+ <error type="TEST_CASE">
+FAILED:
+Why would you throw a std::string?
+at Exception.tests.cpp:<line number>
+ </error>
+ </testcase>
+ <testcase classname="<exe-name>.global" name="toString on const wchar_t const pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on const wchar_t pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on wchar_t const pointer returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString on wchar_t returns the string contents" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum class w/operator&lt;&lt;)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum class)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum w/operator&lt;&lt;)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="toString(enum)" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;float,int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;int>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;string,string>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="uniform samples" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="uniform_integer_distribution can return the bounds" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Default constructed unique_ptr is empty" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Plain reset deallocates" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Reset replaces ownership" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Release releases ownership" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Move constructor" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/Move assignment" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="unique_ptr reimplementation: basic functionality/free swap" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vec&lt;vec&lt;string,alloc>> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;bool> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;int,allocator> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;int> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vector&lt;string> -> toString" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing bigger changes size and capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing smaller changes size but not capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/reserving bigger changes capacity but not size" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="vectors can be sized and resized/reserving smaller does not change size or capacity" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="warmup" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="weighted_average_quantile" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck/embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" time="{duration}" status="run"/>
+ <testcase classname="<exe-name>.global" name="xmlentitycheck/encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" time="{duration}" status="run"/>
+ <system-out>
+This would not be caught previously
+A string sent directly to stdout
+Message from section one
+Message from section two
+a!
+b1!
+!
+ </system-out>
+ <system-err>
+Nor would this
+A string sent directly to stderr
+A string sent to stderr via clog
+ </system-err>
+ </testsuite>
+</testsuites>
diff --git a/tests/SelfTest/Baselines/sonarqube.sw.approved.txt b/tests/SelfTest/Baselines/sonarqube.sw.approved.txt
new file mode 100644
index 0000000..af06793
--- /dev/null
+++ b/tests/SelfTest/Baselines/sonarqube.sw.approved.txt
@@ -0,0 +1,2317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
+<testExecutions version="1"loose text artifact
+>
+ <file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
+ <testCase name="Incomplete AssertionHandler" duration="{duration}">
+ <skipped message="REQUIRE(Dummy)">
+FAILED:
+ REQUIRE( Dummy )
+Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+at AssertionHandler.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
+ <testCase name="Clara::Arg does not crash on incomplete input" duration="{duration}"/>
+ <testCase name="Clara::Arg supports single-arg parse the way Opt does" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas/Parsing fails on multiple options without accept_many" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas/Parsing succeeds on multiple options with accept_many" duration="{duration}"/>
+ <testCase name="is_unary_function" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp">
+ <testCase name="Parsing sharding-related cli flags" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/shard-count" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Negative shard count reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Zero shard count reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/shard-index" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Negative shard index reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Shard index 0 is accepted" duration="{duration}"/>
+ <testCase name="Parsing warnings" duration="{duration}"/>
+ <testCase name="Parsing warnings/NoAssertions" duration="{duration}"/>
+ <testCase name="Parsing warnings/NoTests is no longer supported" duration="{duration}"/>
+ <testCase name="Parsing warnings/Combining multiple warnings" duration="{duration}"/>
+ <testCase name="Process can be configured on command line" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/empty args don't cause a crash" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/default - no arguments" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case using" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case exclusion using exclude:" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case exclusion using ~" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/-r/console" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/-r/xml" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/--reporter/junit" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/must match one of the available ones" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/With output file" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/With Windows-like absolute path as output file" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/All with output files" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/Mixed output files and default output" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/cannot have multiple reporters with default output" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger/-b" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger/--break" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-a aborts after first failure" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-x 2 aborts after two failures" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-x must be numeric" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress/Accepted options" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress/invalid options are reported" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow/-e" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow/--nothrow" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename/-o filename" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename/--out" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/combinations" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/combinations/Single character flags can be combined" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/without option" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/auto" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/yes" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/no" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/error" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/samples" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/resamples" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/confidence-interval" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/no-analysis" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/warmup-time" duration="{duration}"/>
+ <testCase name="Test with special, characters &quot;in name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp">
+ <testCase name="ColourGuard behaviour" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard is disengaged by default" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard is engaged by op&lt;&lt;" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard can be engaged explicitly" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp">
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive" duration="{duration}"/>
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive/Degenerate cases" duration="{duration}"/>
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive/Plain comparisons" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive/Degenerate cases" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive/Plain comparisons" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp">
+ <testCase name="convertToBits" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp">
+ <testCase name="Filter generator throws exception for empty generator" duration="{duration}"/>
+ <testCase name="Generators internals" duration="{duration}"/>
+ <testCase name="Generators internals/Single value" duration="{duration}"/>
+ <testCase name="Generators internals/Preset values" duration="{duration}"/>
+ <testCase name="Generators internals/Generator combinator" duration="{duration}"/>
+ <testCase name="Generators internals/Explicitly typed generator sequence" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Simple filtering" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Filter out multiple elements at the start and end" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Throws on construction if it can't get initial element" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator/Take less" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator/Take more" duration="{duration}"/>
+ <testCase name="Generators internals/Map with explicit return type" duration="{duration}"/>
+ <testCase name="Generators internals/Map with deduced return type" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat/Singular repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat/Actual repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Range" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive auto step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive auto step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative auto step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative auto step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Slightly under end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Slightly under end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Slightly under end" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp">
+ <testCase name="analyse no analysis" duration="{duration}"/>
+ <testCase name="benchmark function call" duration="{duration}"/>
+ <testCase name="benchmark function call/without chronometer" duration="{duration}"/>
+ <testCase name="benchmark function call/with chronometer" duration="{duration}"/>
+ <testCase name="classify_outliers" duration="{duration}"/>
+ <testCase name="classify_outliers/none" duration="{duration}"/>
+ <testCase name="classify_outliers/low severe" duration="{duration}"/>
+ <testCase name="classify_outliers/low mild" duration="{duration}"/>
+ <testCase name="classify_outliers/high mild" duration="{duration}"/>
+ <testCase name="classify_outliers/high severe" duration="{duration}"/>
+ <testCase name="classify_outliers/mixed" duration="{duration}"/>
+ <testCase name="erfc_inv" duration="{duration}"/>
+ <testCase name="estimate_clock_resolution" duration="{duration}"/>
+ <testCase name="mean" duration="{duration}"/>
+ <testCase name="measure" duration="{duration}"/>
+ <testCase name="normal_quantile" duration="{duration}"/>
+ <testCase name="resolution" duration="{duration}"/>
+ <testCase name="run_for_at_least, chronometer" duration="{duration}"/>
+ <testCase name="run_for_at_least, int" duration="{duration}"/>
+ <testCase name="uniform samples" duration="{duration}"/>
+ <testCase name="warmup" duration="{duration}"/>
+ <testCase name="weighted_average_quantile" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp">
+ <testCase name="JsonWriter" duration="{duration}"/>
+ <testCase name="JsonWriter/Newly constructed JsonWriter does nothing" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeObject will create an empty pair of braces" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeObject with key will create an object to write the value" duration="{duration}"/>
+ <testCase name="JsonWriter/nesting objects" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeArray will create an empty pair of braces" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeArray creates array to write the values to" duration="{duration}"/>
+ <testCase name="JsonWriter/Moved from JsonObjectWriter shall not insert superfluous brace" duration="{duration}"/>
+ <testCase name="JsonWriter/Moved from JsonArrayWriter shall not insert superfluous bracket" duration="{duration}"/>
+ <testCase name="JsonWriter/Custom class shall be quoted" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Quote in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Backslash in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Forward slash in a string is **not** escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Backspace in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Formfeed in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/linefeed in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/carriage return in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/tab in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/combination of characters is escaped" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp">
+ <testCase name="Parse uints" duration="{duration}"/>
+ <testCase name="Parse uints/proper inputs" duration="{duration}"/>
+ <testCase name="Parse uints/Bad inputs" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp">
+ <testCase name="#1938 - GENERATE after a section" duration="{duration}"/>
+ <testCase name="#1938 - GENERATE after a section/A" duration="{duration}"/>
+ <testCase name="#1938 - GENERATE after a section/B" duration="{duration}"/>
+ <testCase name="#1938 - Section followed by flat generate" duration="{duration}"/>
+ <testCase name="#1938 - Section followed by flat generate/A" duration="{duration}"/>
+ <testCase name="#1938 - flat generate" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates/A" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates/B" duration="{duration}"/>
+ <testCase name="#1938 - nested generate" duration="{duration}"/>
+ <testCase name="Tracker" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section/re-enter after failed section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section/re-enter after failed section and find next section" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/Successfully close S2" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/fail S2" duration="{duration}"/>
+ <testCase name="Tracker/open a nested section" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp">
+ <testCase name="Comparison ops" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds/Default seeded" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds/Specific seed" duration="{duration}"/>
+ <testCase name="Random seed generation accepts known methods" duration="{duration}"/>
+ <testCase name="Random seed generation reports unknown methods" duration="{duration}"/>
+ <testCase name="uniform_integer_distribution can return the bounds" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp">
+ <testCase name="Multireporter calls reporters and listeners in correct order" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly/Adding listeners" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly/Adding reporters" duration="{duration}"/>
+ <testCase name="Registering reporter with '::' in name fails" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists tests" duration="{duration}"/>
+ <testCase name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing tags" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing reporters" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing tests" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing listeners" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp">
+ <testCase name="Cout stream properly declares it writes to stdout" duration="{duration}"/>
+ <testCase name="Empty stream name opens cout stream" duration="{duration}"/>
+ <testCase name="makeStream recognizes %debug stream name" duration="{duration}"/>
+ <testCase name="request an unknown %-starting stream fails" duration="{duration}"/>
+ <testCase name="stdout and stderr streams have %-starting name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/String.tests.cpp">
+ <testCase name="StringRef" duration="{duration}"/>
+ <testCase name="StringRef/Empty string" duration="{duration}"/>
+ <testCase name="StringRef/From string literal" duration="{duration}"/>
+ <testCase name="StringRef/From sub-string" duration="{duration}"/>
+ <testCase name="StringRef/Copy construction is shallow" duration="{duration}"/>
+ <testCase name="StringRef/Copy assignment is shallow" duration="{duration}"/>
+ <testCase name="StringRef/Substrings" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/zero-based substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/non-zero-based substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Pointer values of full refs should match" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Pointer values of substring refs should also match" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Past the end substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Substring off the end are trimmed" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/substring start after the end is empty" duration="{duration}"/>
+ <testCase name="StringRef/Comparisons are deep" duration="{duration}"/>
+ <testCase name="StringRef/from std::string" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/implicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/explicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/assigned" duration="{duration}"/>
+ <testCase name="StringRef/to std::string" duration="{duration}"/>
+ <testCase name="StringRef/to std::string/explicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/to std::string/assigned" duration="{duration}"/>
+ <testCase name="StringRef/std::string += StringRef" duration="{duration}"/>
+ <testCase name="StringRef/StringRef + StringRef" duration="{duration}"/>
+ <testCase name="StringRef at compilation time" duration="{duration}"/>
+ <testCase name="StringRef at compilation time/Simple constructors" duration="{duration}"/>
+ <testCase name="StringRef at compilation time/UDL construction" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp">
+ <testCase name="Trim strings" duration="{duration}"/>
+ <testCase name="replaceInPlace" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace single char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace two chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace first char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace last char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace all chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace no chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string/lengthening" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string/shortening" duration="{duration}"/>
+ <testCase name="replaceInPlace/escape '" duration="{duration}"/>
+ <testCase name="splitString" duration="{duration}"/>
+ <testCase name="startsWith" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp">
+ <testCase name="Tag alias can be registered against tag patterns" duration="{duration}"/>
+ <testCase name="Tag alias can be registered against tag patterns/The same tag alias can only be registered once" duration="{duration}"/>
+ <testCase name="Tag alias can be registered against tag patterns/Tag aliases must be of the form [@name]" duration="{duration}"/>
+ <testCase name="Tags with spaces and non-alphanumerical characters are accepted" duration="{duration}"/>
+ <testCase name="Test case with identical tags keeps just one" duration="{duration}"/>
+ <testCase name="empty tags are not allowed" duration="{duration}"/>
+ <testCase name="shortened hide tags are split apart" duration="{duration}"/>
+ <testCase name="tags with dots in later positions are not parsed as hidden" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp">
+ <testCase name="Hashers with different seed produce different hash with same test case" duration="{duration}"/>
+ <testCase name="Hashers with same seed produce same hash" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different test name" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different classname" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different tags" duration="{duration}"/>
+ <testCase name="Hashing test case produces same hash across multiple calls" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp">
+ <testCase name="#1905 -- test spec parser properly clears internal state between compound tests" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping/Various parentheses" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping/backslash in test name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp">
+ <testCase name="Parsed tags are matched case insensitive" duration="{duration}"/>
+ <testCase name="Parsing tags with non-alphabetical characters is pass-through" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp">
+ <testCase name="Directly creating an EnumInfo" duration="{duration}"/>
+ <testCase name="Range type with sentinel" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - char" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - signed char" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - unsigned char" duration="{duration}"/>
+ <testCase name="parseEnums" duration="{duration}"/>
+ <testCase name="parseEnums/No enums" duration="{duration}"/>
+ <testCase name="parseEnums/One enum value" duration="{duration}"/>
+ <testCase name="parseEnums/Multiple enum values" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp">
+ <testCase name="Upcasting special member functions" duration="{duration}"/>
+ <testCase name="Upcasting special member functions/Move constructor" duration="{duration}"/>
+ <testCase name="Upcasting special member functions/move assignment" duration="{duration}"/>
+ <testCase name="make_unique reimplementation" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/From lvalue copies" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/From rvalue moves" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/Variadic constructor" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Default constructed unique_ptr is empty" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Plain reset deallocates" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Reset replaces ownership" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Release releases ownership" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Move constructor" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Move assignment" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/free swap" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp">
+ <testCase name="XmlEncode" duration="{duration}"/>
+ <testCase name="XmlEncode/normal string" duration="{duration}"/>
+ <testCase name="XmlEncode/empty string" duration="{duration}"/>
+ <testCase name="XmlEncode/string with ampersand" duration="{duration}"/>
+ <testCase name="XmlEncode/string with less-than" duration="{duration}"/>
+ <testCase name="XmlEncode/string with greater-than" duration="{duration}"/>
+ <testCase name="XmlEncode/string with quotes" duration="{duration}"/>
+ <testCase name="XmlEncode/string with control char (1)" duration="{duration}"/>
+ <testCase name="XmlEncode/string with control char (x7F)" duration="{duration}"/>
+ <testCase name="XmlWriter writes boolean attributes as true/false" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Approx.tests.cpp">
+ <testCase name="A comparison that uses literals instead of the normal constructor" duration="{duration}"/>
+ <testCase name="Absolute margin" duration="{duration}"/>
+ <testCase name="Approx setters validate their arguments" duration="{duration}"/>
+ <testCase name="Approx with exactly-representable margin" duration="{duration}"/>
+ <testCase name="Approximate PI" duration="{duration}"/>
+ <testCase name="Approximate comparisons with different epsilons" duration="{duration}"/>
+ <testCase name="Approximate comparisons with floats" duration="{duration}"/>
+ <testCase name="Approximate comparisons with ints" duration="{duration}"/>
+ <testCase name="Approximate comparisons with mixed numeric types" duration="{duration}"/>
+ <testCase name="Comparison with explicitly convertible types" duration="{duration}"/>
+ <testCase name="Default scale is invisible to comparison" duration="{duration}"/>
+ <testCase name="Epsilon only applies to Approx's value" duration="{duration}"/>
+ <testCase name="Greater-than inequalities with different epsilons" duration="{duration}"/>
+ <testCase name="Less-than inequalities with different epsilons" duration="{duration}"/>
+ <testCase name="Some simple comparisons between doubles" duration="{duration}"/>
+ <testCase name="Use a custom approx" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/BDD.tests.cpp">
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" duration="{duration}"/>
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me" duration="{duration}"/>
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me/When: We get the count" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger/Then: the size and capacity go up" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: we reserve more space" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Class.tests.cpp">
+ <testCase name="A METHOD_AS_TEST_CASE based test run that fails" duration="{duration}">
+ <failure message="REQUIRE(s == &quot;world&quot;)">
+FAILED:
+ REQUIRE( s == "world" )
+with expansion:
+ "hello" == "world"
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A METHOD_AS_TEST_CASE based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0f == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 3 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 6 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" duration="{duration}"/>
+ <testCase name="A TEST_CASE_METHOD based test run that fails" duration="{duration}">
+ <failure message="REQUIRE(m_a == 2)">
+FAILED:
+ REQUIRE( m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEST_CASE_METHOD based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/First partial run" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/Second partial run" duration="{duration}">
+ <failure message="REQUIRE(m_a == 0)">
+FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/First partial run" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/Second partial run" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 2" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Compilation.tests.cpp">
+ <testCase name="#1027: Bitfields can be captured" duration="{duration}"/>
+ <testCase name="#1147" duration="{duration}"/>
+ <testCase name="#1238" duration="{duration}"/>
+ <testCase name="#1245" duration="{duration}"/>
+ <testCase name="#1319: Sections can have description (even if it is not saved" duration="{duration}"/>
+ <testCase name="#1319: Sections can have description (even if it is not saved/SectionName" duration="{duration}"/>
+ <testCase name="#1403" duration="{duration}"/>
+ <testCase name="#1548" duration="{duration}"/>
+ <testCase name="#809" duration="{duration}"/>
+ <testCase name="#833" duration="{duration}"/>
+ <testCase name="#872" duration="{duration}"/>
+ <testCase name="Assertion macros support bit operators and bool conversions" duration="{duration}"/>
+ <testCase name="Lambdas in assertions" duration="{duration}"/>
+ <testCase name="Optionally static assertions" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Condition.tests.cpp">
+ <testCase name="'Not' checks that should fail" duration="{duration}">
+ <failure message="CHECK(false != false)">
+FAILED:
+ CHECK( false != false )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(true != true)">
+FAILED:
+ CHECK( true != true )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!true)">
+FAILED:
+ CHECK( !true )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(true))">
+FAILED:
+ CHECK_FALSE( true )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!trueValue)">
+FAILED:
+ CHECK( !trueValue )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(trueValue))">
+FAILED:
+ CHECK_FALSE( trueValue )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!(1 == 1))">
+FAILED:
+ CHECK( !(1 == 1) )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(1 == 1))">
+FAILED:
+ CHECK_FALSE( 1 == 1 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="'Not' checks that should succeed" duration="{duration}"/>
+ <testCase name="Comparisons between ints where one side is computed" duration="{duration}"/>
+ <testCase name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" duration="{duration}"/>
+ <testCase name="Comparisons with int literals don't warn when mixing signed/ unsigned" duration="{duration}"/>
+ <testCase name="Equality checks that should fail" duration="{duration}">
+ <skipped message="CHECK(data.int_seven == 6)">
+FAILED:
+ CHECK( data.int_seven == 6 )
+with expansion:
+ 7 == 6
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.int_seven == 8)">
+FAILED:
+ CHECK( data.int_seven == 8 )
+with expansion:
+ 7 == 8
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.int_seven == 0)">
+FAILED:
+ CHECK( data.int_seven == 0 )
+with expansion:
+ 7 == 0
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 9.11f ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.11f ) )
+with expansion:
+ 9.100000381f
+==
+Approx( 9.10999965667724609 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 9.0f ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 1 ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 0 ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.double_pi == Approx( 3.1415 ))">
+FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;goodbye&quot;)">
+FAILED:
+ CHECK( data.str_hello == "goodbye" )
+with expansion:
+ "hello" == "goodbye"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;hell&quot;)">
+FAILED:
+ CHECK( data.str_hello == "hell" )
+with expansion:
+ "hello" == "hell"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;hello1&quot;)">
+FAILED:
+ CHECK( data.str_hello == "hello1" )
+with expansion:
+ "hello" == "hello1"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello.size() == 6)">
+FAILED:
+ CHECK( data.str_hello.size() == 6 )
+with expansion:
+ 5 == 6
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(x == Approx( 1.301 ))">
+FAILED:
+ CHECK( x == Approx( 1.301 ) )
+with expansion:
+ 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Equality checks that should succeed" duration="{duration}"/>
+ <testCase name="Inequality checks that should fail" duration="{duration}">
+ <skipped message="CHECK(data.int_seven != 7)">
+FAILED:
+ CHECK( data.int_seven != 7 )
+with expansion:
+ 7 != 7
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one != Approx( 9.1f ))">
+FAILED:
+ CHECK( data.float_nine_point_one != Approx( 9.1f ) )
+with expansion:
+ 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.double_pi != Approx( 3.1415926535 ))">
+FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello != &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello != "hello" )
+with expansion:
+ "hello" != "hello"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello.size() != 5)">
+FAILED:
+ CHECK( data.str_hello.size() != 5 )
+with expansion:
+ 5 != 5
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Inequality checks that should succeed" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1/A" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/2" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/2/A" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/1" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1/B" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/2" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/2/B" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Ordering comparison checks that should fail" duration="{duration}">
+ <failure message="CHECK(data.int_seven > 7)">
+FAILED:
+ CHECK( data.int_seven > 7 )
+with expansion:
+ 7 > 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 7)">
+FAILED:
+ CHECK( data.int_seven &lt; 7 )
+with expansion:
+ 7 &lt; 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven > 8)">
+FAILED:
+ CHECK( data.int_seven > 8 )
+with expansion:
+ 7 > 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 6)">
+FAILED:
+ CHECK( data.int_seven &lt; 6 )
+with expansion:
+ 7 &lt; 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 0)">
+FAILED:
+ CHECK( data.int_seven &lt; 0 )
+with expansion:
+ 7 &lt; 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; -1)">
+FAILED:
+ CHECK( data.int_seven &lt; -1 )
+with expansion:
+ 7 &lt; -1
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven >= 8)">
+FAILED:
+ CHECK( data.int_seven >= 8 )
+with expansion:
+ 7 >= 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt;= 6)">
+FAILED:
+ CHECK( data.int_seven &lt;= 6 )
+with expansion:
+ 7 &lt;= 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one &lt; 9)">
+FAILED:
+ CHECK( data.float_nine_point_one &lt; 9 )
+with expansion:
+ 9.100000381f &lt; 9
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one > 10)">
+FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one > 9.2)">
+FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello > "hello" )
+with expansion:
+ "hello" > "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "hello" )
+with expansion:
+ "hello" &lt; "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;hellp&quot;)">
+FAILED:
+ CHECK( data.str_hello > "hellp" )
+with expansion:
+ "hello" > "hellp"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;z&quot;)">
+FAILED:
+ CHECK( data.str_hello > "z" )
+with expansion:
+ "hello" > "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;hellm&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "hellm" )
+with expansion:
+ "hello" &lt; "hellm"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;a&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "a" )
+with expansion:
+ "hello" &lt; "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello >= &quot;z&quot;)">
+FAILED:
+ CHECK( data.str_hello >= "z" )
+with expansion:
+ "hello" >= "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt;= &quot;a&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt;= "a" )
+with expansion:
+ "hello" &lt;= "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Ordering comparison checks that should succeed" duration="{duration}"/>
+ <testCase name="Pointers can be compared to null" duration="{duration}"/>
+ <testCase name="comparisons between const int variables" duration="{duration}"/>
+ <testCase name="comparisons between int variables" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Decomposition.tests.cpp">
+ <testCase name="Reconstruction should be based on stringification: #914" duration="{duration}">
+ <failure message="CHECK(truthy(false))">
+FAILED:
+ CHECK( truthy(false) )
+with expansion:
+ Hey, its truthy!
+at Decomposition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/EnumToString.tests.cpp">
+ <testCase name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" duration="{duration}"/>
+ <testCase name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" duration="{duration}"/>
+ <testCase name="toString(enum class w/operator&lt;&lt;)" duration="{duration}"/>
+ <testCase name="toString(enum class)" duration="{duration}"/>
+ <testCase name="toString(enum w/operator&lt;&lt;)" duration="{duration}"/>
+ <testCase name="toString(enum)" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Exception.tests.cpp">
+ <testCase name="#748 - captures with unexpected exceptions" duration="{duration}"/>
+ <testCase name="#748 - captures with unexpected exceptions/outside assertions" duration="{duration}">
+ <skipped message="TEST_CASE()">
+FAILED:
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#748 - captures with unexpected exceptions/inside REQUIRE_NOTHROW" duration="{duration}">
+ <skipped message="REQUIRE_NOTHROW(thisThrows())">
+FAILED:
+ REQUIRE_NOTHROW( thisThrows() )
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#748 - captures with unexpected exceptions/inside REQUIRE_THROWS" duration="{duration}"/>
+ <testCase name="An unchecked exception reports the line of the last assertion" duration="{duration}">
+ <error message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom exceptions can be translated when testing for nothrow" duration="{duration}">
+ <error message="REQUIRE_NOTHROW(throwCustom())">
+FAILED:
+ REQUIRE_NOTHROW( throwCustom() )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom exceptions can be translated when testing for throwing as something else" duration="{duration}">
+ <error message="REQUIRE_THROWS_AS(throwCustom(), std::exception)">
+FAILED:
+ REQUIRE_THROWS_AS( throwCustom(), std::exception )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom std-exceptions can be custom translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+custom std exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Exception messages can be tested for" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/exact match" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/different case" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/wildcarded" duration="{duration}"/>
+ <testCase name="Expected exceptions that don't throw or unexpected exceptions fail the test" duration="{duration}">
+ <error message="CHECK_THROWS_AS(thisThrows(), std::string)">
+FAILED:
+ CHECK_THROWS_AS( thisThrows(), std::string )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ <failure message="CHECK_THROWS_AS(thisDoesntThrow(), std::domain_error)">
+FAILED:
+ CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
+at Exception.tests.cpp:<line number>
+ </failure>
+ <error message="CHECK_NOTHROW(thisThrows())">
+FAILED:
+ CHECK_NOTHROW( thisThrows() )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Mismatching exception messages failing the test" duration="{duration}">
+ <failure message="REQUIRE_THROWS_WITH(thisThrows(), &quot;should fail&quot;)">
+FAILED:
+ REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
+with expansion:
+ "expected exception" equals: "should fail"
+at Exception.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Non-std exceptions can be translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+custom exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Thrown string literals are translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+For some reason someone is throwing a string literal!
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Unexpected exceptions can be translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+3.14000000000000012
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When checked exceptions are thrown they can be expected or unexpected" duration="{duration}"/>
+ <testCase name="When unchecked exceptions are thrown directly they are always failures" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown during a CHECK the test should continue" duration="{duration}">
+ <error message="CHECK(thisThrows() == 0)">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" duration="{duration}">
+ <error message="REQUIRE(thisThrows() == 0)">
+FAILED:
+ REQUIRE( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown from functions they are always failures" duration="{duration}">
+ <error message="CHECK(thisThrows() == 0)">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown from sections they are always failures/section name" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" duration="{duration}"/>
+ <testCase name="thrown std::strings are translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+Why would you throw a std::string?
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Generators.tests.cpp">
+ <testCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" duration="{duration}"/>
+ <testCase name="#1913 - GENERATEs can share a line" duration="{duration}"/>
+ <testCase name="#2615 - Throwing in constructor generator fails test case but does not abort" duration="{duration}">
+ <skipped message="TEST_CASE()">
+FAILED:
+failure to init
+at Generators.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="3x3x3 ints" duration="{duration}"/>
+ <testCase name="Copy and then generate a range" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/from var and iterators" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/From a temporary container" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/Final validation" duration="{duration}"/>
+ <testCase name="GENERATE can combine literals and generators" duration="{duration}"/>
+ <testCase name="Generators -- adapters" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate/Basic usage" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate/Throws if there are no matching values" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Shortening a range" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Same type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Different type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Different deduced type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Repeating a generator" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is divisible by chunk size" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is not divisible by chunk size" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Chunk size of zero" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Throws on too small generators" duration="{duration}"/>
+ <testCase name="Generators -- simple" duration="{duration}"/>
+ <testCase name="Generators -- simple/one" duration="{duration}"/>
+ <testCase name="Generators -- simple/two" duration="{duration}"/>
+ <testCase name="Nested generators and captured variables" duration="{duration}"/>
+ <testCase name="strlen3" duration="{duration}"/>
+ <testCase name="tables" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Matchers.tests.cpp">
+ <testCase name="#2152 - ULP checks between differently signed values were wrong - double" duration="{duration}"/>
+ <testCase name="#2152 - ULP checks between differently signed values were wrong - float" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher/Function pointer" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher/Lambdas + different type" duration="{duration}"/>
+ <testCase name="Combining MatchAllOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining MatchAnyOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining MatchNotOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining concrete matchers does not use templated matchers" duration="{duration}"/>
+ <testCase name="Combining only templated matchers" duration="{duration}"/>
+ <testCase name="Combining templated and concrete matchers" duration="{duration}"/>
+ <testCase name="Combining templated matchers" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit/MatchAllOf" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit/MatchAnyOf" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit/MatchAllOf" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit/MatchAnyOf" duration="{duration}"/>
+ <testCase name="Contains string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), ContainsSubstring( &quot;not there&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), ContainsSubstring( &quot;STRING&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="EndsWith string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), EndsWith( &quot;Substring&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "Substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), EndsWith( &quot;this&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Equals" duration="{duration}"/>
+ <testCase name="Equals string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), Equals( &quot;this string contains 'ABC' as a substring&quot; ))">
+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"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Equals( &quot;something else&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that fail/No exception" duration="{duration}">
+ <failure message="CHECK_THROWS_MATCHES(doesNotThrow(), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="REQUIRE_THROWS_MATCHES(doesNotThrow(), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that fail/Type mismatch" duration="{duration}">
+ <error message="CHECK_THROWS_MATCHES(throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ <error message="REQUIRE_THROWS_MATCHES(throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Exception matchers that fail/Contents are wrong" duration="{duration}">
+ <failure message="CHECK_THROWS_MATCHES(throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="REQUIRE_THROWS_MATCHES(throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that succeed" duration="{duration}"/>
+ <testCase name="Exception message can be matched" duration="{duration}"/>
+ <testCase name="Exceptions matchers" duration="{duration}"/>
+ <testCase name="Floating point matchers: double" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Relative" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Relative/Some subnormal values" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Margin" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/ULPs" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Composed" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Constructor validation" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/IsNaN" duration="{duration}"/>
+ <testCase name="Floating point matchers: float" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Relative" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Relative/Some subnormal values" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Margin" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/ULPs" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Composed" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Constructor validation" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/IsNaN" duration="{duration}"/>
+ <testCase name="Matchers can be (AllOf) composed with the &amp;&amp; operator" duration="{duration}"/>
+ <testCase name="Matchers can be (AnyOf) composed with the || operator" duration="{duration}"/>
+ <testCase name="Matchers can be composed with both &amp;&amp; and ||" duration="{duration}"/>
+ <testCase name="Matchers can be composed with both &amp;&amp; and || - failing" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), ( ContainsSubstring( &quot;string&quot; ) || ContainsSubstring( &quot;different&quot; ) ) &amp;&amp; ContainsSubstring( &quot;random&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Matchers can be negated (Not) with the ! operator" duration="{duration}"/>
+ <testCase name="Matchers can be negated (Not) with the ! operator - failing" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), !ContainsSubstring( &quot;substring&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Overloaded comma or address-of operators are not used" duration="{duration}"/>
+ <testCase name="Predicate matcher can accept const char*" duration="{duration}"/>
+ <testCase name="Regex string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;this STRING contains 'abc' as a substring&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;contains 'abc' as a substring&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;this string contains 'abc' as a&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Regression test #1" duration="{duration}"/>
+ <testCase name="StartsWith string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), StartsWith( &quot;This String&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "This String"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), StartsWith( &quot;string&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="String matchers" duration="{duration}"/>
+ <testCase name="Vector Approx matcher" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Empty vector is roughly equal to an empty vector" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/A vector is approx equal to itself" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/Different length" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/Same length, different elements" duration="{duration}"/>
+ <testCase name="Vector Approx matcher -- failing" duration="{duration}"/>
+ <testCase name="Vector Approx matcher -- failing/Empty and non empty vectors are not approx equal" duration="{duration}">
+ <failure message="CHECK_THAT(empty, Approx( t1 ))">
+FAILED:
+ CHECK_THAT( empty, Approx( t1 ) )
+with expansion:
+ { } is approx: { 1.0, 2.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector Approx matcher -- failing/Just different vectors" duration="{duration}">
+ <failure message="CHECK_THAT(v1, Approx( v2 ))">
+FAILED:
+ CHECK_THAT( v1, Approx( v2 ) )
+with expansion:
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (element)" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (vector)" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (element), composed" duration="{duration}"/>
+ <testCase name="Vector matchers/Equals" duration="{duration}"/>
+ <testCase name="Vector matchers/UnorderedEquals" duration="{duration}"/>
+ <testCase name="Vector matchers that fail" duration="{duration}"/>
+ <testCase name="Vector matchers that fail/Contains (element)" duration="{duration}">
+ <failure message="CHECK_THAT(v, VectorContains( -1 ))">
+FAILED:
+ CHECK_THAT( v, VectorContains( -1 ) )
+with expansion:
+ { 1, 2, 3 } Contains: -1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, VectorContains( 1 ))">
+FAILED:
+ CHECK_THAT( empty, VectorContains( 1 ) )
+with expansion:
+ { } Contains: 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/Contains (vector)" duration="{duration}">
+ <failure message="CHECK_THAT(empty, Contains( v ))">
+FAILED:
+ CHECK_THAT( empty, Contains( v ) )
+with expansion:
+ { } Contains: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v, Contains( v2 ))">
+FAILED:
+ CHECK_THAT( v, Contains( v2 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/Equals" duration="{duration}">
+ <failure message="CHECK_THAT(v, Equals( v2 ))">
+FAILED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v2, Equals( v ))">
+FAILED:
+ CHECK_THAT( v2, Equals( v ) )
+with expansion:
+ { 1, 2 } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, Equals( v ))">
+FAILED:
+ CHECK_THAT( empty, Equals( v ) )
+with expansion:
+ { } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v, Equals( empty ))">
+FAILED:
+ CHECK_THAT( v, Equals( empty ) )
+with expansion:
+ { 1, 2, 3 } Equals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/UnorderedEquals" duration="{duration}">
+ <failure message="CHECK_THAT(v, UnorderedEquals( empty ))">
+FAILED:
+ CHECK_THAT( v, UnorderedEquals( empty ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( empty, UnorderedEquals( v ) )
+with expansion:
+ { } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(permuted, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(permuted, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp">
+ <testCase name="Basic use of the Contains range matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different argument ranges, same element type, default comparison" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different argument ranges, same element type, custom comparison" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different element type, custom comparisons" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Can handle type that requires ADL-found free function begin and end" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Initialization with move only types" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Matching using matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Simple, std-provided containers" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Type with empty" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Type requires ADL found empty free function" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types (differ in array N)" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types and value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers, one random access, one not" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type/Two equal containers of different value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type/Two non-equal containers of different value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Ranges with begin that needs ADL" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Custom predicate" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/Empty evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/One false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/One false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/Empty evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/One true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/One true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/All true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/Empty evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/One true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/All false evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/One true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All false evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Empty container matches empty container" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Empty container does not match non-empty container" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers (with same first elements)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Ranges that need ADL begin/end" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Compare against std::initializer_list" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/Check short-circuits on failure" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/All elements are checked on success" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container matches empty container" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container does not match non-empty container" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Ranges that need ADL begin/end" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Compare against std::initializer_list" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Some with stdlib containers" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Type requires ADL found size free function" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Type has size member" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Message.tests.cpp">
+ <testCase name="#1455 - INFO and WARN can start with a linebreak" duration="{duration}"/>
+ <testCase name="CAPTURE can deal with complex expressions" duration="{duration}"/>
+ <testCase name="CAPTURE can deal with complex expressions involving commas" duration="{duration}"/>
+ <testCase name="CAPTURE parses string and character constants" duration="{duration}"/>
+ <testCase name="FAIL aborts the test" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="FAIL does not require an argument" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="FAIL_CHECK does not abort the test" duration="{duration}">
+ <failure message="FAIL_CHECK()">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO and UNSCOPED_INFO can stream multiple arguments" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Show infos!
+This info has multiple parts.
+This unscoped info has multiple parts.
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO and WARN do not abort tests" duration="{duration}"/>
+ <testCase name="INFO gets logged on failure" duration="{duration}">
+ <failure message="REQUIRE(a == 1)">
+FAILED:
+ REQUIRE( a == 1 )
+with expansion:
+ 2 == 1
+this message should be logged
+so should this
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO gets logged on failure, even if captured before successful assertions" duration="{duration}">
+ <failure message="CHECK(a == 1)">
+FAILED:
+ CHECK( a == 1 )
+with expansion:
+ 2 == 1
+this message may be logged later
+this message should be logged
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(a == 0)">
+FAILED:
+ CHECK( a == 0 )
+with expansion:
+ 2 == 0
+this message may be logged later
+this message should be logged
+and this, but later
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO is reset for each loop" duration="{duration}">
+ <failure message="REQUIRE(i &lt; 10)">
+FAILED:
+ REQUIRE( i &lt; 10 )
+with expansion:
+ 10 &lt; 10
+current counter 10
+i := 10
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Output from all sections is reported/one" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Message from section one
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Output from all sections is reported/two" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Message from section two
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="SUCCEED counts as a test pass" duration="{duration}"/>
+ <testCase name="SUCCEED does not require an argument" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported/one" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported/two" duration="{duration}"/>
+ <testCase name="The NO_FAIL macro reports a failure but does not fail the test" duration="{duration}"/>
+ <testCase name="just failure" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Previous info should not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="just failure after unscoped info" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+previous unscoped info SHOULD not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="just info" duration="{duration}"/>
+ <testCase name="just unscoped info" duration="{duration}"/>
+ <testCase name="mix info, unscoped info and warning" duration="{duration}"/>
+ <testCase name="not prints unscoped info from previous failures" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="print unscoped info if passing unscoped info is printed" duration="{duration}"/>
+ <testCase name="prints unscoped info on failure" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+this SHOULD also be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="prints unscoped info only for the first assertion" duration="{duration}">
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+this SHOULD be seen only ONCE
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="sends information to INFO" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+hi
+i := 7
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="stacks unscoped info in loops" duration="{duration}">
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+Count 1 to 3...
+1
+2
+3
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+Count 4 to 6...
+4
+5
+6
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Misc.tests.cpp">
+ <testCase name="# A test name that starts with a #" duration="{duration}"/>
+ <testCase name="#1175 - Hidden Test" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#835 -- errno should not be touched by Catch2" duration="{duration}">
+ <skipped message="CHECK(f() == 0)">
+FAILED:
+ CHECK( f() == 0 )
+with expansion:
+ 1 == 0
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#961 -- Dynamically created sections should all be reported" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 0" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 1" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 2" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 3" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 4" duration="{duration}"/>
+ <testCase name="A Template product test case - Foo&lt;float>" duration="{duration}"/>
+ <testCase name="A Template product test case - Foo&lt;int>" duration="{duration}"/>
+ <testCase name="A Template product test case - std::vector&lt;float>" duration="{duration}"/>
+ <testCase name="A Template product test case - std::vector&lt;int>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - Bar&lt;float, 42>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - Bar&lt;int, 9>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - std::array&lt;float, 42>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - std::array&lt;int, 9>" duration="{duration}"/>
+ <testCase name="A couple of nested sections followed by a failure" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+to infinity and beyond
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A couple of nested sections followed by a failure/Outer" duration="{duration}"/>
+ <testCase name="A couple of nested sections followed by a failure/Outer/Inner" duration="{duration}"/>
+ <testCase name="An empty test with no assertions" duration="{duration}"/>
+ <testCase name="Factorials are computed" duration="{duration}"/>
+ <testCase name="ManuallyRegistered" duration="{duration}"/>
+ <testCase name="Nice descriptive name" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int, double, float>" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int, double>" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int>" duration="{duration}"/>
+ <testCase name="Sends stuff to stdout and stderr" duration="{duration}"/>
+ <testCase name="Tabs and newlines show in output" duration="{duration}">
+ <failure message="CHECK(s1 == s2)">
+FAILED:
+ CHECK( s1 == s2 )
+with expansion:
+ "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 2" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="Testing checked-if" duration="{duration}"/>
+ <testCase name="Testing checked-if 2" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 3" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 4" duration="{duration}">
+ <skipped message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 5" duration="{duration}">
+ <skipped message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="This test 'should' fail but doesn't" duration="{duration}"/>
+ <testCase name="checkedElse" duration="{duration}"/>
+ <testCase name="checkedElse, failing" duration="{duration}">
+ <failure message="REQUIRE(testCheckedElse( false ))">
+FAILED:
+ REQUIRE( testCheckedElse( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="checkedIf" duration="{duration}"/>
+ <testCase name="checkedIf, failing" duration="{duration}">
+ <failure message="REQUIRE(testCheckedIf( false ))">
+FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="even more nested SECTION tests" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c/d (leaf)" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c/e (leaf)" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/f (leaf)" duration="{duration}"/>
+ <testCase name="first tag" duration="{duration}"/>
+ <testCase name="long long" duration="{duration}"/>
+ <testCase name="looped SECTION tests" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 0" duration="{duration}">
+ <failure message="CHECK(b > a)">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 0 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="looped SECTION tests/b is currently: 1" duration="{duration}">
+ <failure message="CHECK(b > a)">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 1 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="looped SECTION tests/b is currently: 2" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 3" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 4" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 5" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 6" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 7" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 8" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 9" duration="{duration}"/>
+ <testCase name="looped tests" duration="{duration}">
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[0] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[1] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[3] (3) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[4] (5) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[6] (13) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[7] (21) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="more nested SECTION tests" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/equal/doesn't equal" duration="{duration}">
+ <failure message="REQUIRE(a == b)">
+FAILED:
+ REQUIRE( a == b )
+with expansion:
+ 1 == 2
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="more nested SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/doesn't equal/not equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/doesn't equal/less than" duration="{duration}"/>
+ <testCase name="nested SECTION tests" duration="{duration}"/>
+ <testCase name="nested SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="nested SECTION tests/doesn't equal/not equal" duration="{duration}"/>
+ <testCase name="not allowed" duration="{duration}"/>
+ <testCase name="null strings" duration="{duration}"/>
+ <testCase name="random SECTION tests" duration="{duration}"/>
+ <testCase name="random SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="random SECTION tests/not equal" duration="{duration}"/>
+ <testCase name="second tag" duration="{duration}"/>
+ <testCase name="send a single char to INFO" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+3
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="toString on const wchar_t const pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on const wchar_t pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on wchar_t const pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on wchar_t returns the string contents" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="xmlentitycheck" duration="{duration}"/>
+ <testCase name="xmlentitycheck/embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" duration="{duration}"/>
+ <testCase name="xmlentitycheck/encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Skip.tests.cpp">
+ <testCase name="Empty generators can SKIP in constructor" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+This generator is empty
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="a succeeding test can still be skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="dynamic skipping works with generators" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 41
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failed assertions before SKIP cause test case to fail" duration="{duration}">
+ <skipped message="CHECK(3 == 4)">
+FAILED:
+ CHECK( 3 == 4 )
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing for some generator values causes entire test case to fail" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing in some unskipped sections causes entire test case to fail/skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing in some unskipped sections causes entire test case to fail/not skipped" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="nested sections can be skipped dynamically at runtime/A" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2/B1" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2/B" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="nested sections can be skipped dynamically at runtime/B" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime/not skipped" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime/skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="sections can be skipped dynamically at runtime/also not skipped" duration="{duration}"/>
+ <testCase name="skipped tests can optionally provide a reason" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="tests can be skipped dynamically at runtime" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp">
+ <testCase name="Stringifying std::chrono::duration helpers" duration="{duration}"/>
+ <testCase name="Stringifying std::chrono::duration with weird ratios" duration="{duration}"/>
+ <testCase name="Stringifying std::chrono::time_point&lt;system_clock>" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp">
+ <testCase name="Capture and info messages" duration="{duration}"/>
+ <testCase name="Capture and info messages/Capture should stringify like assertions" duration="{duration}"/>
+ <testCase name="Capture and info messages/Info should NOT stringify the way assertions do" duration="{duration}"/>
+ <testCase name="Character pretty printing" duration="{duration}"/>
+ <testCase name="Character pretty printing/Specifically escaped" duration="{duration}"/>
+ <testCase name="Character pretty printing/General chars" duration="{duration}"/>
+ <testCase name="Character pretty printing/Low ASCII" duration="{duration}"/>
+ <testCase name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set/Floats" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set/Double" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Single item" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Multiple" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Non-trivial inner items" duration="{duration}"/>
+ <testCase name="std::map is convertible string" duration="{duration}"/>
+ <testCase name="std::map is convertible string/empty" duration="{duration}"/>
+ <testCase name="std::map is convertible string/single item" duration="{duration}"/>
+ <testCase name="std::map is convertible string/several items" duration="{duration}"/>
+ <testCase name="std::set is convertible string" duration="{duration}"/>
+ <testCase name="std::set is convertible string/empty" duration="{duration}"/>
+ <testCase name="std::set is convertible string/single item" duration="{duration}"/>
+ <testCase name="std::set is convertible string/several items" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp">
+ <testCase name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" duration="{duration}"/>
+ <testCase name="std::pair&lt;int,const std::string> -> toString" duration="{duration}"/>
+ <testCase name="std::pair&lt;int,std::string> -> toString" duration="{duration}"/>
+ <testCase name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp">
+ <testCase name="tuple&lt;>" duration="{duration}"/>
+ <testCase name="tuple&lt;float,int>" duration="{duration}"/>
+ <testCase name="tuple&lt;int>" duration="{duration}"/>
+ <testCase name="tuple&lt;string,string>" duration="{duration}"/>
+ <testCase name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp">
+ <testCase name="array&lt;int, N> -> toString" duration="{duration}"/>
+ <testCase name="vec&lt;vec&lt;string,alloc>> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;bool> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;int,allocator> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;int> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;string> -> toString" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp">
+ <testCase name="stringify ranges" duration="{duration}"/>
+ <testCase name="stringify( has_maker )" duration="{duration}"/>
+ <testCase name="stringify( has_maker_and_operator )" duration="{duration}"/>
+ <testCase name="stringify( has_neither )" duration="{duration}"/>
+ <testCase name="stringify( has_operator )" duration="{duration}"/>
+ <testCase name="stringify( has_template_operator )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_maker> )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_maker_and_operator> )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_operator> )" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Tricky.tests.cpp">
+ <testCase name="#1514: stderr/stdout is not captured in tests aborted by an exception" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+1514
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="(unimplemented) static bools can be evaluated" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/compare to true" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/compare to false" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/negation" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/double negation" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/direct" duration="{duration}"/>
+ <testCase name="A failing expression with a non streamable type is still captured" duration="{duration}">
+ <failure message="CHECK(&amp;o1 == &amp;o2)">
+FAILED:
+ CHECK( &amp;o1 == &amp;o2 )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(o1 == o2)">
+FAILED:
+ CHECK( o1 == o2 )
+with expansion:
+ {?} == {?}
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="An expression with side-effects should only be evaluated once" duration="{duration}"/>
+ <testCase name="Assertions then sections" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section/Another section" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section/Another other section" duration="{duration}"/>
+ <testCase name="Commas in various macros are allowed" duration="{duration}"/>
+ <testCase name="Comparing function pointers" duration="{duration}"/>
+ <testCase name="Objects that evaluated in boolean contexts can be checked" duration="{duration}"/>
+ <testCase name="Test enum bit values" duration="{duration}"/>
+ <testCase name="X/level/0/a" duration="{duration}"/>
+ <testCase name="X/level/0/b" duration="{duration}"/>
+ <testCase name="X/level/1/a" duration="{duration}"/>
+ <testCase name="X/level/1/b" duration="{duration}"/>
+ <testCase name="boolean member" duration="{duration}"/>
+ <testCase name="has printf" duration="{duration}"/>
+ <testCase name="non streamable - with conv. op" duration="{duration}"/>
+ <testCase name="non-copyable objects" duration="{duration}"/>
+ <testCase name="null_ptr" duration="{duration}"/>
+ <testCase name="pointer to class" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp">
+ <testCase name="Anonymous test case 1" duration="{duration}"/>
+ <testCase name="Test case with one argument" duration="{duration}"/>
+ <testCase name="Variadic macros" duration="{duration}"/>
+ <testCase name="Variadic macros/Section with one argument" duration="{duration}"/>
+ </file>
+</testExecutions>
diff --git a/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt b/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt
new file mode 100644
index 0000000..2d8d510
--- /dev/null
+++ b/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt
@@ -0,0 +1,2316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
+<testExecutions version="1">
+ <file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
+ <testCase name="Incomplete AssertionHandler" duration="{duration}">
+ <skipped message="REQUIRE(Dummy)">
+FAILED:
+ REQUIRE( Dummy )
+Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+at AssertionHandler.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
+ <testCase name="Clara::Arg does not crash on incomplete input" duration="{duration}"/>
+ <testCase name="Clara::Arg supports single-arg parse the way Opt does" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas/Parsing fails on multiple options without accept_many" duration="{duration}"/>
+ <testCase name="Clara::Opt supports accept-many lambdas/Parsing succeeds on multiple options with accept_many" duration="{duration}"/>
+ <testCase name="is_unary_function" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp">
+ <testCase name="Parsing sharding-related cli flags" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/shard-count" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Negative shard count reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Zero shard count reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/shard-index" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Negative shard index reports error" duration="{duration}"/>
+ <testCase name="Parsing sharding-related cli flags/Shard index 0 is accepted" duration="{duration}"/>
+ <testCase name="Parsing warnings" duration="{duration}"/>
+ <testCase name="Parsing warnings/NoAssertions" duration="{duration}"/>
+ <testCase name="Parsing warnings/NoTests is no longer supported" duration="{duration}"/>
+ <testCase name="Parsing warnings/Combining multiple warnings" duration="{duration}"/>
+ <testCase name="Process can be configured on command line" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/empty args don't cause a crash" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/default - no arguments" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case using" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case exclusion using exclude:" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/test lists/Specify one test case exclusion using ~" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/-r/console" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/-r/xml" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/--reporter/junit" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/must match one of the available ones" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/With output file" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/With Windows-like absolute path as output file" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/All with output files" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/Mixed output files and default output" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/reporter/Multiple reporters/cannot have multiple reporters with default output" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger/-b" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/debugger/--break" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-a aborts after first failure" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-x 2 aborts after two failures" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/-x must be numeric" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress/Accepted options" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/abort/wait-for-keypress/invalid options are reported" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow/-e" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/nothrow/--nothrow" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename/-o filename" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/output filename/--out" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/combinations" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/combinations/Single character flags can be combined" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/without option" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/auto" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/yes" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/no" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/use-colour/error" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/samples" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/resamples" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/confidence-interval" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/no-analysis" duration="{duration}"/>
+ <testCase name="Process can be configured on command line/Benchmark options/warmup-time" duration="{duration}"/>
+ <testCase name="Test with special, characters &quot;in name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp">
+ <testCase name="ColourGuard behaviour" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard is disengaged by default" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard is engaged by op&lt;&lt;" duration="{duration}"/>
+ <testCase name="ColourGuard behaviour/ColourGuard can be engaged explicitly" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp">
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive" duration="{duration}"/>
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive/Degenerate cases" duration="{duration}"/>
+ <testCase name="CaseInsensitiveEqualsTo is case insensitive/Plain comparisons" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive/Degenerate cases" duration="{duration}"/>
+ <testCase name="CaseInsensitiveLess is case insensitive/Plain comparisons" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp">
+ <testCase name="convertToBits" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp">
+ <testCase name="Filter generator throws exception for empty generator" duration="{duration}"/>
+ <testCase name="Generators internals" duration="{duration}"/>
+ <testCase name="Generators internals/Single value" duration="{duration}"/>
+ <testCase name="Generators internals/Preset values" duration="{duration}"/>
+ <testCase name="Generators internals/Generator combinator" duration="{duration}"/>
+ <testCase name="Generators internals/Explicitly typed generator sequence" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Simple filtering" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Filter out multiple elements at the start and end" duration="{duration}"/>
+ <testCase name="Generators internals/Filter generator/Throws on construction if it can't get initial element" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator/Take less" duration="{duration}"/>
+ <testCase name="Generators internals/Take generator/Take more" duration="{duration}"/>
+ <testCase name="Generators internals/Map with explicit return type" duration="{duration}"/>
+ <testCase name="Generators internals/Map with deduced return type" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat/Singular repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Repeat/Actual repeat" duration="{duration}"/>
+ <testCase name="Generators internals/Range" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive auto step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive auto step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative auto step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative auto step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Integer/Slightly under end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Positive manual step/Floating Point/Slightly under end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Exact" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Slightly over end" duration="{duration}"/>
+ <testCase name="Generators internals/Range/Negative manual step/Integer/Slightly under end" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp">
+ <testCase name="analyse no analysis" duration="{duration}"/>
+ <testCase name="benchmark function call" duration="{duration}"/>
+ <testCase name="benchmark function call/without chronometer" duration="{duration}"/>
+ <testCase name="benchmark function call/with chronometer" duration="{duration}"/>
+ <testCase name="classify_outliers" duration="{duration}"/>
+ <testCase name="classify_outliers/none" duration="{duration}"/>
+ <testCase name="classify_outliers/low severe" duration="{duration}"/>
+ <testCase name="classify_outliers/low mild" duration="{duration}"/>
+ <testCase name="classify_outliers/high mild" duration="{duration}"/>
+ <testCase name="classify_outliers/high severe" duration="{duration}"/>
+ <testCase name="classify_outliers/mixed" duration="{duration}"/>
+ <testCase name="erfc_inv" duration="{duration}"/>
+ <testCase name="estimate_clock_resolution" duration="{duration}"/>
+ <testCase name="mean" duration="{duration}"/>
+ <testCase name="measure" duration="{duration}"/>
+ <testCase name="normal_quantile" duration="{duration}"/>
+ <testCase name="resolution" duration="{duration}"/>
+ <testCase name="run_for_at_least, chronometer" duration="{duration}"/>
+ <testCase name="run_for_at_least, int" duration="{duration}"/>
+ <testCase name="uniform samples" duration="{duration}"/>
+ <testCase name="warmup" duration="{duration}"/>
+ <testCase name="weighted_average_quantile" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp">
+ <testCase name="JsonWriter" duration="{duration}"/>
+ <testCase name="JsonWriter/Newly constructed JsonWriter does nothing" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeObject will create an empty pair of braces" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeObject with key will create an object to write the value" duration="{duration}"/>
+ <testCase name="JsonWriter/nesting objects" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeArray will create an empty pair of braces" duration="{duration}"/>
+ <testCase name="JsonWriter/Calling writeArray creates array to write the values to" duration="{duration}"/>
+ <testCase name="JsonWriter/Moved from JsonObjectWriter shall not insert superfluous brace" duration="{duration}"/>
+ <testCase name="JsonWriter/Moved from JsonArrayWriter shall not insert superfluous bracket" duration="{duration}"/>
+ <testCase name="JsonWriter/Custom class shall be quoted" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Quote in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Backslash in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Forward slash in a string is **not** escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Backspace in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/Formfeed in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/linefeed in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/carriage return in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/tab in a string is escaped" duration="{duration}"/>
+ <testCase name="JsonWriter escapes charaters in strings properly/combination of characters is escaped" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp">
+ <testCase name="Parse uints" duration="{duration}"/>
+ <testCase name="Parse uints/proper inputs" duration="{duration}"/>
+ <testCase name="Parse uints/Bad inputs" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp">
+ <testCase name="#1938 - GENERATE after a section" duration="{duration}"/>
+ <testCase name="#1938 - GENERATE after a section/A" duration="{duration}"/>
+ <testCase name="#1938 - GENERATE after a section/B" duration="{duration}"/>
+ <testCase name="#1938 - Section followed by flat generate" duration="{duration}"/>
+ <testCase name="#1938 - Section followed by flat generate/A" duration="{duration}"/>
+ <testCase name="#1938 - flat generate" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates/A" duration="{duration}"/>
+ <testCase name="#1938 - mixed sections and generates/B" duration="{duration}"/>
+ <testCase name="#1938 - nested generate" duration="{duration}"/>
+ <testCase name="Tracker" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section/re-enter after failed section" duration="{duration}"/>
+ <testCase name="Tracker/fail one section/re-enter after failed section and find next section" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/Successfully close S2" duration="{duration}"/>
+ <testCase name="Tracker/successfully close one section, then find another/Re-enter - skips S1 and enters S2/fail S2" duration="{duration}"/>
+ <testCase name="Tracker/open a nested section" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp">
+ <testCase name="Comparison ops" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds/Default seeded" duration="{duration}"/>
+ <testCase name="Our PCG implementation provides expected results for known seeds/Specific seed" duration="{duration}"/>
+ <testCase name="Random seed generation accepts known methods" duration="{duration}"/>
+ <testCase name="Random seed generation reports unknown methods" duration="{duration}"/>
+ <testCase name="uniform_integer_distribution can return the bounds" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp">
+ <testCase name="Multireporter calls reporters and listeners in correct order" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly/Adding listeners" duration="{duration}"/>
+ <testCase name="Multireporter updates ReporterPreferences properly/Adding reporters" duration="{duration}"/>
+ <testCase name="Registering reporter with '::' in name fails" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/Automake reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/compact reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/console reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JSON reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/JUnit reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/SonarQube reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TAP reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/TeamCity reporter lists tests" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists tags" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists reporters" duration="{duration}"/>
+ <testCase name="Reporter's write listings to provided stream/XML reporter lists tests" duration="{duration}"/>
+ <testCase name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing tags" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing reporters" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing tests" duration="{duration}"/>
+ <testCase name="The default listing implementation write to provided stream/Listing listeners" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp">
+ <testCase name="Cout stream properly declares it writes to stdout" duration="{duration}"/>
+ <testCase name="Empty stream name opens cout stream" duration="{duration}"/>
+ <testCase name="makeStream recognizes %debug stream name" duration="{duration}"/>
+ <testCase name="request an unknown %-starting stream fails" duration="{duration}"/>
+ <testCase name="stdout and stderr streams have %-starting name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/String.tests.cpp">
+ <testCase name="StringRef" duration="{duration}"/>
+ <testCase name="StringRef/Empty string" duration="{duration}"/>
+ <testCase name="StringRef/From string literal" duration="{duration}"/>
+ <testCase name="StringRef/From sub-string" duration="{duration}"/>
+ <testCase name="StringRef/Copy construction is shallow" duration="{duration}"/>
+ <testCase name="StringRef/Copy assignment is shallow" duration="{duration}"/>
+ <testCase name="StringRef/Substrings" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/zero-based substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/non-zero-based substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Pointer values of full refs should match" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Pointer values of substring refs should also match" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Past the end substring" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/Substring off the end are trimmed" duration="{duration}"/>
+ <testCase name="StringRef/Substrings/substring start after the end is empty" duration="{duration}"/>
+ <testCase name="StringRef/Comparisons are deep" duration="{duration}"/>
+ <testCase name="StringRef/from std::string" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/implicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/explicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/from std::string/assigned" duration="{duration}"/>
+ <testCase name="StringRef/to std::string" duration="{duration}"/>
+ <testCase name="StringRef/to std::string/explicitly constructed" duration="{duration}"/>
+ <testCase name="StringRef/to std::string/assigned" duration="{duration}"/>
+ <testCase name="StringRef/std::string += StringRef" duration="{duration}"/>
+ <testCase name="StringRef/StringRef + StringRef" duration="{duration}"/>
+ <testCase name="StringRef at compilation time" duration="{duration}"/>
+ <testCase name="StringRef at compilation time/Simple constructors" duration="{duration}"/>
+ <testCase name="StringRef at compilation time/UDL construction" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp">
+ <testCase name="Trim strings" duration="{duration}"/>
+ <testCase name="replaceInPlace" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace single char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace two chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace first char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace last char" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace all chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/replace no chars" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string/lengthening" duration="{duration}"/>
+ <testCase name="replaceInPlace/no replace in already-replaced string/shortening" duration="{duration}"/>
+ <testCase name="replaceInPlace/escape '" duration="{duration}"/>
+ <testCase name="splitString" duration="{duration}"/>
+ <testCase name="startsWith" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp">
+ <testCase name="Tag alias can be registered against tag patterns" duration="{duration}"/>
+ <testCase name="Tag alias can be registered against tag patterns/The same tag alias can only be registered once" duration="{duration}"/>
+ <testCase name="Tag alias can be registered against tag patterns/Tag aliases must be of the form [@name]" duration="{duration}"/>
+ <testCase name="Tags with spaces and non-alphanumerical characters are accepted" duration="{duration}"/>
+ <testCase name="Test case with identical tags keeps just one" duration="{duration}"/>
+ <testCase name="empty tags are not allowed" duration="{duration}"/>
+ <testCase name="shortened hide tags are split apart" duration="{duration}"/>
+ <testCase name="tags with dots in later positions are not parsed as hidden" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp">
+ <testCase name="Hashers with different seed produce different hash with same test case" duration="{duration}"/>
+ <testCase name="Hashers with same seed produce same hash" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different test name" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different classname" duration="{duration}"/>
+ <testCase name="Hashing different test cases produces different result/Different tags" duration="{duration}"/>
+ <testCase name="Hashing test case produces same hash across multiple calls" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp">
+ <testCase name="#1905 -- test spec parser properly clears internal state between compound tests" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping/Various parentheses" duration="{duration}"/>
+ <testCase name="#1912 -- test spec parser handles escaping/backslash in test name" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp">
+ <testCase name="Parsed tags are matched case insensitive" duration="{duration}"/>
+ <testCase name="Parsing tags with non-alphabetical characters is pass-through" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp">
+ <testCase name="Directly creating an EnumInfo" duration="{duration}"/>
+ <testCase name="Range type with sentinel" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - char" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - signed char" duration="{duration}"/>
+ <testCase name="Stringifying char arrays with statically known sizes - unsigned char" duration="{duration}"/>
+ <testCase name="parseEnums" duration="{duration}"/>
+ <testCase name="parseEnums/No enums" duration="{duration}"/>
+ <testCase name="parseEnums/One enum value" duration="{duration}"/>
+ <testCase name="parseEnums/Multiple enum values" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp">
+ <testCase name="Upcasting special member functions" duration="{duration}"/>
+ <testCase name="Upcasting special member functions/Move constructor" duration="{duration}"/>
+ <testCase name="Upcasting special member functions/move assignment" duration="{duration}"/>
+ <testCase name="make_unique reimplementation" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/From lvalue copies" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/From rvalue moves" duration="{duration}"/>
+ <testCase name="make_unique reimplementation/Variadic constructor" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Default constructed unique_ptr is empty" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Plain reset deallocates" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Take ownership of allocation/Reset replaces ownership" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Release releases ownership" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Move constructor" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/Move assignment" duration="{duration}"/>
+ <testCase name="unique_ptr reimplementation: basic functionality/free swap" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp">
+ <testCase name="XmlEncode" duration="{duration}"/>
+ <testCase name="XmlEncode/normal string" duration="{duration}"/>
+ <testCase name="XmlEncode/empty string" duration="{duration}"/>
+ <testCase name="XmlEncode/string with ampersand" duration="{duration}"/>
+ <testCase name="XmlEncode/string with less-than" duration="{duration}"/>
+ <testCase name="XmlEncode/string with greater-than" duration="{duration}"/>
+ <testCase name="XmlEncode/string with quotes" duration="{duration}"/>
+ <testCase name="XmlEncode/string with control char (1)" duration="{duration}"/>
+ <testCase name="XmlEncode/string with control char (x7F)" duration="{duration}"/>
+ <testCase name="XmlWriter writes boolean attributes as true/false" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Approx.tests.cpp">
+ <testCase name="A comparison that uses literals instead of the normal constructor" duration="{duration}"/>
+ <testCase name="Absolute margin" duration="{duration}"/>
+ <testCase name="Approx setters validate their arguments" duration="{duration}"/>
+ <testCase name="Approx with exactly-representable margin" duration="{duration}"/>
+ <testCase name="Approximate PI" duration="{duration}"/>
+ <testCase name="Approximate comparisons with different epsilons" duration="{duration}"/>
+ <testCase name="Approximate comparisons with floats" duration="{duration}"/>
+ <testCase name="Approximate comparisons with ints" duration="{duration}"/>
+ <testCase name="Approximate comparisons with mixed numeric types" duration="{duration}"/>
+ <testCase name="Comparison with explicitly convertible types" duration="{duration}"/>
+ <testCase name="Default scale is invisible to comparison" duration="{duration}"/>
+ <testCase name="Epsilon only applies to Approx's value" duration="{duration}"/>
+ <testCase name="Greater-than inequalities with different epsilons" duration="{duration}"/>
+ <testCase name="Less-than inequalities with different epsilons" duration="{duration}"/>
+ <testCase name="Some simple comparisons between doubles" duration="{duration}"/>
+ <testCase name="Use a custom approx" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/BDD.tests.cpp">
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" duration="{duration}"/>
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me" duration="{duration}"/>
+ <testCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods/Given: No operations precede me/When: We get the count" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption" duration="{duration}"/>
+ <testCase name="Scenario: Do that thing with the thing/Given: This stuff exists/And given: And some assumption/When: I do this" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: it is made larger/Then: the size and capacity go up" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="Scenario: Vector resizing affects size and capacity/Given: an empty vector/When: we reserve more space" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Class.tests.cpp">
+ <testCase name="A METHOD_AS_TEST_CASE based test run that fails" duration="{duration}">
+ <failure message="REQUIRE(s == &quot;world&quot;)">
+FAILED:
+ REQUIRE( s == "world" )
+with expansion:
+ "hello" == "world"
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A METHOD_AS_TEST_CASE based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>::m_a.size() == 1)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>::m_a.size() == 1 )
+with expansion:
+ 0 == 1
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 6 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2)">
+FAILED:
+ REQUIRE( Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2 )
+with expansion:
+ 2 &lt; 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1.0f == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" duration="{duration}">
+ <failure message="REQUIRE(Template_Fixture&lt;TestType>::m_a == 2)">
+FAILED:
+ REQUIRE( Template_Fixture&lt;TestType>::m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 3 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" duration="{duration}">
+ <failure message="REQUIRE(Nttp_Fixture&lt;V>::value == 0)">
+FAILED:
+ REQUIRE( Nttp_Fixture&lt;V>::value == 0 )
+with expansion:
+ 6 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" duration="{duration}"/>
+ <testCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" duration="{duration}"/>
+ <testCase name="A TEST_CASE_METHOD based test run that fails" duration="{duration}">
+ <failure message="REQUIRE(m_a == 2)">
+FAILED:
+ REQUIRE( m_a == 2 )
+with expansion:
+ 1 == 2
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEST_CASE_METHOD based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/First partial run" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails/Second partial run" duration="{duration}">
+ <failure message="REQUIRE(m_a == 0)">
+FAILED:
+ REQUIRE( m_a == 0 )
+with expansion:
+ 1 == 0
+at Class.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/First partial run" duration="{duration}"/>
+ <testCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds/Second partial run" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case method with test types specified inside std::tuple - MyTypes - 2" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Compilation.tests.cpp">
+ <testCase name="#1027: Bitfields can be captured" duration="{duration}"/>
+ <testCase name="#1147" duration="{duration}"/>
+ <testCase name="#1238" duration="{duration}"/>
+ <testCase name="#1245" duration="{duration}"/>
+ <testCase name="#1319: Sections can have description (even if it is not saved" duration="{duration}"/>
+ <testCase name="#1319: Sections can have description (even if it is not saved/SectionName" duration="{duration}"/>
+ <testCase name="#1403" duration="{duration}"/>
+ <testCase name="#1548" duration="{duration}"/>
+ <testCase name="#809" duration="{duration}"/>
+ <testCase name="#833" duration="{duration}"/>
+ <testCase name="#872" duration="{duration}"/>
+ <testCase name="Assertion macros support bit operators and bool conversions" duration="{duration}"/>
+ <testCase name="Lambdas in assertions" duration="{duration}"/>
+ <testCase name="Optionally static assertions" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Condition.tests.cpp">
+ <testCase name="'Not' checks that should fail" duration="{duration}">
+ <failure message="CHECK(false != false)">
+FAILED:
+ CHECK( false != false )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(true != true)">
+FAILED:
+ CHECK( true != true )
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!true)">
+FAILED:
+ CHECK( !true )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(true))">
+FAILED:
+ CHECK_FALSE( true )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!trueValue)">
+FAILED:
+ CHECK( !trueValue )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(trueValue))">
+FAILED:
+ CHECK_FALSE( trueValue )
+with expansion:
+ !true
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(!(1 == 1))">
+FAILED:
+ CHECK( !(1 == 1) )
+with expansion:
+ false
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_FALSE(!(1 == 1))">
+FAILED:
+ CHECK_FALSE( 1 == 1 )
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="'Not' checks that should succeed" duration="{duration}"/>
+ <testCase name="Comparisons between ints where one side is computed" duration="{duration}"/>
+ <testCase name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" duration="{duration}"/>
+ <testCase name="Comparisons with int literals don't warn when mixing signed/ unsigned" duration="{duration}"/>
+ <testCase name="Equality checks that should fail" duration="{duration}">
+ <skipped message="CHECK(data.int_seven == 6)">
+FAILED:
+ CHECK( data.int_seven == 6 )
+with expansion:
+ 7 == 6
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.int_seven == 8)">
+FAILED:
+ CHECK( data.int_seven == 8 )
+with expansion:
+ 7 == 8
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.int_seven == 0)">
+FAILED:
+ CHECK( data.int_seven == 0 )
+with expansion:
+ 7 == 0
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 9.11f ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.11f ) )
+with expansion:
+ 9.100000381f
+==
+Approx( 9.10999965667724609 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 9.0f ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 9.0f ) )
+with expansion:
+ 9.100000381f == Approx( 9.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 1 ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 1 ) )
+with expansion:
+ 9.100000381f == Approx( 1.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one == Approx( 0 ))">
+FAILED:
+ CHECK( data.float_nine_point_one == Approx( 0 ) )
+with expansion:
+ 9.100000381f == Approx( 0.0 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.double_pi == Approx( 3.1415 ))">
+FAILED:
+ CHECK( data.double_pi == Approx( 3.1415 ) )
+with expansion:
+ 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;goodbye&quot;)">
+FAILED:
+ CHECK( data.str_hello == "goodbye" )
+with expansion:
+ "hello" == "goodbye"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;hell&quot;)">
+FAILED:
+ CHECK( data.str_hello == "hell" )
+with expansion:
+ "hello" == "hell"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello == &quot;hello1&quot;)">
+FAILED:
+ CHECK( data.str_hello == "hello1" )
+with expansion:
+ "hello" == "hello1"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello.size() == 6)">
+FAILED:
+ CHECK( data.str_hello.size() == 6 )
+with expansion:
+ 5 == 6
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(x == Approx( 1.301 ))">
+FAILED:
+ CHECK( x == Approx( 1.301 ) )
+with expansion:
+ 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Equality checks that should succeed" duration="{duration}"/>
+ <testCase name="Inequality checks that should fail" duration="{duration}">
+ <skipped message="CHECK(data.int_seven != 7)">
+FAILED:
+ CHECK( data.int_seven != 7 )
+with expansion:
+ 7 != 7
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.float_nine_point_one != Approx( 9.1f ))">
+FAILED:
+ CHECK( data.float_nine_point_one != Approx( 9.1f ) )
+with expansion:
+ 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.double_pi != Approx( 3.1415926535 ))">
+FAILED:
+ CHECK( data.double_pi != Approx( 3.1415926535 ) )
+with expansion:
+ 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello != &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello != "hello" )
+with expansion:
+ "hello" != "hello"
+at Condition.tests.cpp:<line number>
+ </skipped>
+ <skipped message="CHECK(data.str_hello.size() != 5)">
+FAILED:
+ CHECK( data.str_hello.size() != 5 )
+with expansion:
+ 5 != 5
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Inequality checks that should succeed" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1/A" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/2" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/2/A" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/1" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/1/B" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Mayfail test case with nested sections/2" duration="{duration}"/>
+ <testCase name="Mayfail test case with nested sections/2/B" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Condition.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Ordering comparison checks that should fail" duration="{duration}">
+ <failure message="CHECK(data.int_seven > 7)">
+FAILED:
+ CHECK( data.int_seven > 7 )
+with expansion:
+ 7 > 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 7)">
+FAILED:
+ CHECK( data.int_seven &lt; 7 )
+with expansion:
+ 7 &lt; 7
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven > 8)">
+FAILED:
+ CHECK( data.int_seven > 8 )
+with expansion:
+ 7 > 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 6)">
+FAILED:
+ CHECK( data.int_seven &lt; 6 )
+with expansion:
+ 7 &lt; 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; 0)">
+FAILED:
+ CHECK( data.int_seven &lt; 0 )
+with expansion:
+ 7 &lt; 0
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt; -1)">
+FAILED:
+ CHECK( data.int_seven &lt; -1 )
+with expansion:
+ 7 &lt; -1
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven >= 8)">
+FAILED:
+ CHECK( data.int_seven >= 8 )
+with expansion:
+ 7 >= 8
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.int_seven &lt;= 6)">
+FAILED:
+ CHECK( data.int_seven &lt;= 6 )
+with expansion:
+ 7 &lt;= 6
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one &lt; 9)">
+FAILED:
+ CHECK( data.float_nine_point_one &lt; 9 )
+with expansion:
+ 9.100000381f &lt; 9
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one > 10)">
+FAILED:
+ CHECK( data.float_nine_point_one > 10 )
+with expansion:
+ 9.100000381f > 10
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.float_nine_point_one > 9.2)">
+FAILED:
+ CHECK( data.float_nine_point_one > 9.2 )
+with expansion:
+ 9.100000381f > 9.19999999999999929
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello > "hello" )
+with expansion:
+ "hello" > "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;hello&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "hello" )
+with expansion:
+ "hello" &lt; "hello"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;hellp&quot;)">
+FAILED:
+ CHECK( data.str_hello > "hellp" )
+with expansion:
+ "hello" > "hellp"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello > &quot;z&quot;)">
+FAILED:
+ CHECK( data.str_hello > "z" )
+with expansion:
+ "hello" > "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;hellm&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "hellm" )
+with expansion:
+ "hello" &lt; "hellm"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt; &quot;a&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt; "a" )
+with expansion:
+ "hello" &lt; "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello >= &quot;z&quot;)">
+FAILED:
+ CHECK( data.str_hello >= "z" )
+with expansion:
+ "hello" >= "z"
+at Condition.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(data.str_hello &lt;= &quot;a&quot;)">
+FAILED:
+ CHECK( data.str_hello &lt;= "a" )
+with expansion:
+ "hello" &lt;= "a"
+at Condition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Ordering comparison checks that should succeed" duration="{duration}"/>
+ <testCase name="Pointers can be compared to null" duration="{duration}"/>
+ <testCase name="comparisons between const int variables" duration="{duration}"/>
+ <testCase name="comparisons between int variables" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Decomposition.tests.cpp">
+ <testCase name="Reconstruction should be based on stringification: #914" duration="{duration}">
+ <failure message="CHECK(truthy(false))">
+FAILED:
+ CHECK( truthy(false) )
+with expansion:
+ Hey, its truthy!
+at Decomposition.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/EnumToString.tests.cpp">
+ <testCase name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" duration="{duration}"/>
+ <testCase name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" duration="{duration}"/>
+ <testCase name="toString(enum class w/operator&lt;&lt;)" duration="{duration}"/>
+ <testCase name="toString(enum class)" duration="{duration}"/>
+ <testCase name="toString(enum w/operator&lt;&lt;)" duration="{duration}"/>
+ <testCase name="toString(enum)" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Exception.tests.cpp">
+ <testCase name="#748 - captures with unexpected exceptions" duration="{duration}"/>
+ <testCase name="#748 - captures with unexpected exceptions/outside assertions" duration="{duration}">
+ <skipped message="TEST_CASE()">
+FAILED:
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#748 - captures with unexpected exceptions/inside REQUIRE_NOTHROW" duration="{duration}">
+ <skipped message="REQUIRE_NOTHROW(thisThrows())">
+FAILED:
+ REQUIRE_NOTHROW( thisThrows() )
+expected exception
+answer := 42
+at Exception.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#748 - captures with unexpected exceptions/inside REQUIRE_THROWS" duration="{duration}"/>
+ <testCase name="An unchecked exception reports the line of the last assertion" duration="{duration}">
+ <error message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom exceptions can be translated when testing for nothrow" duration="{duration}">
+ <error message="REQUIRE_NOTHROW(throwCustom())">
+FAILED:
+ REQUIRE_NOTHROW( throwCustom() )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom exceptions can be translated when testing for throwing as something else" duration="{duration}">
+ <error message="REQUIRE_THROWS_AS(throwCustom(), std::exception)">
+FAILED:
+ REQUIRE_THROWS_AS( throwCustom(), std::exception )
+custom exception - not std
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Custom std-exceptions can be custom translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+custom std exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Exception messages can be tested for" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/exact match" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/different case" duration="{duration}"/>
+ <testCase name="Exception messages can be tested for/wildcarded" duration="{duration}"/>
+ <testCase name="Expected exceptions that don't throw or unexpected exceptions fail the test" duration="{duration}">
+ <error message="CHECK_THROWS_AS(thisThrows(), std::string)">
+FAILED:
+ CHECK_THROWS_AS( thisThrows(), std::string )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ <failure message="CHECK_THROWS_AS(thisDoesntThrow(), std::domain_error)">
+FAILED:
+ CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
+at Exception.tests.cpp:<line number>
+ </failure>
+ <error message="CHECK_NOTHROW(thisThrows())">
+FAILED:
+ CHECK_NOTHROW( thisThrows() )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Mismatching exception messages failing the test" duration="{duration}">
+ <failure message="REQUIRE_THROWS_WITH(thisThrows(), &quot;should fail&quot;)">
+FAILED:
+ REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
+with expansion:
+ "expected exception" equals: "should fail"
+at Exception.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Non-std exceptions can be translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+custom exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Thrown string literals are translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+For some reason someone is throwing a string literal!
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Unexpected exceptions can be translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+3.14000000000000012
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When checked exceptions are thrown they can be expected or unexpected" duration="{duration}"/>
+ <testCase name="When unchecked exceptions are thrown directly they are always failures" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown during a CHECK the test should continue" duration="{duration}">
+ <error message="CHECK(thisThrows() == 0)">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" duration="{duration}">
+ <error message="REQUIRE(thisThrows() == 0)">
+FAILED:
+ REQUIRE( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown from functions they are always failures" duration="{duration}">
+ <error message="CHECK(thisThrows() == 0)">
+FAILED:
+ CHECK( thisThrows() == 0 )
+expected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown from sections they are always failures/section name" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+unexpected exception
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" duration="{duration}"/>
+ <testCase name="thrown std::strings are translated" duration="{duration}">
+ <error message="TEST_CASE()">
+FAILED:
+Why would you throw a std::string?
+at Exception.tests.cpp:<line number>
+ </error>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Generators.tests.cpp">
+ <testCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" duration="{duration}"/>
+ <testCase name="#1913 - GENERATEs can share a line" duration="{duration}"/>
+ <testCase name="#2615 - Throwing in constructor generator fails test case but does not abort" duration="{duration}">
+ <skipped message="TEST_CASE()">
+FAILED:
+failure to init
+at Generators.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="3x3x3 ints" duration="{duration}"/>
+ <testCase name="Copy and then generate a range" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/from var and iterators" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/From a temporary container" duration="{duration}"/>
+ <testCase name="Copy and then generate a range/Final validation" duration="{duration}"/>
+ <testCase name="GENERATE can combine literals and generators" duration="{duration}"/>
+ <testCase name="Generators -- adapters" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate/Basic usage" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Filtering by predicate/Throws if there are no matching values" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Shortening a range" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Same type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Different type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Transforming elements/Different deduced type" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Repeating a generator" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is divisible by chunk size" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Number of elements in source is not divisible by chunk size" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Chunk size of zero" duration="{duration}"/>
+ <testCase name="Generators -- adapters/Chunking a generator into sized pieces/Throws on too small generators" duration="{duration}"/>
+ <testCase name="Generators -- simple" duration="{duration}"/>
+ <testCase name="Generators -- simple/one" duration="{duration}"/>
+ <testCase name="Generators -- simple/two" duration="{duration}"/>
+ <testCase name="Nested generators and captured variables" duration="{duration}"/>
+ <testCase name="strlen3" duration="{duration}"/>
+ <testCase name="tables" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Matchers.tests.cpp">
+ <testCase name="#2152 - ULP checks between differently signed values were wrong - double" duration="{duration}"/>
+ <testCase name="#2152 - ULP checks between differently signed values were wrong - float" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher/Function pointer" duration="{duration}"/>
+ <testCase name="Arbitrary predicate matcher/Lambdas + different type" duration="{duration}"/>
+ <testCase name="Combining MatchAllOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining MatchAnyOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining MatchNotOfGeneric does not nest" duration="{duration}"/>
+ <testCase name="Combining concrete matchers does not use templated matchers" duration="{duration}"/>
+ <testCase name="Combining only templated matchers" duration="{duration}"/>
+ <testCase name="Combining templated and concrete matchers" duration="{duration}"/>
+ <testCase name="Combining templated matchers" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit/MatchAllOf" duration="{duration}"/>
+ <testCase name="Composed generic matchers shortcircuit/MatchAnyOf" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit/MatchAllOf" duration="{duration}"/>
+ <testCase name="Composed matchers shortcircuit/MatchAnyOf" duration="{duration}"/>
+ <testCase name="Contains string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), ContainsSubstring( &quot;not there&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), ContainsSubstring( &quot;STRING&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
+with expansion:
+ "this string contains 'abc' as a substring" contains: "STRING"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="EndsWith string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), EndsWith( &quot;Substring&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "Substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), EndsWith( &quot;this&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Equals" duration="{duration}"/>
+ <testCase name="Equals string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), Equals( &quot;this string contains 'ABC' as a substring&quot; ))">
+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"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Equals( &quot;something else&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that fail/No exception" duration="{duration}">
+ <failure message="CHECK_THROWS_MATCHES(doesNotThrow(), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="REQUIRE_THROWS_MATCHES(doesNotThrow(), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that fail/Type mismatch" duration="{duration}">
+ <error message="CHECK_THROWS_MATCHES(throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ <error message="REQUIRE_THROWS_MATCHES(throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
+Unknown exception
+at Matchers.tests.cpp:<line number>
+ </error>
+ </testCase>
+ <testCase name="Exception matchers that fail/Contents are wrong" duration="{duration}">
+ <failure message="CHECK_THROWS_MATCHES(throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="REQUIRE_THROWS_MATCHES(throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 })">
+FAILED:
+ REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )
+with expansion:
+ SpecialException::what special exception has value of 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Exception matchers that succeed" duration="{duration}"/>
+ <testCase name="Exception message can be matched" duration="{duration}"/>
+ <testCase name="Exceptions matchers" duration="{duration}"/>
+ <testCase name="Floating point matchers: double" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Relative" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Relative/Some subnormal values" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Margin" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/ULPs" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Composed" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/Constructor validation" duration="{duration}"/>
+ <testCase name="Floating point matchers: double/IsNaN" duration="{duration}"/>
+ <testCase name="Floating point matchers: float" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Relative" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Relative/Some subnormal values" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Margin" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/ULPs" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Composed" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/Constructor validation" duration="{duration}"/>
+ <testCase name="Floating point matchers: float/IsNaN" duration="{duration}"/>
+ <testCase name="Matchers can be (AllOf) composed with the &amp;&amp; operator" duration="{duration}"/>
+ <testCase name="Matchers can be (AnyOf) composed with the || operator" duration="{duration}"/>
+ <testCase name="Matchers can be composed with both &amp;&amp; and ||" duration="{duration}"/>
+ <testCase name="Matchers can be composed with both &amp;&amp; and || - failing" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), ( ContainsSubstring( &quot;string&quot; ) || ContainsSubstring( &quot;different&quot; ) ) &amp;&amp; ContainsSubstring( &quot;random&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" ) )
+with expansion:
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Matchers can be negated (Not) with the ! operator" duration="{duration}"/>
+ <testCase name="Matchers can be negated (Not) with the ! operator - failing" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), !ContainsSubstring( &quot;substring&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
+with expansion:
+ "this string contains 'abc' as a substring" not contains: "substring"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Overloaded comma or address-of operators are not used" duration="{duration}"/>
+ <testCase name="Predicate matcher can accept const char*" duration="{duration}"/>
+ <testCase name="Regex string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;this STRING contains 'abc' as a substring&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;contains 'abc' as a substring&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), Matches( &quot;this string contains 'abc' as a&quot; ))">
+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
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Regression test #1" duration="{duration}"/>
+ <testCase name="StartsWith string matcher" duration="{duration}">
+ <failure message="CHECK_THAT(testStringForMatching(), StartsWith( &quot;This String&quot; ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "This String"
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(testStringForMatching(), StartsWith( &quot;string&quot;, Catch::CaseSensitive::No ))">
+FAILED:
+ CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )
+with expansion:
+ "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="String matchers" duration="{duration}"/>
+ <testCase name="Vector Approx matcher" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Empty vector is roughly equal to an empty vector" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/A vector is approx equal to itself" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/Different length" duration="{duration}"/>
+ <testCase name="Vector Approx matcher/Vectors with elements/Same length, different elements" duration="{duration}"/>
+ <testCase name="Vector Approx matcher -- failing" duration="{duration}"/>
+ <testCase name="Vector Approx matcher -- failing/Empty and non empty vectors are not approx equal" duration="{duration}">
+ <failure message="CHECK_THAT(empty, Approx( t1 ))">
+FAILED:
+ CHECK_THAT( empty, Approx( t1 ) )
+with expansion:
+ { } is approx: { 1.0, 2.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector Approx matcher -- failing/Just different vectors" duration="{duration}">
+ <failure message="CHECK_THAT(v1, Approx( v2 ))">
+FAILED:
+ CHECK_THAT( v1, Approx( v2 ) )
+with expansion:
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (element)" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (vector)" duration="{duration}"/>
+ <testCase name="Vector matchers/Contains (element), composed" duration="{duration}"/>
+ <testCase name="Vector matchers/Equals" duration="{duration}"/>
+ <testCase name="Vector matchers/UnorderedEquals" duration="{duration}"/>
+ <testCase name="Vector matchers that fail" duration="{duration}"/>
+ <testCase name="Vector matchers that fail/Contains (element)" duration="{duration}">
+ <failure message="CHECK_THAT(v, VectorContains( -1 ))">
+FAILED:
+ CHECK_THAT( v, VectorContains( -1 ) )
+with expansion:
+ { 1, 2, 3 } Contains: -1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, VectorContains( 1 ))">
+FAILED:
+ CHECK_THAT( empty, VectorContains( 1 ) )
+with expansion:
+ { } Contains: 1
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/Contains (vector)" duration="{duration}">
+ <failure message="CHECK_THAT(empty, Contains( v ))">
+FAILED:
+ CHECK_THAT( empty, Contains( v ) )
+with expansion:
+ { } Contains: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v, Contains( v2 ))">
+FAILED:
+ CHECK_THAT( v, Contains( v2 ) )
+with expansion:
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/Equals" duration="{duration}">
+ <failure message="CHECK_THAT(v, Equals( v2 ))">
+FAILED:
+ CHECK_THAT( v, Equals( v2 ) )
+with expansion:
+ { 1, 2, 3 } Equals: { 1, 2 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v2, Equals( v ))">
+FAILED:
+ CHECK_THAT( v2, Equals( v ) )
+with expansion:
+ { 1, 2 } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, Equals( v ))">
+FAILED:
+ CHECK_THAT( empty, Equals( v ) )
+with expansion:
+ { } Equals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(v, Equals( empty ))">
+FAILED:
+ CHECK_THAT( v, Equals( empty ) )
+with expansion:
+ { 1, 2, 3 } Equals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Vector matchers that fail/UnorderedEquals" duration="{duration}">
+ <failure message="CHECK_THAT(v, UnorderedEquals( empty ))">
+FAILED:
+ CHECK_THAT( v, UnorderedEquals( empty ) )
+with expansion:
+ { 1, 2, 3 } UnorderedEquals: { }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(empty, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( empty, UnorderedEquals( v ) )
+with expansion:
+ { } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(permuted, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK_THAT(permuted, UnorderedEquals( v ))">
+FAILED:
+ CHECK_THAT( permuted, UnorderedEquals( v ) )
+with expansion:
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+at Matchers.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp">
+ <testCase name="Basic use of the Contains range matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different argument ranges, same element type, default comparison" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different argument ranges, same element type, custom comparison" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Different element type, custom comparisons" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Can handle type that requires ADL-found free function begin and end" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Initialization with move only types" duration="{duration}"/>
+ <testCase name="Basic use of the Contains range matcher/Matching using matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Simple, std-provided containers" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Type with empty" duration="{duration}"/>
+ <testCase name="Basic use of the Empty range matcher/Type requires ADL found empty free function" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types (differ in array N)" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers of different container types and value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Container conversions/Two equal containers, one random access, one not" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type/Two equal containers of different value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Value type/Two non-equal containers of different value types" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Ranges with begin that needs ADL" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Custom predicate" duration="{duration}"/>
+ <testCase name="Type conversions of RangeEquals and similar/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AllMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/Empty evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/One false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Basic usage/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/One false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Contained type is convertible to bool/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AllTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AnyMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/Empty evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/One true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Basic usage/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/One true evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Contained type is convertible to bool/All false evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of AnyTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Type requires ADL found begin and end" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of NoneMatch range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/All true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/Empty evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/One true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Basic usage/All false evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/One true evaluates to false" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Contained type is convertible to bool/All false evaluates to true" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting/All are read" duration="{duration}"/>
+ <testCase name="Usage of NoneTrue range matcher/Shortcircuiting/Short-circuited" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Empty container matches empty container" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Empty container does not match non-empty container" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers (with same first elements)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Ranges that need ADL begin/end" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Compare against std::initializer_list" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/Check short-circuits on failure" duration="{duration}"/>
+ <testCase name="Usage of RangeEquals range matcher/Check short-circuiting behaviour/All elements are checked on success" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container matches empty container" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Empty container does not match non-empty container" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal 1-length non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two equal-sized, non-equal, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Basic usage/Two non-equal-sized, non-empty containers" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Custom predicate/Two non-equal non-empty containers (close enough)" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Ranges that need ADL begin/end" duration="{duration}"/>
+ <testCase name="Usage of UnorderedRangeEquals range matcher/Compare against std::initializer_list" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Some with stdlib containers" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Type requires ADL found size free function" duration="{duration}"/>
+ <testCase name="Usage of the SizeIs range matcher/Type has size member" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Message.tests.cpp">
+ <testCase name="#1455 - INFO and WARN can start with a linebreak" duration="{duration}"/>
+ <testCase name="CAPTURE can deal with complex expressions" duration="{duration}"/>
+ <testCase name="CAPTURE can deal with complex expressions involving commas" duration="{duration}"/>
+ <testCase name="CAPTURE parses string and character constants" duration="{duration}"/>
+ <testCase name="FAIL aborts the test" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="FAIL does not require an argument" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="FAIL_CHECK does not abort the test" duration="{duration}">
+ <failure message="FAIL_CHECK()">
+FAILED:
+This is a failure
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO and UNSCOPED_INFO can stream multiple arguments" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Show infos!
+This info has multiple parts.
+This unscoped info has multiple parts.
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO and WARN do not abort tests" duration="{duration}"/>
+ <testCase name="INFO gets logged on failure" duration="{duration}">
+ <failure message="REQUIRE(a == 1)">
+FAILED:
+ REQUIRE( a == 1 )
+with expansion:
+ 2 == 1
+this message should be logged
+so should this
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO gets logged on failure, even if captured before successful assertions" duration="{duration}">
+ <failure message="CHECK(a == 1)">
+FAILED:
+ CHECK( a == 1 )
+with expansion:
+ 2 == 1
+this message may be logged later
+this message should be logged
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(a == 0)">
+FAILED:
+ CHECK( a == 0 )
+with expansion:
+ 2 == 0
+this message may be logged later
+this message should be logged
+and this, but later
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="INFO is reset for each loop" duration="{duration}">
+ <failure message="REQUIRE(i &lt; 10)">
+FAILED:
+ REQUIRE( i &lt; 10 )
+with expansion:
+ 10 &lt; 10
+current counter 10
+i := 10
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Output from all sections is reported/one" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Message from section one
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Output from all sections is reported/two" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Message from section two
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="SUCCEED counts as a test pass" duration="{duration}"/>
+ <testCase name="SUCCEED does not require an argument" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported/one" duration="{duration}"/>
+ <testCase name="Standard output from all sections is reported/two" duration="{duration}"/>
+ <testCase name="The NO_FAIL macro reports a failure but does not fail the test" duration="{duration}"/>
+ <testCase name="just failure" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+Previous info should not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="just failure after unscoped info" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+previous unscoped info SHOULD not be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="just info" duration="{duration}"/>
+ <testCase name="just unscoped info" duration="{duration}"/>
+ <testCase name="mix info, unscoped info and warning" duration="{duration}"/>
+ <testCase name="not prints unscoped info from previous failures" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="print unscoped info if passing unscoped info is printed" duration="{duration}"/>
+ <testCase name="prints unscoped info on failure" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+this SHOULD be seen
+this SHOULD also be seen
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="prints unscoped info only for the first assertion" duration="{duration}">
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+this SHOULD be seen only ONCE
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="sends information to INFO" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+hi
+i := 7
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="stacks unscoped info in loops" duration="{duration}">
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+Count 1 to 3...
+1
+2
+3
+at Message.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(false)">
+FAILED:
+ CHECK( false )
+Count 4 to 6...
+4
+5
+6
+at Message.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Misc.tests.cpp">
+ <testCase name="# A test name that starts with a #" duration="{duration}"/>
+ <testCase name="#1175 - Hidden Test" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" duration="{duration}"/>
+ <testCase name="#835 -- errno should not be touched by Catch2" duration="{duration}">
+ <skipped message="CHECK(f() == 0)">
+FAILED:
+ CHECK( f() == 0 )
+with expansion:
+ 1 == 0
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="#961 -- Dynamically created sections should all be reported" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 0" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 1" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 2" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 3" duration="{duration}"/>
+ <testCase name="#961 -- Dynamically created sections should all be reported/Looped section 4" duration="{duration}"/>
+ <testCase name="A Template product test case - Foo&lt;float>" duration="{duration}"/>
+ <testCase name="A Template product test case - Foo&lt;int>" duration="{duration}"/>
+ <testCase name="A Template product test case - std::vector&lt;float>" duration="{duration}"/>
+ <testCase name="A Template product test case - std::vector&lt;int>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - Bar&lt;float, 42>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - Bar&lt;int, 9>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - std::array&lt;float, 42>" duration="{duration}"/>
+ <testCase name="A Template product test case with array signature - std::array&lt;int, 9>" duration="{duration}"/>
+ <testCase name="A couple of nested sections followed by a failure" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+to infinity and beyond
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="A couple of nested sections followed by a failure/Outer" duration="{duration}"/>
+ <testCase name="A couple of nested sections followed by a failure/Outer/Inner" duration="{duration}"/>
+ <testCase name="An empty test with no assertions" duration="{duration}"/>
+ <testCase name="Factorials are computed" duration="{duration}"/>
+ <testCase name="ManuallyRegistered" duration="{duration}"/>
+ <testCase name="Nice descriptive name" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int, double, float>" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int, double>" duration="{duration}"/>
+ <testCase name="Product with differing arities - std::tuple&lt;int>" duration="{duration}"/>
+ <testCase name="Sends stuff to stdout and stderr" duration="{duration}"/>
+ <testCase name="Tabs and newlines show in output" duration="{duration}">
+ <failure message="CHECK(s1 == s2)">
+FAILED:
+ CHECK( s1 == s2 )
+with expansion:
+ "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 0" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 1" duration="{duration}"/>
+ <testCase name="Template test case with test types specified inside std::tuple - MyTypes - 2" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - float/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - int/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::string/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - float,4/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - int,5/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="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" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="TemplateTestSig: vectors can be sized and resized - std::string,15/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="Testing checked-if" duration="{duration}"/>
+ <testCase name="Testing checked-if 2" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 3" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 4" duration="{duration}">
+ <skipped message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="Testing checked-if 5" duration="{duration}">
+ <skipped message="({Unknown expression after the reported line})">
+FAILED:
+ {Unknown expression after the reported line}
+Uncaught exception should fail!
+at Misc.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="This test 'should' fail but doesn't" duration="{duration}"/>
+ <testCase name="checkedElse" duration="{duration}"/>
+ <testCase name="checkedElse, failing" duration="{duration}">
+ <failure message="REQUIRE(testCheckedElse( false ))">
+FAILED:
+ REQUIRE( testCheckedElse( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="checkedIf" duration="{duration}"/>
+ <testCase name="checkedIf, failing" duration="{duration}">
+ <failure message="REQUIRE(testCheckedIf( false ))">
+FAILED:
+ REQUIRE( testCheckedIf( false ) )
+with expansion:
+ false
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="even more nested SECTION tests" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c/d (leaf)" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/c/e (leaf)" duration="{duration}"/>
+ <testCase name="even more nested SECTION tests/f (leaf)" duration="{duration}"/>
+ <testCase name="first tag" duration="{duration}"/>
+ <testCase name="long long" duration="{duration}"/>
+ <testCase name="looped SECTION tests" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 0" duration="{duration}">
+ <failure message="CHECK(b > a)">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 0 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="looped SECTION tests/b is currently: 1" duration="{duration}">
+ <failure message="CHECK(b > a)">
+FAILED:
+ CHECK( b > a )
+with expansion:
+ 1 > 1
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="looped SECTION tests/b is currently: 2" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 3" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 4" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 5" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 6" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 7" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 8" duration="{duration}"/>
+ <testCase name="looped SECTION tests/b is currently: 9" duration="{duration}"/>
+ <testCase name="looped tests" duration="{duration}">
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[0] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[1] (1) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[3] (3) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[4] (5) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[6] (13) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(( fib[i] % 2 ) == 0)">
+FAILED:
+ CHECK( ( fib[i] % 2 ) == 0 )
+with expansion:
+ 1 == 0
+Testing if fib[7] (21) is even
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="more nested SECTION tests" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/equal/doesn't equal" duration="{duration}">
+ <failure message="REQUIRE(a == b)">
+FAILED:
+ REQUIRE( a == b )
+with expansion:
+ 1 == 2
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="more nested SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/doesn't equal/not equal" duration="{duration}"/>
+ <testCase name="more nested SECTION tests/doesn't equal/less than" duration="{duration}"/>
+ <testCase name="nested SECTION tests" duration="{duration}"/>
+ <testCase name="nested SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="nested SECTION tests/doesn't equal/not equal" duration="{duration}"/>
+ <testCase name="not allowed" duration="{duration}"/>
+ <testCase name="null strings" duration="{duration}"/>
+ <testCase name="random SECTION tests" duration="{duration}"/>
+ <testCase name="random SECTION tests/doesn't equal" duration="{duration}"/>
+ <testCase name="random SECTION tests/not equal" duration="{duration}"/>
+ <testCase name="second tag" duration="{duration}"/>
+ <testCase name="send a single char to INFO" duration="{duration}">
+ <failure message="REQUIRE(false)">
+FAILED:
+ REQUIRE( false )
+3
+at Misc.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="toString on const wchar_t const pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on const wchar_t pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on wchar_t const pointer returns the string contents" duration="{duration}"/>
+ <testCase name="toString on wchar_t returns the string contents" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing bigger changes size and capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing smaller changes size but not capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/resizing smaller changes size but not capacity/We can use the 'swap trick' to reset the capacity" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/reserving bigger changes capacity but not size" duration="{duration}"/>
+ <testCase name="vectors can be sized and resized/reserving smaller does not change size or capacity" duration="{duration}"/>
+ <testCase name="xmlentitycheck" duration="{duration}"/>
+ <testCase name="xmlentitycheck/embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" duration="{duration}"/>
+ <testCase name="xmlentitycheck/encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Skip.tests.cpp">
+ <testCase name="Empty generators can SKIP in constructor" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+This generator is empty
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="a succeeding test can still be skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="dynamic skipping works with generators" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 41
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failed assertions before SKIP cause test case to fail" duration="{duration}">
+ <skipped message="CHECK(3 == 4)">
+FAILED:
+ CHECK( 3 == 4 )
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing for some generator values causes entire test case to fail" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing in some unskipped sections causes entire test case to fail/skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="failing in some unskipped sections causes entire test case to fail/not skipped" duration="{duration}">
+ <skipped message="FAIL()">
+FAILED:
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="nested sections can be skipped dynamically at runtime/A" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2/B1" duration="{duration}"/>
+ <testCase name="nested sections can be skipped dynamically at runtime/B2/B" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="nested sections can be skipped dynamically at runtime/B" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime/not skipped" duration="{duration}"/>
+ <testCase name="sections can be skipped dynamically at runtime/skipped" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="sections can be skipped dynamically at runtime/also not skipped" duration="{duration}"/>
+ <testCase name="skipped tests can optionally provide a reason" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+skipping because answer = 43
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ <testCase name="tests can be skipped dynamically at runtime" duration="{duration}">
+ <skipped message="SKIP()">
+SKIPPED
+at Skip.tests.cpp:<line number>
+ </skipped>
+ </testCase>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp">
+ <testCase name="Stringifying std::chrono::duration helpers" duration="{duration}"/>
+ <testCase name="Stringifying std::chrono::duration with weird ratios" duration="{duration}"/>
+ <testCase name="Stringifying std::chrono::time_point&lt;system_clock>" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp">
+ <testCase name="Capture and info messages" duration="{duration}"/>
+ <testCase name="Capture and info messages/Capture should stringify like assertions" duration="{duration}"/>
+ <testCase name="Capture and info messages/Info should NOT stringify the way assertions do" duration="{duration}"/>
+ <testCase name="Character pretty printing" duration="{duration}"/>
+ <testCase name="Character pretty printing/Specifically escaped" duration="{duration}"/>
+ <testCase name="Character pretty printing/General chars" duration="{duration}"/>
+ <testCase name="Character pretty printing/Low ASCII" duration="{duration}"/>
+ <testCase name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set/Floats" duration="{duration}"/>
+ <testCase name="Precision of floating point stringification can be set/Double" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Single item" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Multiple" duration="{duration}"/>
+ <testCase name="Static arrays are convertible to string/Non-trivial inner items" duration="{duration}"/>
+ <testCase name="std::map is convertible string" duration="{duration}"/>
+ <testCase name="std::map is convertible string/empty" duration="{duration}"/>
+ <testCase name="std::map is convertible string/single item" duration="{duration}"/>
+ <testCase name="std::map is convertible string/several items" duration="{duration}"/>
+ <testCase name="std::set is convertible string" duration="{duration}"/>
+ <testCase name="std::set is convertible string/empty" duration="{duration}"/>
+ <testCase name="std::set is convertible string/single item" duration="{duration}"/>
+ <testCase name="std::set is convertible string/several items" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp">
+ <testCase name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" duration="{duration}"/>
+ <testCase name="std::pair&lt;int,const std::string> -> toString" duration="{duration}"/>
+ <testCase name="std::pair&lt;int,std::string> -> toString" duration="{duration}"/>
+ <testCase name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp">
+ <testCase name="tuple&lt;>" duration="{duration}"/>
+ <testCase name="tuple&lt;float,int>" duration="{duration}"/>
+ <testCase name="tuple&lt;int>" duration="{duration}"/>
+ <testCase name="tuple&lt;string,string>" duration="{duration}"/>
+ <testCase name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp">
+ <testCase name="array&lt;int, N> -> toString" duration="{duration}"/>
+ <testCase name="vec&lt;vec&lt;string,alloc>> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;bool> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;int,allocator> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;int> -> toString" duration="{duration}"/>
+ <testCase name="vector&lt;string> -> toString" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp">
+ <testCase name="stringify ranges" duration="{duration}"/>
+ <testCase name="stringify( has_maker )" duration="{duration}"/>
+ <testCase name="stringify( has_maker_and_operator )" duration="{duration}"/>
+ <testCase name="stringify( has_neither )" duration="{duration}"/>
+ <testCase name="stringify( has_operator )" duration="{duration}"/>
+ <testCase name="stringify( has_template_operator )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_maker> )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_maker_and_operator> )" duration="{duration}"/>
+ <testCase name="stringify( vectors&lt;has_operator> )" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/Tricky.tests.cpp">
+ <testCase name="#1514: stderr/stdout is not captured in tests aborted by an exception" duration="{duration}">
+ <failure message="FAIL()">
+FAILED:
+1514
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="(unimplemented) static bools can be evaluated" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/compare to true" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/compare to false" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/negation" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/double negation" duration="{duration}"/>
+ <testCase name="(unimplemented) static bools can be evaluated/direct" duration="{duration}"/>
+ <testCase name="A failing expression with a non streamable type is still captured" duration="{duration}">
+ <failure message="CHECK(&amp;o1 == &amp;o2)">
+FAILED:
+ CHECK( &amp;o1 == &amp;o2 )
+with expansion:
+ 0x<hex digits> == 0x<hex digits>
+at Tricky.tests.cpp:<line number>
+ </failure>
+ <failure message="CHECK(o1 == o2)">
+FAILED:
+ CHECK( o1 == o2 )
+with expansion:
+ {?} == {?}
+at Tricky.tests.cpp:<line number>
+ </failure>
+ </testCase>
+ <testCase name="An expression with side-effects should only be evaluated once" duration="{duration}"/>
+ <testCase name="Assertions then sections" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section/Another section" duration="{duration}"/>
+ <testCase name="Assertions then sections/A section/Another other section" duration="{duration}"/>
+ <testCase name="Commas in various macros are allowed" duration="{duration}"/>
+ <testCase name="Comparing function pointers" duration="{duration}"/>
+ <testCase name="Objects that evaluated in boolean contexts can be checked" duration="{duration}"/>
+ <testCase name="Test enum bit values" duration="{duration}"/>
+ <testCase name="X/level/0/a" duration="{duration}"/>
+ <testCase name="X/level/0/b" duration="{duration}"/>
+ <testCase name="X/level/1/a" duration="{duration}"/>
+ <testCase name="X/level/1/b" duration="{duration}"/>
+ <testCase name="boolean member" duration="{duration}"/>
+ <testCase name="has printf" duration="{duration}"/>
+ <testCase name="non streamable - with conv. op" duration="{duration}"/>
+ <testCase name="non-copyable objects" duration="{duration}"/>
+ <testCase name="null_ptr" duration="{duration}"/>
+ <testCase name="pointer to class" duration="{duration}"/>
+ </file>
+ <file path="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp">
+ <testCase name="Anonymous test case 1" duration="{duration}"/>
+ <testCase name="Test case with one argument" duration="{duration}"/>
+ <testCase name="Variadic macros" duration="{duration}"/>
+ <testCase name="Variadic macros/Section with one argument" duration="{duration}"/>
+ </file>
+</testExecutions>
diff --git a/tests/SelfTest/Baselines/tap.sw.approved.txt b/tests/SelfTest/Baselines/tap.sw.approved.txt
new file mode 100644
index 0000000..801946d
--- /dev/null
+++ b/tests/SelfTest/Baselines/tap.sw.approved.txt
@@ -0,0 +1,4571 @@
+# filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+# rng-seed: 1
+# # A test name that starts with a #
+ok {test-number} - with 1 message: 'yay'
+# #1027: Bitfields can be captured
+ok {test-number} - y.v == 0 for: 0 == 0
+# #1027: Bitfields can be captured
+ok {test-number} - 0 == y.v for: 0 == 0
+# #1147
+ok {test-number} - t1 == t2 for: {?} == {?}
+# #1147
+ok {test-number} - t1 != t2 for: {?} != {?}
+# #1147
+ok {test-number} - t1 < t2 for: {?} < {?}
+# #1147
+ok {test-number} - t1 > t2 for: {?} > {?}
+# #1147
+ok {test-number} - t1 <= t2 for: {?} <= {?}
+# #1147
+ok {test-number} - t1 >= t2 for: {?} >= {?}
+# #1175 - Hidden Test
+ok {test-number} -
+# #1238
+ok {test-number} - std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+# #1238
+ok {test-number} - std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+# #1245
+ok {test-number} -
+# #1319: Sections can have description (even if it is not saved
+ok {test-number} -
+# #1403
+ok {test-number} - h1 == h2 for: [1403 helper] == [1403 helper]
+# #1455 - INFO and WARN can start with a linebreak
+warning {test-number} - '
+This info message starts with a linebreak' with 1 message: '
+This warning message starts with a linebreak'
+This would not be caught previously
+Nor would this
+# #1514: stderr/stdout is not captured in tests aborted by an exception
+not ok {test-number} - explicitly with 1 message: '1514'
+# #1548
+ok {test-number} - std::is_same<TypeList<int>, TypeList<int>>::value for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - spec.matches(*fakeTestCase("spec . char")) for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - spec.matches(*fakeTestCase("spec , char")) for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - !(spec.matches(*fakeTestCase(R"(spec \, char)"))) for: !false
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec {a} char)")) for: true
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec [a] char)")) for: true
+# #1912 -- test spec parser handles escaping
+ok {test-number} - !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) for: !false
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec \ char)")) for: true
+# #1913 - GENERATE inside a for loop should not keep recreating the generator
+ok {test-number} - counter < 7 for: 3 < 7
+# #1913 - GENERATE inside a for loop should not keep recreating the generator
+ok {test-number} - counter < 7 for: 6 < 7
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 1 != 3
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 1 != 4
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 2 != 3
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 2 != 4
+# #1938 - GENERATE after a section
+ok {test-number} - with 1 message: 'A'
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 1
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 2
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 3
+# #1938 - Section followed by flat generate
+ok {test-number} - 1
+# #1938 - Section followed by flat generate
+ok {test-number} - m for: 2
+# #1938 - Section followed by flat generate
+ok {test-number} - m for: 3
+# #1938 - flat generate
+ok {test-number} - m for: 1
+# #1938 - flat generate
+ok {test-number} - m for: 2
+# #1938 - flat generate
+ok {test-number} - m for: 3
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'A'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'A'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 6'
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+ok {test-number} -
+# #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+ok {test-number} -
+# #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+ok {test-number} -
+# #2152 - ULP checks between differently signed values were wrong - double
+ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+# #2152 - ULP checks between differently signed values were wrong - double
+ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+# #2152 - ULP checks between differently signed values were wrong - float
+ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+# #2152 - ULP checks between differently signed values were wrong - float
+ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+# #2615 - Throwing in constructor generator fails test case but does not abort
+not ok {test-number} - unexpected exception with message: 'failure to init'
+# #748 - captures with unexpected exceptions
+not ok {test-number} - unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+# #748 - captures with unexpected exceptions
+not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
+# #748 - captures with unexpected exceptions
+ok {test-number} - thisThrows() with 1 message: 'answer := 42'
+# #809
+ok {test-number} - 42 == f for: 42 == {?}
+# #833
+ok {test-number} - a == t for: 3 == 3
+# #833
+ok {test-number} - a == t for: 3 == 3
+# #833
+ok {test-number} - throws_int(true)
+# #833
+ok {test-number} - throws_int(true), int
+# #833
+ok {test-number} - throws_int(false)
+# #833
+ok {test-number} - "aaa", Catch::Matchers::EndsWith("aaa") for: "aaa" ends with: "aaa"
+# #833
+ok {test-number} - templated_tests<int>(3) for: true
+# #835 -- errno should not be touched by Catch2
+not ok {test-number} - f() == 0 for: 1 == 0
+# #835 -- errno should not be touched by Catch2
+ok {test-number} - errno_after == 1 for: 1 == 1
+# #872
+ok {test-number} - x == 4 for: {?} == 4 with 1 message: 'dummy := 0'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# 'Not' checks that should fail
+not ok {test-number} - false != false
+# 'Not' checks that should fail
+not ok {test-number} - true != true
+# 'Not' checks that should fail
+not ok {test-number} - !true for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(true) for: !true
+# 'Not' checks that should fail
+not ok {test-number} - !trueValue for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(trueValue) for: !true
+# 'Not' checks that should fail
+not ok {test-number} - !(1 == 1) for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(1 == 1)
+# 'Not' checks that should succeed
+ok {test-number} - false == false
+# 'Not' checks that should succeed
+ok {test-number} - true == true
+# 'Not' checks that should succeed
+ok {test-number} - !false for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(false) for: !false
+# 'Not' checks that should succeed
+ok {test-number} - !falseValue for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(falseValue) for: !false
+# 'Not' checks that should succeed
+ok {test-number} - !(1 == 2) for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(1 == 2)
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<true>::value == true for: true == true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - true == is_true<true>::value for: true == true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<false>::value == false for: false == false
+# (unimplemented) static bools can be evaluated
+ok {test-number} - false == is_true<false>::value for: false == false
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !is_true<false>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !!is_true<true>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<true>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !(is_true<false>::value) for: !false
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# A METHOD_AS_TEST_CASE based test run that fails
+not ok {test-number} - s == "world" for: "hello" == "world"
+# A METHOD_AS_TEST_CASE based test run that succeeds
+ok {test-number} - s == "hello" for: "hello" == "hello"
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1 == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 1 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 3 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 6 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 1 > 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 3 > 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 6 > 0
+# A TEST_CASE_METHOD based test run that fails
+not ok {test-number} - m_a == 2 for: 1 == 2
+# A TEST_CASE_METHOD based test run that succeeds
+ok {test-number} - m_a == 1 for: 1 == 1
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ok {test-number} - m_a++ == 0 for: 0 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+not ok {test-number} - m_a == 0 for: 1 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ok {test-number} - m_a++ == 0 for: 0 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ok {test-number} - m_a == 1 for: 1 == 1
+# A Template product test case - Foo<float>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - Foo<int>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - std::vector<float>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - std::vector<int>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case with array signature - Bar<float, 42>
+ok {test-number} - x.size() > 0 for: 42 > 0
+# A Template product test case with array signature - Bar<int, 9>
+ok {test-number} - x.size() > 0 for: 9 > 0
+# A Template product test case with array signature - std::array<float, 42>
+ok {test-number} - x.size() > 0 for: 42 > 0
+# A Template product test case with array signature - std::array<int, 9>
+ok {test-number} - x.size() > 0 for: 9 > 0
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - -d == -1.23_a for: -1.22999999999999998 == Approx( -1.22999999999999998 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.22999999999999998 == Approx( 1.19999999999999996 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.22999999999999998 != Approx( 1.19999999999999996 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 )
+# A couple of nested sections followed by a failure
+ok {test-number} - with 1 message: 'that's not flying - that's failing in style'
+# A couple of nested sections followed by a failure
+not ok {test-number} - explicitly with 1 message: 'to infinity and beyond'
+# A failing expression with a non streamable type is still captured
+not ok {test-number} - &o1 == &o2 for: 0x<hex digits> == 0x<hex digits>
+# A failing expression with a non streamable type is still captured
+not ok {test-number} - o1 == o2 for: {?} == {?}
+# Absolute margin
+ok {test-number} - 104.0 != Approx(100.0) for: 104.0 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 )
+# An expression with side-effects should only be evaluated once
+ok {test-number} - i++ == 7 for: 7 == 7
+# An expression with side-effects should only be evaluated once
+ok {test-number} - i++ == 8 for: 8 == 8
+# An unchecked exception reports the line of the last assertion
+ok {test-number} - 1 == 1
+# An unchecked exception reports the line of the last assertion
+not ok {test-number} - unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
+# Anonymous test case 1
+ok {test-number} - with 1 message: 'anonymous test case'
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(0)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(1234656)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(-2), std::domain_error
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(0)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(1)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(-0.001), std::domain_error
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(1.0001), std::domain_error
+# Approx with exactly-representable margin
+ok {test-number} - 0.25f == Approx(0.0f).margin(0.25f) for: 0.25f == Approx( 0.0 )
+# Approx with exactly-representable margin
+ok {test-number} - 0.0f == Approx(0.25f).margin(0.25f) for: 0.0f == Approx( 0.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 )
+# Approximate PI
+ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 == Approx( 3.14100000000000001 )
+# Approximate PI
+ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 != Approx( 3.14100000000000001 )
+# Approximate comparisons with different epsilons
+ok {test-number} - d != Approx( 1.231 ) for: 1.22999999999999998 != Approx( 1.23100000000000009 )
+# Approximate comparisons with different epsilons
+ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 == Approx( 1.23100000000000009 )
+# Approximate comparisons with floats
+ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.230000019f == Approx( 1.23000001907348633 )
+# Approximate comparisons with floats
+ok {test-number} - 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 )
+# Approximate comparisons with ints
+ok {test-number} - 1 == Approx( 1 ) for: 1 == Approx( 1.0 )
+# Approximate comparisons with ints
+ok {test-number} - 0 == Approx( 0 ) for: 0 == Approx( 0.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 0 == Approx( dZero) for: 0 == Approx( 0.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 1.234f == Approx( dMedium ) for: 1.233999968f == Approx( 1.23399999999999999 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - dMedium == Approx( 1.234f ) for: 1.23399999999999999 == Approx( 1.23399996757507324 )
+# Arbitrary predicate matcher
+ok {test-number} - 1, Predicate<int>( alwaysTrue, "always true" ) for: 1 matches predicate: "always true"
+# Arbitrary predicate matcher
+ok {test-number} - 1, !Predicate<int>( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false"
+# Arbitrary predicate matcher
+ok {test-number} - "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal"
+# Arbitrary predicate matcher
+ok {test-number} - "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) for: "This wouldn't pass" not matches undescribed predicate
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - lhs | rhs for: Val: 1 | Val: 2
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - !(lhs & rhs) for: !(Val: 1 & Val: 2)
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(1) for: { 1, 2, 3 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - b, Contains(1) for: { 0, 1, 2 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - c, !Contains(1) for: { 4, 5, 6 } not contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(0, close_enough) for: { 1, 2, 3 } contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - b, Contains(0, close_enough) for: { 0, 1, 2 } contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - c, !Contains(0, close_enough) for: { 4, 5, 6 } not contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) for: { "abc", "abcd", "abcde" } contains element 4
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(1) for: { 1, 2, 3, 4, 5 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - in, !Contains(8) for: { 1, 2, 3, 4, 5 } not contains element 8
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(MoveOnlyTestElement{ 2 }) for: { 1, 2, 3 } contains element 2
+# Basic use of the Contains range matcher
+ok {test-number} - in, !Contains(MoveOnlyTestElement{ 9 }) for: { 1, 2, 3 } not contains element 9
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) for: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+# Basic use of the Empty range matcher
+ok {test-number} - empty_array, IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - non_empty_array, !IsEmpty() for: { 0.0 } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - empty_vec, IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - non_empty_vec, !IsEmpty() for: { 'a', 'b', 'c' } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - inner_lists_are_empty, !IsEmpty() for: { { } } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - inner_lists_are_empty.front(), IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - has_empty{}, !IsEmpty() for: {?} not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - unrelated::ADL_empty{}, IsEmpty() for: {?} is empty
+# CAPTURE can deal with complex expressions
+ok {test-number} - with 7 messages: 'a := 1' and 'b := 2' and 'c := 3' and 'a + b := 3' and 'a+b := 3' and 'c > b := true' and 'a == 1 := true'
+# CAPTURE can deal with complex expressions involving commas
+ok {test-number} - with 7 messages: 'custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0' and 'custom_index_op<int>{1, 2, 3}[(0, 1)] := 0' and 'custom_index_op<int>{1, 2, 3}[0] := 0' and '(helper_1436<int, int>{12, -12}) := { 12, -12 }' and '(helper_1436<int, int>(-12, 12)) := { -12, 12 }' and '(1, 2) := 2' and '(2, 3) := 3'
+# CAPTURE parses string and character constants
+ok {test-number} - with 11 messages: '("comma, in string", "escaped, \", ") := "escaped, ", "' and '"single quote in string,'," := "single quote in string,',"' and '"some escapes, \\,\\\\" := "some escapes, \,\\"' and '"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"' and ''"' := '"'' and ''\'' := '''' and '',' := ','' and ''}' := '}'' and '')' := ')'' and ''(' := '('' and ''{' := '{''
+# Capture and info messages
+ok {test-number} - true with 1 message: 'i := 2'
+# Capture and info messages
+ok {test-number} - true with 1 message: '3'
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "", "" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "", "a" )) for: !false
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "a", "a" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "a", "A" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "A", "a" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "A", "A" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "a", "b" )) for: !false
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "a", "B" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "", "a" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - !(lt( "a", "a" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - !(lt( "", "" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "a", "b" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "a", "B" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "A", "b" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "A", "B" ) for: true
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\t') == "'\\t'" for: "'\t'" == "'\t'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\n') == "'\\n'" for: "'\n'" == "'\n'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\r') == "'\\r'" for: "'\r'" == "'\r'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\f') == "'\\f'" for: "'\f'" == "'\f'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( ' ' ) == "' '" for: "' '" == "' '"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( 'A' ) == "'A'" for: "'A'" == "'A'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( 'z' ) == "'z'" for: "'z'" == "'z'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( '\0' ) == "0" for: "0" == "0"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" for: "2" == "2"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" for: "5" == "5"
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - name.empty() for: true
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - result for: {?}
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - result.type() == Catch::Clara::Detail::ResultType::Ok for: 0 == 0
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - parsed.type() == Catch::Clara::ParseResultType::NoMatch for: 1 == 1
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - parsed.remainingTokens().count() == 2 for: 2 == 2
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - name.empty() for: true
+# Clara::Arg supports single-arg parse the way Opt does
+ok {test-number} - name.empty() for: true
+# Clara::Arg supports single-arg parse the way Opt does
+ok {test-number} - name == "foo" for: "foo" == "foo"
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - !(parse_result) for: !{?}
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - parse_result for: {?}
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - res == std::vector<std::string>{ "aaa", "bbb" } for: { "aaa", "bbb" } == { "aaa", "bbb" }
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str().empty() for: true
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" for: "1 Using code: 2 2 Using code: 0 3 " == "1 Using code: 2 2 Using code: 0 3 "
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" for: "Using code: 2 A B Using code: 0 C " == "Using code: 2 A B Using code: 0 C "
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() && MatcherB() ) && MatcherC() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, MatcherA() && ( MatcherB() && MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() || MatcherB() ) || MatcherC() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, MatcherA() || ( MatcherB() || MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 0, !MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 1, !!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 0, !!!MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 1, !!!!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+# Combining concrete matchers does not use templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) && EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::MatchAnyOf<std::string>>::value'
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() || MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() && MatcherB() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail::MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric<MatcherB>>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() || !MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+# Combining templated and concrete matchers
+ok {test-number} - vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) for: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+# Combining templated and concrete matchers
+ok {test-number} - str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) for: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+# Combining templated and concrete matchers
+ok {test-number} - str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) for: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+# Combining templated matchers
+ok {test-number} - container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) for: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+# Commas in various macros are allowed
+ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+# Commas in various macros are allowed
+ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - true
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Comparing function pointers
+ok {test-number} - a for: 0x<hex digits>
+# Comparing function pointers
+ok {test-number} - a == &foo for: 0x<hex digits> == 0x<hex digits>
+# Comparison ops
+ok {test-number} - SimplePcg32{} == SimplePcg32{} for: {?} == {?}
+# Comparison ops
+ok {test-number} - SimplePcg32{ 0 } != SimplePcg32{} for: {?} != {?}
+# Comparison ops
+ok {test-number} - !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) for: !({?} == {?})
+# Comparison ops
+ok {test-number} - !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) for: !({?} != {?})
+# Comparison with explicitly convertible types
+ok {test-number} - td == Approx(10.0) for: StrongDoubleTypedef(10) == Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(10.0) == td for: Approx( 10.0 ) == StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td != Approx(11.0) for: StrongDoubleTypedef(10) != Approx( 11.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(11.0) != td for: Approx( 11.0 ) != StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td <= Approx(10.0) for: StrongDoubleTypedef(10) <= Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - td <= Approx(11.0) for: StrongDoubleTypedef(10) <= Approx( 11.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(10.0) <= td for: Approx( 10.0 ) <= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(9.0) <= td for: Approx( 9.0 ) <= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td >= Approx(9.0) for: StrongDoubleTypedef(10) >= Approx( 9.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - td >= Approx(td) for: StrongDoubleTypedef(10) >= Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(td) >= td for: Approx( 10.0 ) >= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(11.0) >= td for: Approx( 11.0 ) >= StrongDoubleTypedef(10)
+# Comparisons between ints where one side is computed
+ok {test-number} - 54 == 6*9 for: 54 == 54
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( -1 > 2u ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - -1 > 2u for: -1 > 2
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( 2u < -1 ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - 2u < -1 for: 2 < -1
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( minInt > 2u ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - minInt > 2u for: -2147483648 > 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - i == 1 for: 1 == 1
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - ui == 2 for: 2 == 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - l == 3 for: 3 == 3
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - ul == 4 for: 4 == 4
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - c == 5 for: 5 == 5
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - uc == 6 for: 6 == 6
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 1 == i for: 1 == 1
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 2 == ui for: 2 == 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 3 == l for: 3 == 3
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 4 == ul for: 4 == 4
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 5 == c for: 5 == 5
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 6 == uc for: 6 == 6
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - (std::numeric_limits<uint32_t>::max)() > ul for: 4294967295 (0x<hex digits>) > 4
+# Composed generic matchers shortcircuit
+ok {test-number} - !(matcher.match( 1 )) for: !false
+# Composed generic matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - matcher.match( 1 ) for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !(matcher.match( 1 )) for: !false
+# Composed matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - matcher.match( 1 ) for: true
+# Composed matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Contains string matcher
+not ok {test-number} - testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+# Contains string matcher
+not ok {test-number} - testStringForMatching(), ContainsSubstring( "STRING" ) for: "this string contains 'abc' as a substring" contains: "STRING"
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - call_count == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - make_data().size() == test_count for: 6 == 6
+# Cout stream properly declares it writes to stdout
+ok {test-number} - Catch::makeStream( "-" )->isConsole() for: true
+# Custom exceptions can be translated when testing for nothrow
+not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom()
+# Custom exceptions can be translated when testing for throwing as something else
+not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception
+# Custom std-exceptions can be custom translated
+not ok {test-number} - unexpected exception with message: 'custom std exception'
+# Default scale is invisible to comparison
+ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 )
+# Default scale is invisible to comparison
+ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **} == "{** unexpected enum value **}"
+# Empty generators can SKIP in constructor
+ok {test-number} - # SKIP 'This generator is empty'
+# Empty stream name opens cout stream
+ok {test-number} - Catch::makeStream( "" )->isConsole() for: true
+# EndsWith string matcher
+not ok {test-number} - testStringForMatching(), EndsWith( "Substring" ) for: "this string contains 'abc' as a substring" ends with: "Substring"
+# EndsWith string matcher
+not ok {test-number} - testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value1 ) == "Value1" for: "Value1" == "Value1"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value2 ) == "Value2" for: "Value2" == "Value2"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value3 ) == "Value3" for: "Value3" == "Value3"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" for: "{** unexpected enum value **}" == "{** unexpected enum value **}"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( ec3 ) == "Value2" for: "Value2" == "Value2"
+# Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red"
+# Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue"
+# Epsilon only applies to Approx's value
+ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 )
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 6 for: 7 == 6
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 8 for: 7 == 8
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 0 for: 7 == 0
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f == Approx( 9.10999965667724609 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 )
+# Equality checks that should fail
+not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 == Approx( 3.14150000000000018 )
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "goodbye" for: "hello" == "goodbye"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "hell" for: "hello" == "hell"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "hello1" for: "hello" == "hello1"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello.size() == 6 for: 5 == 6
+# Equality checks that should fail
+not ok {test-number} - x == Approx( 1.301 ) for: 1.30000000000000027 == Approx( 1.30099999999999993 )
+# Equality checks that should succeed
+ok {test-number} - data.int_seven == 7 for: 7 == 7
+# Equality checks that should succeed
+ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f == Approx( 9.10000038146972656 )
+# Equality checks that should succeed
+ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 == Approx( 3.14159265350000005 )
+# Equality checks that should succeed
+ok {test-number} - data.str_hello == "hello" for: "hello" == "hello"
+# Equality checks that should succeed
+ok {test-number} - "hello" == data.str_hello for: "hello" == "hello"
+# Equality checks that should succeed
+ok {test-number} - data.str_hello.size() == 5 for: 5 == 5
+# Equality checks that should succeed
+ok {test-number} - x == Approx( 1.3 ) for: 1.30000000000000027 == Approx( 1.30000000000000004 )
+# Equals
+ok {test-number} - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+# Equals
+ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+# Equals string matcher
+not ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+# Equals string matcher
+not ok {test-number} - testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) for: "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
+ok {test-number} - ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" for: "This exception has overridden what() method" == "This exception has overridden what() method"
+# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+ok {test-number} - ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" for: "OperatorException" == "OperatorException"
+# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+ok {test-number} - ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" for: "StringMakerException" == "StringMakerException"
+# Exception matchers that fail
+not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that fail
+not ok {test-number} - throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that succeed
+ok {test-number} - throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that succeed
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } for: SpecialException::what special exception has value of 2
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) for: DerivedException::what matches "starts with: "Derived""
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) for: DerivedException::what matches "ends with: "::what""
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) for: DerivedException::what matches "not starts with: "::what""
+# Exception message can be matched
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) for: SpecialException::what matches "starts with: "Special""
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) for: "expected exception" equals: "expected exception" (case insensitive)
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), StartsWith( "expected" ) for: "expected exception" starts with: "expected"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), EndsWith( "exception" ) for: "expected exception" ends with: "exception"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), ContainsSubstring( "except" ) for: "expected exception" contains: "except"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) for: "expected exception" contains: "except" (case insensitive)
+# Exceptions matchers
+ok {test-number} - throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) for: DerivedException::what exception message matches "DerivedException::what"
+# Exceptions matchers
+ok {test-number} - throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) for: DerivedException::what not exception message matches "derivedexception::what"
+# Exceptions matchers
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) for: SpecialException::what not exception message matches "DerivedException::what"
+# Exceptions matchers
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) for: SpecialException::what exception message matches "SpecialException::what"
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows(), std::string
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
+# FAIL aborts the test
+not ok {test-number} - explicitly with 1 message: 'This is a failure'
+# FAIL does not require an argument
+not ok {test-number} - explicitly
+# FAIL_CHECK does not abort the test
+not ok {test-number} - explicitly with 1 message: 'This is a failure'
+# FAIL_CHECK does not abort the test
+warning {test-number} - 'This message appears in the output'
+# Factorials are computed
+ok {test-number} - Factorial(0) == 1 for: 1 == 1
+# Factorials are computed
+ok {test-number} - Factorial(1) == 1 for: 1 == 1
+# Factorials are computed
+ok {test-number} - Factorial(2) == 2 for: 2 == 2
+# Factorials are computed
+ok {test-number} - Factorial(3) == 6 for: 6 == 6
+# Factorials are computed
+ok {test-number} - Factorial(10) == 3628800 for: 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+# Filter generator throws exception for empty generator
+ok {test-number} - filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+# Floating point matchers: double
+ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other
+# Floating point matchers: double
+ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other
+# Floating point matchers: double
+ok {test-number} - 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other
+# Floating point matchers: double
+ok {test-number} - -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other
+# Floating point matchers: double
+ok {test-number} - v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+# Floating point matchers: double
+ok {test-number} - 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0
+# Floating point matchers: double
+ok {test-number} - 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0
+# Floating point matchers: double
+ok {test-number} - -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0
+# Floating point matchers: double
+ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+# Floating point matchers: double
+ok {test-number} - 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - -0., WithinULP( 0., 0 ) for: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) for: 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) for: 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
+# Floating point matchers: double
+ok {test-number} - 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) for: 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+# Floating point matchers: double
+ok {test-number} - WithinAbs( 1., 0. )
+# Floating point matchers: double
+ok {test-number} - WithinAbs( 1., -1. ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - WithinULP( 1., 0 )
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., 0. )
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., -0.2 ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., 1. ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
+# Floating point matchers: float
+ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other
+# Floating point matchers: float
+ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other
+# Floating point matchers: float
+ok {test-number} - 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other
+# Floating point matchers: float
+ok {test-number} - -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other
+# Floating point matchers: float
+ok {test-number} - v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0
+# Floating point matchers: float
+ok {test-number} - 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0
+# Floating point matchers: float
+ok {test-number} - 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0
+# Floating point matchers: float
+ok {test-number} - -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0
+# Floating point matchers: float
+ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
+# Floating point matchers: float
+ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+# Floating point matchers: float
+ok {test-number} - WithinAbs( 1.f, 0.f )
+# Floating point matchers: float
+ok {test-number} - WithinAbs( 1.f, -1.f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinULP( 1.f, 0 )
+# Floating point matchers: float
+ok {test-number} - WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, 0.f )
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, -0.2f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, 1.f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+# Generators -- adapters
+ok {test-number} - i < 4 for: 1 < 4
+# Generators -- adapters
+ok {test-number} - i < 4 for: 2 < 4
+# Generators -- adapters
+ok {test-number} - i < 4 for: 3 < 4
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - j > 0 for: 1 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 2 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 3 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 1 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 2 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 3 > 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 3 == 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
+# Generators -- adapters
+ok {test-number} - chunk2.front() < 3 for: 1 < 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() < 3 for: 2 < 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk(2, value(1)), Catch::GeneratorException
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 1
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 1
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 3
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 2
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 2
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 3
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 3
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 3
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 3
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 3
+# Generators internals
+ok {test-number} - gen.get() == 123 for: 123 == 123
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4 for: 4 == 4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get().size() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.get() == "aa" for: "aa" == "aa"
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == "bb" for: "bb" == "bb"
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == "cc" for: "cc" == "cc"
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - filter([](int) { return false; }, value(1)), Catch::GeneratorException
+# Generators internals
+ok {test-number} - filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -2 for: -2 == -2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.90000000000000002 == Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.9'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.80000000000000004 == Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.8'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.70000000000000007 == Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.60000000000000009 == Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.6'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.50000000000000011 == Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.5'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.40000000000000013 == Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.30000000000000016 == Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.3'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.20000000000000015 == Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.10000000000000014 == Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.00000000000000014 == Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.09999999999999987 == Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.19999999999999987 == Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.29999999999999988 == Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.3'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.39999999999999991 == Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.49999999999999989 == Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.59999999999999987 == Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.6'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.69999999999999984 == Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.79999999999999982 == Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.8'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.8999999999999998 == Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.9'
+# Generators internals
+ok {test-number} - gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 )
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.22 ) for: 1.22999999999999998 >= Approx( 1.21999999999999997 )
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.23 ) for: 1.22999999999999998 >= Approx( 1.22999999999999998 )
+# Greater-than inequalities with different epsilons
+ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.22999999999999998 >= Approx( 1.23999999999999999 ))
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 >= Approx( 1.23999999999999999 )
+# Hashers with different seed produce different hash with same test case
+ok {test-number} - h1( dummy ) != h2( dummy ) for: 3422778688 (0x<hex digits>) != 130711275 (0x<hex digits>)
+# Hashers with same seed produce same hash
+ok {test-number} - h1( dummy ) == h2( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2903002874 (0x<hex digits>) != 2668622104 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2673152918 (0x<hex digits>) != 3916075712 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2074929312 (0x<hex digits>) != 3429949824 (0x<hex digits>)
+# Hashing test case produces same hash across multiple calls
+ok {test-number} - h( dummy ) == h( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
+# INFO and UNSCOPED_INFO can stream multiple arguments
+not ok {test-number} - explicitly with 3 messages: 'This info has multiple parts.' and 'This unscoped info has multiple parts.' and 'Show infos!'
+# INFO and WARN do not abort tests
+warning {test-number} - 'this is a message' with 1 message: 'this is a warning'
+# INFO gets logged on failure
+not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message should be logged' and 'so should this'
+# INFO gets logged on failure, even if captured before successful assertions
+ok {test-number} - a == 2 for: 2 == 2 with 1 message: 'this message may be logged later'
+# INFO gets logged on failure, even if captured before successful assertions
+not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message may be logged later' and 'this message should be logged'
+# INFO gets logged on failure, even if captured before successful assertions
+not ok {test-number} - a == 0 for: 2 == 0 with 3 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later'
+# INFO gets logged on failure, even if captured before successful assertions
+ok {test-number} - a == 2 for: 2 == 2 with 4 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later' and 'but not this'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 0 < 10 with 2 messages: 'current counter 0' and 'i := 0'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 1 < 10 with 2 messages: 'current counter 1' and 'i := 1'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 2 < 10 with 2 messages: 'current counter 2' and 'i := 2'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 3 < 10 with 2 messages: 'current counter 3' and 'i := 3'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 4 < 10 with 2 messages: 'current counter 4' and 'i := 4'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 5 < 10 with 2 messages: 'current counter 5' and 'i := 5'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 6 < 10 with 2 messages: 'current counter 6' and 'i := 6'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 7 < 10 with 2 messages: 'current counter 7' and 'i := 7'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 8 < 10 with 2 messages: 'current counter 8' and 'i := 8'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 9 < 10 with 2 messages: 'current counter 9' and 'i := 9'
+# INFO is reset for each loop
+not ok {test-number} - i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10'
+# Incomplete AssertionHandler
+not ok {test-number} - unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy
+# Inequality checks that should fail
+not ok {test-number} - data.int_seven != 7 for: 7 != 7
+# Inequality checks that should fail
+not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f != Approx( 9.10000038146972656 )
+# Inequality checks that should fail
+not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 != Approx( 3.14159265350000005 )
+# Inequality checks that should fail
+not ok {test-number} - data.str_hello != "hello" for: "hello" != "hello"
+# Inequality checks that should fail
+not ok {test-number} - data.str_hello.size() != 5 for: 5 != 5
+# Inequality checks that should succeed
+ok {test-number} - data.int_seven != 6 for: 7 != 6
+# Inequality checks that should succeed
+ok {test-number} - data.int_seven != 8 for: 7 != 8
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f != Approx( 9.10999965667724609 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 != Approx( 3.14150000000000018 )
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "goodbye" for: "hello" != "goodbye"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "hell" for: "hello" != "hell"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "hello1" for: "hello" != "hello1"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello.size() != 6 for: 5 != 6
+# JsonWriter
+ok {test-number} - stream.str() == "" for: "" == ""
+# JsonWriter
+ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
+# JsonWriter
+ok {test-number} - stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) for: "{ "int": 1, "double": 1.5, "true": true, "false": false, "string": "this is a string", "array": [ 1, 2 ] }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [ 1, 2 ] }" )
+# JsonWriter
+ok {test-number} - stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) for: "{ "empty_object": { }, "fully_object": { "key": 1 } }" ( contains: ""empty_object": { }," and contains: ""fully_object": { "key": 1 }" )
+# JsonWriter
+ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
+# JsonWriter
+ok {test-number} - stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" for: "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]" == "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]"
+# JsonWriter
+ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
+# JsonWriter
+ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
+# JsonWriter
+ok {test-number} - stream.str() == "\"custom\"" for: ""custom"" == ""custom""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\"\"" for: ""\""" == ""\"""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\\\"" for: ""\\"" == ""\\""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"/\"" for: ""/"" == ""/""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\b\"" for: ""\b"" == ""\b""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\f\"" for: ""\f"" == ""\f""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\n\"" for: ""\n"" == ""\n""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\r\"" for: ""\r"" == ""\r""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\t\"" for: ""\t"" == ""\t""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n""
+# Lambdas in assertions
+ok {test-number} - []() { return true; }() for: true
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.24 ) for: 1.22999999999999998 <= Approx( 1.23999999999999999 )
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.23 ) for: 1.22999999999999998 <= Approx( 1.22999999999999998 )
+# Less-than inequalities with different epsilons
+ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.22999999999999998 <= Approx( 1.21999999999999997 ))
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 <= Approx( 1.21999999999999997 )
+# ManuallyRegistered
+ok {test-number} - with 1 message: 'was called'
+# Matchers can be (AllOf) composed with the && operator
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "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
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+# Matchers can be (AnyOf) composed with the || operator
+ok {test-number} - testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+# Matchers can be composed with both && and ||
+ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+# Matchers can be composed with both && and || - failing
+not ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+# Matchers can be negated (Not) with the ! operator
+ok {test-number} - testStringForMatching(), !ContainsSubstring( "different" ) for: "this string contains 'abc' as a substring" not contains: "different"
+# Matchers can be negated (Not) with the ! operator - failing
+not ok {test-number} - testStringForMatching(), !ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" not contains: "substring"
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mismatching exception messages failing the test
+ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+# Mismatching exception messages failing the test
+not ok {test-number} - thisThrows(), "should fail" for: "expected exception" equals: "should fail"
+# Multireporter calls reporters and listeners in correct order
+ok {test-number} - records == expected for: { "Hello", "world", "Goodbye", "world" } == { "Hello", "world", "Goodbye", "world" }
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 3 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 4 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 5 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 6 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: -5 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: -4 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 90 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 91 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 92 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 93 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 94 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 95 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 96 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 97 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 98 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 99 > -6
+# Nice descriptive name
+warning {test-number} - 'This one ran'
+# Non-std exceptions can be translated
+not ok {test-number} - unexpected exception with message: 'custom exception'
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - True for: {?}
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - !False for: true
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - !(False) for: !{?}
+# Optionally static assertions
+ok {test-number} - with 1 message: 'std::is_void<void>::value'
+# Optionally static assertions
+ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
+# Optionally static assertions
+ok {test-number} - with 1 message: 'std::is_void<void>::value'
+# Optionally static assertions
+ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven > 7 for: 7 > 7
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 7 for: 7 < 7
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven > 8 for: 7 > 8
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 6 for: 7 < 6
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 0 for: 7 < 0
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < -1 for: 7 < -1
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven >= 8 for: 7 >= 8
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven <= 6 for: 7 <= 6
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one < 9 for: 9.100000381f < 9
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one > 10 for: 9.100000381f > 10
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "hello" for: "hello" > "hello"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "hello" for: "hello" < "hello"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "hellp" for: "hello" > "hellp"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "z" for: "hello" > "z"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "hellm" for: "hello" < "hellm"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "a" for: "hello" < "a"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello >= "z" for: "hello" >= "z"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello <= "a" for: "hello" <= "a"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven < 8 for: 7 < 8
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > 6 for: 7 > 6
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > 0 for: 7 > 0
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > -1 for: 7 > -1
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven >= 7 for: 7 >= 7
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven >= 6 for: 7 >= 6
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven <= 7 for: 7 <= 7
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven <= 8 for: 7 <= 8
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one > 9 for: 9.100000381f > 9
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one < 10 for: 9.100000381f < 10
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello <= "hello" for: "hello" <= "hello"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello >= "hello" for: "hello" >= "hello"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello < "hellp" for: "hello" < "hellp"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello < "zebra" for: "hello" < "zebra"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello > "hellm" for: "hello" > "hellm"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello > "a" for: "hello" > "a"
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4242248763 (0x<hex digits>) == 4242248763 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1867888929 (0x<hex digits>) == 1867888929 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1276619030 (0x<hex digits>) == 1276619030 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1911218783 (0x<hex digits>) == 1911218783 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1827115164 (0x<hex digits>) == 1827115164 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
+# Output from all sections is reported
+not ok {test-number} - explicitly with 1 message: 'Message from section one'
+# Output from all sections is reported
+not ok {test-number} - explicitly with 1 message: 'Message from section two'
+# Overloaded comma or address-of operators are not used
+ok {test-number} - ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+# Overloaded comma or address-of operators are not used
+ok {test-number} - &EvilMatcher(), EvilAddressOfOperatorUsed
+# Overloaded comma or address-of operators are not used
+ok {test-number} - EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
+# Overloaded comma or address-of operators are not used
+ok {test-number} - ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
+# Parse uints
+ok {test-number} - parseUInt( "0" ) == Optional<unsigned int>{ 0 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "100" ) == Optional<unsigned int>{ 100 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } for: {?} == {?}
+# Parse uints
+ok {test-number} - !(parseUInt( "" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "!!KJHF*#" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "-1" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "4294967296" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "42949672964294967296429496729642949672964294967296" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "2 4" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "0x<hex digits>", 10 )) for: !{?}
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.hasFilters() for: true
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.getInvalidSpecs().empty() for: true
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.matches( testCase ) for: true
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-count=8" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardCount == 8 for: 8 == 8
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) for: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) for: "Shard count must be positive" contains: "Shard count must be positive"
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-index=2" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardIndex == 2 for: 2 == 2
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) for: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-index=0" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardIndex == 0 for: 0 == 0
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing warnings
+ok {test-number} - cli.parse( { "test", "-w", "NoAssertions" } ) for: {?}
+# Parsing warnings
+ok {test-number} - config.warnings == WarnAbout::NoAssertions for: 1 == 1
+# Parsing warnings
+ok {test-number} - !(cli.parse( { "test", "-w", "NoTests" } )) for: !{?}
+# Parsing warnings
+ok {test-number} - cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) for: {?}
+# Parsing warnings
+ok {test-number} - config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) for: 3 == 3
+# Pointers can be compared to null
+ok {test-number} - p == 0 for: 0 == 0
+# Pointers can be compared to null
+ok {test-number} - p == pNULL for: 0 == 0
+# Pointers can be compared to null
+ok {test-number} - p != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - cp != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - cpc != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - returnsNull() == 0 for: {null string} == 0
+# Pointers can be compared to null
+ok {test-number} - returnsConstNull() == 0 for: {null string} == 0
+# Pointers can be compared to null
+ok {test-number} - 0 != p for: 0 != 0x<hex digits>
+# Precision of floating point stringification can be set
+ok {test-number} - str1.size() == 3 + 5 for: 8 == 8
+# Precision of floating point stringification can be set
+ok {test-number} - str2.size() == 3 + 10 for: 13 == 13
+# Precision of floating point stringification can be set
+ok {test-number} - str1.size() == 2 + 5 for: 7 == 7
+# Precision of floating point stringification can be set
+ok {test-number} - str2.size() == 2 + 15 for: 17 == 17
+# Predicate matcher can accept const char*
+ok {test-number} - "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) for: "foo" matches undescribed predicate
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - config.processName == "" for: "" == ""
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - config.processName == "test" for: "test" == "test"
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak == false for: false == false
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == -1 for: -1 == -1
+# Process can be configured on command line
+ok {test-number} - config.noThrow == false for: false == false
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications.empty() for: true
+# Process can be configured on command line
+ok {test-number} - !(cfg.hasTestFilters()) for: !false
+# Process can be configured on command line
+ok {test-number} - cfg.getReporterSpecs().size() == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } for: {?} == {?}
+# Process can be configured on command line
+ok {test-number} - cfg.getProcessedReporterSpecs().size() == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } for: {?} == {?}
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") for: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-b"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak == true for: true == true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--break"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-a"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-x", "2"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 2 for: 2 == 2
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") for: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 2 == 2
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 3 == 3
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") for: "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
+ok {test-number} - cli.parse({"test", "-e"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.noThrow for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--nothrow"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.noThrow for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-o", "filename.ext"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--out", "filename.ext"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-abe"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak for: true
+# Process can be configured on command line
+ok {test-number} - config.noThrow == true for: true == true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse( { "test", "--colour-mode", "default" } ) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--colour-mode", "ansi"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::ANSI for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--colour-mode", "none"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::None for: 3 == 3
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) for: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-samples=200" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkSamples == 200 for: 200 == 200
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkResamples == 20000 for: 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 == Approx( 0.98999999999999999 )
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-no-analysis" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkNoAnalysis for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkWarmupTime == 10 for: 10 == 10
+# Product with differing arities - std::tuple<int, double, float>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 3 >= 1
+# Product with differing arities - std::tuple<int, double>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 2 >= 1
+# Product with differing arities - std::tuple<int>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 1 >= 1
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation reports unknown methods
+ok {test-number} - Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
+# Range type with sentinel
+ok {test-number} - Catch::Detail::stringify(UsesSentinel{}) == "{ }" for: "{ }" == "{ }"
+# Reconstruction should be based on stringification: #914
+not ok {test-number} - truthy(false) for: Hey, its truthy!
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "this string contains 'abc' as a" ) for: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+# Registering reporter with '::' in name fails
+ok {test-number} - registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" for: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+# Regression test #1
+ok {test-number} - actual, !UnorderedEquals( expected ) for: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tags": [ { "aliases": [ "fakeTag" ], "count": 1 } ]" contains: "fakeTag" with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "reporters": [ { "name": "fake reporter", "description": "fake description" } ]" contains: "fake reporter" with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "class-name": "", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> <TagsFromMatchingTests> <Tag> <Count>1</Count> <Aliases> <Alias>fakeTag</Alias> </Aliases> </Tag> </TagsFromMatchingTests>" contains: "fakeTag" with 1 message: 'Tested reporter: XML'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> <AvailableReporters> <Reporter> <Name>fake reporter</Name> <Description>fake description</Description> </Reporter> </AvailableReporters>" contains: "fake reporter" with 1 message: 'Tested reporter: XML'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> <MatchingTests> <TestCase> <Name>fake test name</Name> <ClassName/> <Tags>[fakeTestTag]</Tags> <SourceInfo> <File>fake-file.cpp</File> <Line>123456789</Line> </SourceInfo> </TestCase> </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: XML'
+# Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla
+ok {test-number} -
+# SUCCEED counts as a test pass
+ok {test-number} - with 1 message: 'this is a success'
+# SUCCEED does not require an argument
+ok {test-number} -
+# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+ok {test-number} - before == 0 for: 0 == 0
+# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+ok {test-number} - after > before for: 1 > 0
+# Scenario: Do that thing with the thing
+ok {test-number} - itDoesThis() for: true
+# Scenario: Do that thing with the thing
+ok {test-number} - itDoesThat() for: true
+# Scenario: This is a really long scenario name to see how the list command deals with wrapping
+ok {test-number} - with 1 message: 'boo!'
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 10 for: 10 == 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 5 for: 5 == 5
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+A string sent directly to stdout
+A string sent directly to stderr
+A string sent to stderr via clog
+# Some simple comparisons between doubles
+ok {test-number} - d == Approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Some simple comparisons between doubles
+ok {test-number} - d != Approx( 1.22 ) for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# Some simple comparisons between doubles
+ok {test-number} - d != Approx( 1.24 ) for: 1.22999999999999998 != Approx( 1.23999999999999999 )
+# Some simple comparisons between doubles
+ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Some simple comparisons between doubles
+ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) != 1.21999999999999997
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) != 1.23999999999999999
+Message from section one
+Message from section two
+# StartsWith string matcher
+not ok {test-number} - testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String"
+# StartsWith string matcher
+not ok {test-number} - testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }"
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" for: "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" for: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" == "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) for: "this string contains 'abc' as a substring" contains: "string"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "abc" ) for: "this string contains 'abc' as a substring" contains: "abc"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), StartsWith( "this" ) for: "this string contains 'abc' as a substring" starts with: "this"
+# String matchers
+ok {test-number} - testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
+# String matchers
+ok {test-number} - testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+# StringRef
+ok {test-number} - empty.empty() for: true
+# StringRef
+ok {test-number} - empty.size() == 0 for: 0 == 0
+# StringRef
+ok {test-number} - std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.empty() == false for: false == false
+# StringRef
+ok {test-number} - s.size() == 5 for: 5 == 5
+# StringRef
+ok {test-number} - std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.data() == rawChars for: "hello" == "hello"
+# StringRef
+ok {test-number} - original == "original"
+# StringRef
+ok {test-number} - original.data()
+# StringRef
+ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
+# StringRef
+ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
+# StringRef
+ok {test-number} - ss.empty() == false for: false == false
+# StringRef
+ok {test-number} - ss.size() == 5 for: 5 == 5
+# StringRef
+ok {test-number} - std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - ss == "hello" for: hello == "hello"
+# StringRef
+ok {test-number} - ss.size() == 6 for: 6 == 6
+# StringRef
+ok {test-number} - std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.data() == s2.data() for: "hello world!" == "hello world!"
+# StringRef
+ok {test-number} - s.data() == ss.data() for: "hello world!" == "hello world!"
+# StringRef
+ok {test-number} - s.substr(s.size() + 1, 123).empty() for: true
+# StringRef
+ok {test-number} - std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.substr(1'000'000, 1).empty() for: true
+# StringRef
+ok {test-number} - reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
+# StringRef
+ok {test-number} - left == right for: Hello == Hello
+# StringRef
+ok {test-number} - left != left.substr(0, 3) for: Hello != Hel
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
+# StringRef
+ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
+# StringRef
+ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
+# StringRef
+ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
+# StringRef
+ok {test-number} - lhs == "some string += the stringref contents" for: "some string += the stringref contents" == "some string += the stringref contents"
+# StringRef
+ok {test-number} - together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'empty.size() == 0'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'empty.begin() == empty.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.size() == 3'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.data() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.begin() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.begin() != stringref.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.substr(10, 0).empty()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref[1] == 'b''
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.size() == 2'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.data() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.begin() != shortened.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: '!(sr1.empty())'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr1.size() == 3'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr2.empty()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr2.size() == 0'
+# Stringifying char arrays with statically known sizes - char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - signed char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - signed char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - unsigned char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - unsigned char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying std::chrono::duration helpers
+ok {test-number} - minute == seconds for: 1 m == 60 s
+# Stringifying std::chrono::duration helpers
+ok {test-number} - hour != seconds for: 1 h != 60 s
+# Stringifying std::chrono::duration helpers
+ok {test-number} - micro != milli for: 1 us != 1 ms
+# Stringifying std::chrono::duration helpers
+ok {test-number} - nano != micro for: 1 ns != 1 us
+# Stringifying std::chrono::duration with weird ratios
+ok {test-number} - half_minute != femto_second for: 1 [30/1]s != 1 fs
+# Stringifying std::chrono::duration with weird ratios
+ok {test-number} - pico_second != atto_second for: 1 ps != 1 as
+# Stringifying std::chrono::time_point<system_clock>
+ok {test-number} - now != later for: {iso8601-timestamp} != {iso8601-timestamp}
+# Tabs and newlines show in output
+not ok {test-number} - s1 == s2 for: "if ($b == 10) { $a = 20; }" == "if ($b == 10) { $a = 20; } "
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "[@zzz]" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "[@zzz]"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "file" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "file"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "2" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "2"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "10" ) for: "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
+ok {test-number} - registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tags with spaces and non-alphanumerical characters are accepted
+ok {test-number} - testCase.tags.size() == 2 for: 2 == 2
+# Tags with spaces and non-alphanumerical characters are accepted
+ok {test-number} - testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+# Template test case method with test types specified inside std::tuple - MyTypes - 0
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# Template test case method with test types specified inside std::tuple - MyTypes - 1
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# Template test case method with test types specified inside std::tuple - MyTypes - 2
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0
+ok {test-number} - std::is_default_constructible<TestType>::value for: true
+# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1
+ok {test-number} - std::is_default_constructible<TestType>::value for: true
+# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0
+ok {test-number} - std::is_trivially_copyable<TestType>::value for: true
+# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1
+ok {test-number} - std::is_trivially_copyable<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 0
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 1
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 2
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == 2 * V for: 12 == 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == 2 * V for: 8 == 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == 2 * V for: 10 == 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == 2 * V for: 30 == 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# Test case with identical tags keeps just one
+ok {test-number} - testCase.tags.size() == 1 for: 1 == 1
+# Test case with identical tags keeps just one
+ok {test-number} - testCase.tags[0] == Tag( "tag1" ) for: {?} == {?}
+# Test case with one argument
+ok {test-number} - with 1 message: 'no assertions'
+# Test enum bit values
+ok {test-number} - 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472
+# Test with special, characters "in name
+ok {test-number} -
+# Testing checked-if
+ok {test-number} - true
+# Testing checked-if
+ok {test-number} -
+# Testing checked-if
+ok {test-number} - false # TODO
+# Testing checked-if
+ok {test-number} - true
+# Testing checked-if
+ok {test-number} - false # TODO
+# Testing checked-if
+ok {test-number} -
+# Testing checked-if 2
+ok {test-number} - true
+# Testing checked-if 2
+not ok {test-number} - explicitly
+# Testing checked-if 3
+ok {test-number} - false # TODO
+# Testing checked-if 3
+not ok {test-number} - explicitly
+# Testing checked-if 4
+ok {test-number} - true
+# Testing checked-if 4
+not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+# Testing checked-if 5
+ok {test-number} - false # TODO
+# Testing checked-if 5
+not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+# The NO_FAIL macro reports a failure but does not fail the test
+ok {test-number} - 1 == 2 # TODO
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring("[fakeTag]"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "[fakeTag]"
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" )
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" )
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" )
+# This test 'should' fail but doesn't
+ok {test-number} - with 1 message: 'oops!'
+# Thrown string literals are translated
+not ok {test-number} - unexpected exception with message: 'For some reason someone is throwing a string literal!'
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2b.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - s2b.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase2.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2b.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - s2b.isComplete() for: true
+# Tracker
+ok {test-number} - s2b.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase3.isOpen() for: true
+# Tracker
+ok {test-number} - s1c.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2c.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase3.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Trim strings
+ok {test-number} - trim(std::string(no_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(leading_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(trailing_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( c_array ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_3, !RangeEquals( array_int_4 ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_3, !UnorderedRangeEquals( array_int_4 ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - with 1 message: 'ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a )'
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( list_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( list_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, !RangeEquals( vector_char_b ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, !UnorderedRangeEquals( vector_char_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - a, !RangeEquals( b ) for: { 1, 2, 3 } not elements are { 3, 2, 1 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+# Unexpected exceptions can be translated
+not ok {test-number} - unexpected exception with message: '3.14000000000000012'
+# Upcasting special member functions
+ok {test-number} - bptr->i == 3 for: 3 == 3
+# Upcasting special member functions
+ok {test-number} - bptr->i == 3 for: 3 == 3
+# Usage of AllMatch range matcher
+ok {test-number} - data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+# Usage of AllMatch range matcher
+ok {test-number} - data, !AllMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+# Usage of AllMatch range matcher
+ok {test-number} - needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked, allMatch for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked, !allMatch for: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AllMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AllTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - data, AnyMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+# Usage of AnyMatch range matcher
+ok {test-number} - data, !AnyMatch(Contains(0) && Contains(10)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+# Usage of AnyMatch range matcher
+ok {test-number} - needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked, !anyMatch for: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked, anyMatch for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[1]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[2]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked, AnyTrue() for: { false, false, false, false, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked, AnyTrue() for: { false, false, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AnyTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - data, NoneMatch(SizeIs(6)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+# Usage of NoneMatch range matcher
+ok {test-number} - data, !NoneMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+# Usage of NoneMatch range matcher
+ok {test-number} - needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked, noneMatch for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked, !noneMatch for: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[1]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[2]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked, !NoneTrue() for: { false, false, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of NoneTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of RangeEquals range matcher
+ok {test-number} - empty_vector, RangeEquals( empty_vector ) for: { } elements are { }
+# Usage of RangeEquals range matcher
+ok {test-number} - empty_vector, !RangeEquals( non_empty_vector ) for: { } not elements are { 1 }
+# Usage of RangeEquals range matcher
+ok {test-number} - non_empty_vector, !RangeEquals( empty_vector ) for: { 1 } not elements are { }
+# Usage of RangeEquals range matcher
+ok {test-number} - non_empty_array, RangeEquals( non_empty_array ) for: { 1 } elements are { 1 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( array_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, !RangeEquals( array_b ) for: { 1, 2, 3 } not elements are { 2, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, !RangeEquals( array_c ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, !RangeEquals( vector_b ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, RangeEquals( vector_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, !RangeEquals( vector_b, close_enough ) for: { 1, 2, 3 } not elements are { 3, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - needs_adl1, RangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+# Usage of RangeEquals range matcher
+ok {test-number} - needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) for: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( { 1, 2, 3 } ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) for: { 1, 2, 3 } elements are { 2, 4, 6 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1, !RangeEquals( arr ) for: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[0] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[1] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[2] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - !(mocked1.m_derefed[3]) for: !false
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1, RangeEquals( arr ) for: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[0] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[1] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[2] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[3] for: true
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - empty_vector, UnorderedRangeEquals( empty_vector ) for: { } unordered elements are { }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - empty_vector, !UnorderedRangeEquals( non_empty_vector ) for: { } not unordered elements are { 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - non_empty_vector, !UnorderedRangeEquals( empty_vector ) for: { 1 } not unordered elements are { }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - non_empty_array, UnorderedRangeEquals( non_empty_array ) for: { 1 } unordered elements are { 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( array_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, !UnorderedRangeEquals( array_b ) for: { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b, close_enough ) for: { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - needs_adl1, UnorderedRangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( { 10, 20, 1 } ) for: { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, SizeIs(0) for: { } has size == 0
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, !SizeIs(2) for: { } not has size == 2
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, SizeIs(Lt(2)) for: { } size matches is less than 2
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, SizeIs(2) for: { 0, 0 } has size == 2
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, SizeIs( Lt(3)) for: { 0, 0 } size matches is less than 3
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, !SizeIs(!Lt(3)) for: { 0, 0 } not size matches not is less than 3
+# Usage of the SizeIs range matcher
+ok {test-number} - map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3
+# Usage of the SizeIs range matcher
+ok {test-number} - unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12
+# Usage of the SizeIs range matcher
+ok {test-number} - has_size{}, SizeIs(13) for: {?} has size == 13
+# Use a custom approx
+ok {test-number} - d == approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Use a custom approx
+ok {test-number} - d == approx( 1.22 ) for: 1.22999999999999998 == Approx( 1.21999999999999997 )
+# Use a custom approx
+ok {test-number} - d == approx( 1.24 ) for: 1.22999999999999998 == Approx( 1.23999999999999999 )
+# Use a custom approx
+ok {test-number} - d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 )
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) == 1.21999999999999997
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) == 1.23999999999999999
+# Use a custom approx
+ok {test-number} - approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25
+# Variadic macros
+ok {test-number} - with 1 message: 'no assertions'
+# Vector Approx matcher
+ok {test-number} - empty, Approx( empty ) for: { } is approx: { }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx<double>( { 1., 2., 3. } ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+# Vector Approx matcher
+ok {test-number} - v1, !Approx( temp ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+# Vector Approx matcher
+ok {test-number} - v1, !Approx( v2 ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).margin( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).epsilon( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher -- failing
+not ok {test-number} - empty, Approx( t1 ) for: { } is approx: { 1.0, 2.0 }
+# Vector Approx matcher -- failing
+not ok {test-number} - v1, Approx( v2 ) for: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+# Vector matchers
+ok {test-number} - v, VectorContains( 1 ) for: { 1, 2, 3 } Contains: 1
+# Vector matchers
+ok {test-number} - v, VectorContains( 2 ) for: { 1, 2, 3 } Contains: 2
+# Vector matchers
+ok {test-number} - v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) for: { 1, 2, 3 } Contains: 2
+# Vector matchers
+ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, Contains<int>( { 1, 2 } ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, Contains( empty ) for: { 1, 2, 3 } Contains: { }
+# Vector matchers
+ok {test-number} - empty, Contains( empty ) for: { } Contains: { }
+# Vector matchers
+ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, Contains( v6 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, VectorContains( 1 ) && VectorContains( 2 ) for: { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+# Vector matchers
+ok {test-number} - v, Equals( v ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - empty, Equals( empty ) for: { } Equals: { }
+# Vector matchers
+ok {test-number} - v, Equals<int>( { 1, 2, 3 } ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, Equals( v6 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, UnorderedEquals( v ) for: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, UnorderedEquals<int>( { 3, 2, 1 } ) for: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+# Vector matchers
+ok {test-number} - empty, UnorderedEquals( empty ) for: { } UnorderedEquals: { }
+# Vector matchers
+ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - permuted, UnorderedEquals( v ) for: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) for: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+# Vector matchers
+ok {test-number} - v5_permuted, UnorderedEquals( v5 ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, VectorContains( -1 ) for: { 1, 2, 3 } Contains: -1
+# Vector matchers that fail
+not ok {test-number} - empty, VectorContains( 1 ) for: { } Contains: 1
+# Vector matchers that fail
+not ok {test-number} - empty, Contains( v ) for: { } Contains: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 4 }
+# Vector matchers that fail
+not ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2 }
+# Vector matchers that fail
+not ok {test-number} - v2, Equals( v ) for: { 1, 2 } Equals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - empty, Equals( v ) for: { } Equals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, Equals( empty ) for: { 1, 2, 3 } Equals: { }
+# Vector matchers that fail
+not ok {test-number} - v, UnorderedEquals( empty ) for: { 1, 2, 3 } UnorderedEquals: { }
+# Vector matchers that fail
+not ok {test-number} - empty, UnorderedEquals( v ) for: { } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - permuted, UnorderedEquals( v ) for: { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisThrows(), std::domain_error
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisDoesntThrow()
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisThrows()
+# When unchecked exceptions are thrown directly they are always failures
+not ok {test-number} - unexpected exception with message: 'unexpected exception'
+# When unchecked exceptions are thrown during a CHECK the test should continue
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown during a REQUIRE the test should abort fail
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown from functions they are always failures
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown from sections they are always failures
+not ok {test-number} - unexpected exception with message: 'unexpected exception'
+# X/level/0/a
+ok {test-number} -
+# X/level/0/b
+ok {test-number} -
+# X/level/1/a
+ok {test-number} -
+# X/level/1/b
+ok {test-number} -
+# XmlEncode
+ok {test-number} - encode( "normal string" ) == "normal string" for: "normal string" == "normal string"
+# XmlEncode
+ok {test-number} - encode( "" ) == "" for: "" == ""
+# XmlEncode
+ok {test-number} - encode( "smith & jones" ) == "smith &amp; jones" for: "smith &amp; jones" == "smith &amp; jones"
+# XmlEncode
+ok {test-number} - encode( "smith < jones" ) == "smith &lt; jones" for: "smith &lt; jones" == "smith &lt; jones"
+# XmlEncode
+ok {test-number} - encode( "smith > jones" ) == "smith > jones" for: "smith > jones" == "smith > jones"
+# XmlEncode
+ok {test-number} - encode( "smith ]]> jones" ) == "smith ]]&gt; jones" for: "smith ]]&gt; jones" == "smith ]]&gt; jones"
+# XmlEncode
+ok {test-number} - encode( stringWithQuotes ) == stringWithQuotes for: "don't "quote" me on that" == "don't "quote" me on that"
+# XmlEncode
+ok {test-number} - encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that" == "don't &quot;quote&quot; me on that"
+# XmlEncode
+ok {test-number} - encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
+# XmlEncode
+ok {test-number} - encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
+# XmlWriter writes boolean attributes as true/false
+ok {test-number} - stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") for: "<?xml version="1.0" encoding="UTF-8"?> <Element1 attr1="true" attr2="false"/> " ( contains: "attr1="true"" and contains: "attr2="false"" )
+# a succeeding test can still be skipped
+ok {test-number} -
+# a succeeding test can still be skipped
+ok {test-number} - # SKIP
+# analyse no analysis
+ok {test-number} - analysis.mean.point.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.mean.lower_bound.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.mean.upper_bound.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.point.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.lower_bound.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.upper_bound.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.total() == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.low_mild == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.low_severe == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.high_mild == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.high_severe == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.samples_seen == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outlier_variance == 0 for: 0.0 == 0
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( empty ) == "{ }" for: "{ }" == "{ }"
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# benchmark function call
+ok {test-number} - model.started == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.started == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.finished == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - called == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.started == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.started == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - called == 1 for: 1 == 1
+# boolean member
+ok {test-number} - obj.prop != 0 for: 0x<hex digits> != 0
+# checkedElse
+ok {test-number} - flag for: true
+# checkedElse
+ok {test-number} - testCheckedElse( true ) for: true
+# checkedElse, failing
+ok {test-number} - flag for: false # TODO
+# checkedElse, failing
+not ok {test-number} - testCheckedElse( false ) for: false
+# checkedIf
+ok {test-number} - flag for: true
+# checkedIf
+ok {test-number} - testCheckedIf( true ) for: true
+# checkedIf, failing
+ok {test-number} - flag for: false # TODO
+# checkedIf, failing
+not ok {test-number} - testCheckedIf( false ) for: false
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 1 == 1
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 1 == 1
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 2 == 2
+# comparisons between const int variables
+ok {test-number} - unsigned_char_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_short_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_int_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_long_var == 1 for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_char_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_short_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_int_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_long_var for: 1 == 1
+# convertToBits
+ok {test-number} - convertToBits( 0.f ) == 0 for: 0 == 0
+# convertToBits
+ok {test-number} - convertToBits( -0.f ) == ( 1ULL << 31 ) for: 2147483648 (0x<hex digits>) == 2147483648 (0x<hex digits>)
+# convertToBits
+ok {test-number} - convertToBits( 0. ) == 0 for: 0 == 0
+# convertToBits
+ok {test-number} - convertToBits( -0. ) == ( 1ULL << 63 ) for: 9223372036854775808 (0x<hex digits>) == 9223372036854775808 (0x<hex digits>)
+# convertToBits
+ok {test-number} - convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 for: 1 == 1
+# convertToBits
+ok {test-number} - convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 for: 1 == 1
+# dynamic skipping works with generators
+ok {test-number} - # SKIP 'skipping because answer = 41'
+# dynamic skipping works with generators
+ok {test-number} -
+# dynamic skipping works with generators
+ok {test-number} - # SKIP 'skipping because answer = 43'
+# empty tags are not allowed
+ok {test-number} - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+# erfc_inv
+ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 == Approx( -0.09203687623843015 )
+# erfc_inv
+ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 == Approx( -0.05980291115763361 )
+# erfc_inv
+ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 == Approx( 1.38590382434967796 )
+# estimate_clock_resolution
+ok {test-number} - res.mean.count() == rate for: 2000.0 == 2000 (0x<hex digits>)
+# estimate_clock_resolution
+ok {test-number} - res.outliers.total() == 0 for: 0 == 0
+# even more nested SECTION tests
+ok {test-number} -
+# even more nested SECTION tests
+ok {test-number} -
+# even more nested SECTION tests
+ok {test-number} -
+# failed assertions before SKIP cause test case to fail
+not ok {test-number} - 3 == 4
+# failed assertions before SKIP cause test case to fail
+ok {test-number} - # SKIP
+# failing for some generator values causes entire test case to fail
+not ok {test-number} - explicitly
+# failing for some generator values causes entire test case to fail
+ok {test-number} - # SKIP
+# failing for some generator values causes entire test case to fail
+not ok {test-number} - explicitly
+# failing for some generator values causes entire test case to fail
+ok {test-number} - # SKIP
+# failing in some unskipped sections causes entire test case to fail
+ok {test-number} - # SKIP
+# failing in some unskipped sections causes entire test case to fail
+not ok {test-number} - explicitly
+loose text artifact
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<int>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<std::string const&>::value)'
+# just failure
+not ok {test-number} - explicitly with 1 message: 'Previous info should not be seen'
+# just failure after unscoped info
+not ok {test-number} - explicitly with 1 message: 'previous unscoped info SHOULD not be seen'
+# long long
+ok {test-number} - l == std::numeric_limits<long long>::max() for: 9223372036854775807 (0x<hex digits>) == 9223372036854775807 (0x<hex digits>)
+# looped SECTION tests
+not ok {test-number} - b > a for: 0 > 1
+# looped SECTION tests
+not ok {test-number} - b > a for: 1 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 2 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 3 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 4 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 5 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 6 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 7 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 8 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 9 > 1
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[0] (1) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[1] (1) is even'
+# looped tests
+ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[2] (2) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[3] (3) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[4] (5) is even'
+# looped tests
+ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[5] (8) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[6] (13) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[7] (21) is even'
+# makeStream recognizes %debug stream name
+ok {test-number} - Catch::makeStream( "%debug" )
+# make_unique reimplementation
+ok {test-number} - !(lval.has_moved) for: !false
+# make_unique reimplementation
+ok {test-number} - rval.has_moved for: true
+# make_unique reimplementation
+ok {test-number} - *ptr == std::tuple<int, double, int>{1, 2., 3} for: {?} == {?}
+# mean
+ok {test-number} - m == 19. for: 19.0 == 19.0
+# measure
+ok {test-number} - x == 17 for: 17 == 17
+# measure
+ok {test-number} - x == 23 for: 23 == 23
+# measure
+ok {test-number} - r.elapsed.count() == 42 for: 42 == 42
+# measure
+ok {test-number} - r.result == 23 for: 23 == 23
+# measure
+ok {test-number} - r.iterations == 1 for: 1 == 1
+# measure
+ok {test-number} - s.elapsed.count() == 69 for: 69 == 69
+# measure
+ok {test-number} - s.result == 17 for: 17 == 17
+# measure
+ok {test-number} - s.iterations == 1 for: 1 == 1
+# mix info, unscoped info and warning
+warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'and warn may mix'
+# mix info, unscoped info and warning
+warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'they are not cleared after warnings'
+# more nested SECTION tests
+not ok {test-number} - a == b for: 1 == 2
+# more nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# more nested SECTION tests
+ok {test-number} - a < b for: 1 < 2
+# nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# nested SECTION tests
+ok {test-number} - b != a for: 2 != 1
+# nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+a!
+b1!
+# nested sections can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+!
+# non streamable - with conv. op
+ok {test-number} - s == "7" for: "7" == "7"
+# non-copyable objects
+ok {test-number} - ti == typeid(int) for: {?} == {?}
+# normal_quantile
+ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 == Approx( 0.13015979861484198 )
+# normal_quantile
+ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 == Approx( 0.08457408802851875 )
+# normal_quantile
+ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 == Approx( -1.95996398454005449 )
+# not allowed
+ok {test-number} -
+# not prints unscoped info from previous failures
+ok {test-number} - true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions'
+# not prints unscoped info from previous failures
+ok {test-number} - true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions'
+# not prints unscoped info from previous failures
+not ok {test-number} - false with 1 message: 'this SHOULD be seen'
+# null strings
+ok {test-number} - makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
+# null strings
+ok {test-number} - makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
+# null_ptr
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# pair<pair<int,const char *,pair<std::string,int> > -> toString
+ok {test-number} - ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }" == "{ { 42, "Arthur" }, { "Ford", 24 } }"
+# parseEnums
+ok {test-number} - parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+# pointer to class
+ok {test-number} - p == 0 for: 0 == 0
+# print unscoped info if passing unscoped info is printed
+ok {test-number} - true with 1 message: 'this MAY be seen IF info is printed for passing assertions'
+# prints unscoped info on failure
+not ok {test-number} - false with 2 messages: 'this SHOULD be seen' and 'this SHOULD also be seen'
+# prints unscoped info only for the first assertion
+not ok {test-number} - false with 1 message: 'this SHOULD be seen only ONCE'
+# prints unscoped info only for the first assertion
+ok {test-number} - true
+# prints unscoped info only for the first assertion
+ok {test-number} - true with 1 message: 'this MAY also be seen only ONCE IF info is printed for passing assertions'
+# prints unscoped info only for the first assertion
+ok {test-number} - true
+# random SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# random SECTION tests
+ok {test-number} - b != a for: 2 != 1
+# random SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "b", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "azcdefcg" for: "azcdefcg" == "azcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "c", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "abzdefzg" for: "abzdefzg" == "abzdefzg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "a", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "zbcdefcg" for: "zbcdefcg" == "zbcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "g", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "abcdefcz" for: "abcdefcz" == "abcdefcz"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, letters, "replaced") for: true
+# replaceInPlace
+ok {test-number} - letters == "replaced" for: "replaced" == "replaced"
+# replaceInPlace
+ok {test-number} - !(Catch::replaceInPlace(letters, "x", "z")) for: !false
+# replaceInPlace
+ok {test-number} - letters == letters for: "abcdefcg" == "abcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "c", "cc") for: true
+# replaceInPlace
+ok {test-number} - letters == "abccdefccg" for: "abccdefccg" == "abccdefccg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(s, "--", "-") for: true
+# replaceInPlace
+ok {test-number} - s == "--" for: "--" == "--"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(s, "'", "|'") for: true
+# replaceInPlace
+ok {test-number} - s == "didn|'t" for: "didn|'t" == "didn|'t"
+# request an unknown %-starting stream fails
+ok {test-number} - Catch::makeStream( "%somestream" )
+# resolution
+ok {test-number} - res.size() == count for: 10 == 10
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 1 >= 1
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 2 >= 1
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 4 >= 2
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 8 >= 4
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 16 >= 8
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 32 >= 16
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 64 >= 32
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 128 >= 64
+# run_for_at_least, chronometer
+ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
+# run_for_at_least, chronometer
+ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
+# run_for_at_least, chronometer
+ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 1 >= 1
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 2 >= 1
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 4 >= 2
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 8 >= 4
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 16 >= 8
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 32 >= 16
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 64 >= 32
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 128 >= 64
+# run_for_at_least, int
+ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
+# run_for_at_least, int
+ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
+# run_for_at_least, int
+ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
+# sections can be skipped dynamically at runtime
+ok {test-number} -
+# sections can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+# sections can be skipped dynamically at runtime
+ok {test-number} -
+# send a single char to INFO
+not ok {test-number} - false with 1 message: '3'
+# sends information to INFO
+not ok {test-number} - false with 2 messages: 'hi' and 'i := 7'
+# shortened hide tags are split apart
+ok {test-number} - testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+# skipped tests can optionally provide a reason
+ok {test-number} - # SKIP 'skipping because answer = 43'
+# splitString
+ok {test-number} - splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
+# splitString
+ok {test-number} - splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
+# splitString
+ok {test-number} - splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
+# stacks unscoped info in loops
+not ok {test-number} - false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
+# stacks unscoped info in loops
+not ok {test-number} - false with 4 messages: 'Count 4 to 6...' and '4' and '5' and '6'
+# startsWith
+ok {test-number} - !(startsWith("", 'c')) for: !false
+# startsWith
+ok {test-number} - startsWith(std::string("abc"), 'a') for: true
+# startsWith
+ok {test-number} - startsWith("def"_catch_sr, 'd') for: true
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" == "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+# std::pair<int,const std::string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+# std::pair<int,std::string> -> toString
+ok {test-number} - ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( emptySet ) == "{ }" for: "{ }" == "{ }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }" == "{ "abc", "def", "ghi" }"
+# std::vector<std::pair<std::string,int> > -> toString
+ok {test-number} - ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }" == "{ { "green", 55 } }"
+# stdout and stderr streams have %-starting name
+ok {test-number} - Catch::makeStream( "%stderr" )->isConsole() for: true
+# stdout and stderr streams have %-starting name
+ok {test-number} - Catch::makeStream( "%stdout" )->isConsole() for: true
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)" == "op<<(streamable_range)"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)" == "stringmaker(streamable_range)"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
+# stringify( has_maker )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" for: "StringMaker<has_maker>" == "StringMaker<has_maker>"
+# stringify( has_maker_and_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" for: "StringMaker<has_maker_and_operator>" == "StringMaker<has_maker_and_operator>"
+# stringify( has_neither )
+ok {test-number} - ::Catch::Detail::stringify(item) == "{?}" for: "{?}" == "{?}"
+# stringify( has_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" for: "operator<<( has_operator )" == "operator<<( has_operator )"
+# stringify( has_template_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" for: "operator<<( has_template_operator )" == "operator<<( has_template_operator )"
+# stringify( vectors<has_maker> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }" == "{ StringMaker<has_maker> }"
+# stringify( vectors<has_maker_and_operator> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" for: "{ StringMaker<has_maker_and_operator> }" == "{ StringMaker<has_maker_and_operator> }"
+# stringify( vectors<has_operator> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" for: "{ operator<<( has_operator ) }" == "{ operator<<( has_operator ) }"
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 3 == 3
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 3 == 3
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 5 == 5
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 4 == 4
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+# tags with dots in later positions are not parsed as hidden
+ok {test-number} - testcase.tags.size() == 1 for: 1 == 1
+# tags with dots in later positions are not parsed as hidden
+ok {test-number} - testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
+# tests can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+# thrown std::strings are translated
+not ok {test-number} - unexpected exception with message: 'Why would you throw a std::string?'
+# toString on const wchar_t const pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on const wchar_t pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on wchar_t const pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on wchar_t returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10" == "Unknown enum value 10"
+# toString(enum class)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+# toString(enum class)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+# toString(enum w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "E2{0}" for: "E2{0}" == "E2{0}"
+# toString(enum w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "E2{1}" for: "E2{1}" == "E2{1}"
+# toString(enum)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+# toString(enum)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+# tuple<>
+ok {test-number} - "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }"
+# tuple<>
+ok {test-number} - "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }"
+# tuple<float,int>
+ok {test-number} - "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f"
+# tuple<float,int>
+ok {test-number} - "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+# tuple<int>
+ok {test-number} - "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
+# tuple<string,string>
+ok {test-number} - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }"
+# tuple<tuple<int>,tuple<>,float>
+ok {test-number} - "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == "{ { 42 }, { }, 1.5f }"
+# uniform samples
+ok {test-number} - e.point == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.upper_bound == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.lower_bound == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996
+# uniform_integer_distribution can return the bounds
+ok {test-number} - dist.a() == -10 for: -10 == -10
+# uniform_integer_distribution can return the bounds
+ok {test-number} - dist.b() == 10 for: 10 == 10
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() != 0 for: 0x<hex digits> != 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr1) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr2 for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr2 == 1 for: 1 == 1
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr2) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr1 for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr1 == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr1 == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr2 == 1 for: 1 == 1
+# vec<vec<string,alloc>> -> toString
+ok {test-number} - ::Catch::Detail::stringify(v) == "{ }" for: "{ }" == "{ }"
+# vec<vec<string,alloc>> -> toString
+ok {test-number} - ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }" == "{ { "hello" }, { "world" } }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ }" for: "{ }" == "{ }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true }" for: "{ true }" == "{ true }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true, false }" for: "{ true, false }" == "{ true, false }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }" == "{ "hello", "world" }"
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 10 for: 10 == 10
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 0 for: 0 == 0
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# warmup
+ok {test-number} - (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() for: 160000000 (0x<hex digits>) > 100
+# warmup
+ok {test-number} - (end - start) > Catch::Benchmark::Detail::warmup_time for: 310016000 ns > 100 ms
+# weighted_average_quantile
+ok {test-number} - q1 == 14.5 for: 14.5 == 14.5
+# weighted_average_quantile
+ok {test-number} - med == 18. for: 18.0 == 18.0
+# weighted_average_quantile
+ok {test-number} - q3 == 23. for: 23.0 == 23.0
+# xmlentitycheck
+ok {test-number} -
+# xmlentitycheck
+ok {test-number} -
+1..2281
+
diff --git a/tests/SelfTest/Baselines/tap.sw.multi.approved.txt b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt
new file mode 100644
index 0000000..7f281f6
--- /dev/null
+++ b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt
@@ -0,0 +1,4560 @@
+# filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
+# rng-seed: 1
+# # A test name that starts with a #
+ok {test-number} - with 1 message: 'yay'
+# #1027: Bitfields can be captured
+ok {test-number} - y.v == 0 for: 0 == 0
+# #1027: Bitfields can be captured
+ok {test-number} - 0 == y.v for: 0 == 0
+# #1147
+ok {test-number} - t1 == t2 for: {?} == {?}
+# #1147
+ok {test-number} - t1 != t2 for: {?} != {?}
+# #1147
+ok {test-number} - t1 < t2 for: {?} < {?}
+# #1147
+ok {test-number} - t1 > t2 for: {?} > {?}
+# #1147
+ok {test-number} - t1 <= t2 for: {?} <= {?}
+# #1147
+ok {test-number} - t1 >= t2 for: {?} >= {?}
+# #1175 - Hidden Test
+ok {test-number} -
+# #1238
+ok {test-number} - std::memcmp(uarr, "123", sizeof(uarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+# #1238
+ok {test-number} - std::memcmp(sarr, "456", sizeof(sarr)) == 0 for: 0 == 0 with 2 messages: 'uarr := "123"' and 'sarr := "456"'
+# #1245
+ok {test-number} -
+# #1319: Sections can have description (even if it is not saved
+ok {test-number} -
+# #1403
+ok {test-number} - h1 == h2 for: [1403 helper] == [1403 helper]
+# #1455 - INFO and WARN can start with a linebreak
+warning {test-number} - '
+This info message starts with a linebreak' with 1 message: '
+This warning message starts with a linebreak'
+# #1514: stderr/stdout is not captured in tests aborted by an exception
+not ok {test-number} - explicitly with 1 message: '1514'
+# #1548
+ok {test-number} - std::is_same<TypeList<int>, TypeList<int>>::value for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - spec.matches(*fakeTestCase("spec . char")) for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - spec.matches(*fakeTestCase("spec , char")) for: true
+# #1905 -- test spec parser properly clears internal state between compound tests
+ok {test-number} - !(spec.matches(*fakeTestCase(R"(spec \, char)"))) for: !false
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec {a} char)")) for: true
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec [a] char)")) for: true
+# #1912 -- test spec parser handles escaping
+ok {test-number} - !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) for: !false
+# #1912 -- test spec parser handles escaping
+ok {test-number} - spec.matches(*fakeTestCase(R"(spec \ char)")) for: true
+# #1913 - GENERATE inside a for loop should not keep recreating the generator
+ok {test-number} - counter < 7 for: 3 < 7
+# #1913 - GENERATE inside a for loop should not keep recreating the generator
+ok {test-number} - counter < 7 for: 6 < 7
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 1 != 3
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 1 != 4
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 2 != 3
+# #1913 - GENERATEs can share a line
+ok {test-number} - i != j for: 2 != 4
+# #1938 - GENERATE after a section
+ok {test-number} - with 1 message: 'A'
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 1
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 2
+# #1938 - GENERATE after a section
+ok {test-number} - m for: 3
+# #1938 - Section followed by flat generate
+ok {test-number} - 1
+# #1938 - Section followed by flat generate
+ok {test-number} - m for: 2
+# #1938 - Section followed by flat generate
+ok {test-number} - m for: 3
+# #1938 - flat generate
+ok {test-number} - m for: 1
+# #1938 - flat generate
+ok {test-number} - m for: 2
+# #1938 - flat generate
+ok {test-number} - m for: 3
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'A'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 3' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 1' and 'j := 4' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'A'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 3' and 'k := 6'
+# #1938 - mixed sections and generates
+ok {test-number} - with 1 message: 'B'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 5'
+# #1938 - mixed sections and generates
+ok {test-number} - with 3 messages: 'i := 2' and 'j := 4' and 'k := 6'
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 1
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 2
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 1
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 2
+# #1938 - nested generate
+ok {test-number} - m for: 3
+# #1938 - nested generate
+ok {test-number} - n for: 3
+# #1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
+ok {test-number} -
+# #1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
+ok {test-number} -
+# #1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
+ok {test-number} -
+# #2152 - ULP checks between differently signed values were wrong - double
+ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+# #2152 - ULP checks between differently signed values were wrong - double
+ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+# #2152 - ULP checks between differently signed values were wrong - float
+ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+# #2152 - ULP checks between differently signed values were wrong - float
+ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+# #2615 - Throwing in constructor generator fails test case but does not abort
+not ok {test-number} - unexpected exception with message: 'failure to init'
+# #748 - captures with unexpected exceptions
+not ok {test-number} - unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+# #748 - captures with unexpected exceptions
+not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
+# #748 - captures with unexpected exceptions
+ok {test-number} - thisThrows() with 1 message: 'answer := 42'
+# #809
+ok {test-number} - 42 == f for: 42 == {?}
+# #833
+ok {test-number} - a == t for: 3 == 3
+# #833
+ok {test-number} - a == t for: 3 == 3
+# #833
+ok {test-number} - throws_int(true)
+# #833
+ok {test-number} - throws_int(true), int
+# #833
+ok {test-number} - throws_int(false)
+# #833
+ok {test-number} - "aaa", Catch::Matchers::EndsWith("aaa") for: "aaa" ends with: "aaa"
+# #833
+ok {test-number} - templated_tests<int>(3) for: true
+# #835 -- errno should not be touched by Catch2
+not ok {test-number} - f() == 0 for: 1 == 0
+# #835 -- errno should not be touched by Catch2
+ok {test-number} - errno_after == 1 for: 1 == 1
+# #872
+ok {test-number} - x == 4 for: {?} == 4 with 1 message: 'dummy := 0'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# #961 -- Dynamically created sections should all be reported
+ok {test-number} - with 1 message: 'Everything is OK'
+# 'Not' checks that should fail
+not ok {test-number} - false != false
+# 'Not' checks that should fail
+not ok {test-number} - true != true
+# 'Not' checks that should fail
+not ok {test-number} - !true for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(true) for: !true
+# 'Not' checks that should fail
+not ok {test-number} - !trueValue for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(trueValue) for: !true
+# 'Not' checks that should fail
+not ok {test-number} - !(1 == 1) for: false
+# 'Not' checks that should fail
+not ok {test-number} - !(1 == 1)
+# 'Not' checks that should succeed
+ok {test-number} - false == false
+# 'Not' checks that should succeed
+ok {test-number} - true == true
+# 'Not' checks that should succeed
+ok {test-number} - !false for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(false) for: !false
+# 'Not' checks that should succeed
+ok {test-number} - !falseValue for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(falseValue) for: !false
+# 'Not' checks that should succeed
+ok {test-number} - !(1 == 2) for: true
+# 'Not' checks that should succeed
+ok {test-number} - !(1 == 2)
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<true>::value == true for: true == true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - true == is_true<true>::value for: true == true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<false>::value == false for: false == false
+# (unimplemented) static bools can be evaluated
+ok {test-number} - false == is_true<false>::value for: false == false
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !is_true<false>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !!is_true<true>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - is_true<true>::value for: true
+# (unimplemented) static bools can be evaluated
+ok {test-number} - !(is_true<false>::value) for: !false
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 1 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 1 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 2 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 2 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 4
+# 3x3x3 ints
+ok {test-number} - y < z for: 4 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 5
+# 3x3x3 ints
+ok {test-number} - y < z for: 5 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 7
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 7
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 8
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 8
+# 3x3x3 ints
+ok {test-number} - x < y for: 3 < 6
+# 3x3x3 ints
+ok {test-number} - y < z for: 6 < 9
+# 3x3x3 ints
+ok {test-number} - x < z for: 3 < 9
+# A METHOD_AS_TEST_CASE based test run that fails
+not ok {test-number} - s == "world" for: "hello" == "world"
+# A METHOD_AS_TEST_CASE based test run that succeeds
+ok {test-number} - s == "hello" for: "hello" == "hello"
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>
+not ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 1 for: 0 == 1
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>
+ok {test-number} - Template_Fixture_2<TestType>::m_a.size() == 0 for: 0 == 0
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 6 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>
+not ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() < 2 for: 2 < 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 6 >= 2
+# A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>
+ok {test-number} - Template_Fixture_2<TestType>{}.m_a.size() >= 2 for: 2 >= 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0 == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1.0f == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
+not ok {test-number} - Template_Fixture<TestType>::m_a == 2 for: 1 == 2
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0f == 1
+# A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 1 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 3 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
+not ok {test-number} - Nttp_Fixture<V>::value == 0 for: 6 == 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 1 > 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 3 > 0
+# A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
+ok {test-number} - Nttp_Fixture<V>::value > 0 for: 6 > 0
+# A TEST_CASE_METHOD based test run that fails
+not ok {test-number} - m_a == 2 for: 1 == 2
+# A TEST_CASE_METHOD based test run that succeeds
+ok {test-number} - m_a == 1 for: 1 == 1
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+ok {test-number} - m_a++ == 0 for: 0 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that fails
+not ok {test-number} - m_a == 0 for: 1 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ok {test-number} - m_a++ == 0 for: 0 == 0
+# A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds
+ok {test-number} - m_a == 1 for: 1 == 1
+# A Template product test case - Foo<float>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - Foo<int>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - std::vector<float>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case - std::vector<int>
+ok {test-number} - x.size() == 0 for: 0 == 0
+# A Template product test case with array signature - Bar<float, 42>
+ok {test-number} - x.size() > 0 for: 42 > 0
+# A Template product test case with array signature - Bar<int, 9>
+ok {test-number} - x.size() > 0 for: 9 > 0
+# A Template product test case with array signature - std::array<float, 42>
+ok {test-number} - x.size() > 0 for: 42 > 0
+# A Template product test case with array signature - std::array<int, 9>
+ok {test-number} - x.size() > 0 for: 9 > 0
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - -d == -1.23_a for: -1.22999999999999998 == Approx( -1.22999999999999998 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.22999999999999998 == Approx( 1.19999999999999996 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.22999999999999998 != Approx( 1.19999999999999996 )
+# A comparison that uses literals instead of the normal constructor
+ok {test-number} - d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 )
+# A couple of nested sections followed by a failure
+ok {test-number} - with 1 message: 'that's not flying - that's failing in style'
+# A couple of nested sections followed by a failure
+not ok {test-number} - explicitly with 1 message: 'to infinity and beyond'
+# A failing expression with a non streamable type is still captured
+not ok {test-number} - &o1 == &o2 for: 0x<hex digits> == 0x<hex digits>
+# A failing expression with a non streamable type is still captured
+not ok {test-number} - o1 == o2 for: {?} == {?}
+# Absolute margin
+ok {test-number} - 104.0 != Approx(100.0) for: 104.0 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 )
+# Absolute margin
+ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 )
+# An expression with side-effects should only be evaluated once
+ok {test-number} - i++ == 7 for: 7 == 7
+# An expression with side-effects should only be evaluated once
+ok {test-number} - i++ == 8 for: 8 == 8
+# An unchecked exception reports the line of the last assertion
+ok {test-number} - 1 == 1
+# An unchecked exception reports the line of the last assertion
+not ok {test-number} - unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
+# Anonymous test case 1
+ok {test-number} - with 1 message: 'anonymous test case'
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(0)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(1234656)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).margin(-2), std::domain_error
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(0)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(1)
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(-0.001), std::domain_error
+# Approx setters validate their arguments
+ok {test-number} - Approx(0).epsilon(1.0001), std::domain_error
+# Approx with exactly-representable margin
+ok {test-number} - 0.25f == Approx(0.0f).margin(0.25f) for: 0.25f == Approx( 0.0 )
+# Approx with exactly-representable margin
+ok {test-number} - 0.0f == Approx(0.25f).margin(0.25f) for: 0.0f == Approx( 0.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 )
+# Approx with exactly-representable margin
+ok {test-number} - 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 )
+# Approximate PI
+ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 == Approx( 3.14100000000000001 )
+# Approximate PI
+ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 != Approx( 3.14100000000000001 )
+# Approximate comparisons with different epsilons
+ok {test-number} - d != Approx( 1.231 ) for: 1.22999999999999998 != Approx( 1.23100000000000009 )
+# Approximate comparisons with different epsilons
+ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 == Approx( 1.23100000000000009 )
+# Approximate comparisons with floats
+ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.230000019f == Approx( 1.23000001907348633 )
+# Approximate comparisons with floats
+ok {test-number} - 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 )
+# Approximate comparisons with ints
+ok {test-number} - 1 == Approx( 1 ) for: 1 == Approx( 1.0 )
+# Approximate comparisons with ints
+ok {test-number} - 0 == Approx( 0 ) for: 0 == Approx( 0.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 0 == Approx( dZero) for: 0 == Approx( 0.0 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - 1.234f == Approx( dMedium ) for: 1.233999968f == Approx( 1.23399999999999999 )
+# Approximate comparisons with mixed numeric types
+ok {test-number} - dMedium == Approx( 1.234f ) for: 1.23399999999999999 == Approx( 1.23399996757507324 )
+# Arbitrary predicate matcher
+ok {test-number} - 1, Predicate<int>( alwaysTrue, "always true" ) for: 1 matches predicate: "always true"
+# Arbitrary predicate matcher
+ok {test-number} - 1, !Predicate<int>( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false"
+# Arbitrary predicate matcher
+ok {test-number} - "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal"
+# Arbitrary predicate matcher
+ok {test-number} - "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) for: "This wouldn't pass" not matches undescribed predicate
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - lhs | rhs for: Val: 1 | Val: 2
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - !(lhs & rhs) for: !(Val: 1 & Val: 2)
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
+# Assertion macros support bit operators and bool conversions
+ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Assertions then sections
+ok {test-number} - true
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(1) for: { 1, 2, 3 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - b, Contains(1) for: { 0, 1, 2 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - c, !Contains(1) for: { 4, 5, 6 } not contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(0, close_enough) for: { 1, 2, 3 } contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - b, Contains(0, close_enough) for: { 0, 1, 2 } contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - c, !Contains(0, close_enough) for: { 4, 5, 6 } not contains element 0
+# Basic use of the Contains range matcher
+ok {test-number} - a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) for: { "abc", "abcd", "abcde" } contains element 4
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(1) for: { 1, 2, 3, 4, 5 } contains element 1
+# Basic use of the Contains range matcher
+ok {test-number} - in, !Contains(8) for: { 1, 2, 3, 4, 5 } not contains element 8
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(MoveOnlyTestElement{ 2 }) for: { 1, 2, 3 } contains element 2
+# Basic use of the Contains range matcher
+ok {test-number} - in, !Contains(MoveOnlyTestElement{ 9 }) for: { 1, 2, 3 } not contains element 9
+# Basic use of the Contains range matcher
+ok {test-number} - in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) for: { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+# Basic use of the Empty range matcher
+ok {test-number} - empty_array, IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - non_empty_array, !IsEmpty() for: { 0.0 } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - empty_vec, IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - non_empty_vec, !IsEmpty() for: { 'a', 'b', 'c' } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - inner_lists_are_empty, !IsEmpty() for: { { } } not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - inner_lists_are_empty.front(), IsEmpty() for: { } is empty
+# Basic use of the Empty range matcher
+ok {test-number} - has_empty{}, !IsEmpty() for: {?} not is empty
+# Basic use of the Empty range matcher
+ok {test-number} - unrelated::ADL_empty{}, IsEmpty() for: {?} is empty
+# CAPTURE can deal with complex expressions
+ok {test-number} - with 7 messages: 'a := 1' and 'b := 2' and 'c := 3' and 'a + b := 3' and 'a+b := 3' and 'c > b := true' and 'a == 1 := true'
+# CAPTURE can deal with complex expressions involving commas
+ok {test-number} - with 7 messages: 'custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0' and 'custom_index_op<int>{1, 2, 3}[(0, 1)] := 0' and 'custom_index_op<int>{1, 2, 3}[0] := 0' and '(helper_1436<int, int>{12, -12}) := { 12, -12 }' and '(helper_1436<int, int>(-12, 12)) := { -12, 12 }' and '(1, 2) := 2' and '(2, 3) := 3'
+# CAPTURE parses string and character constants
+ok {test-number} - with 11 messages: '("comma, in string", "escaped, \", ") := "escaped, ", "' and '"single quote in string,'," := "single quote in string,',"' and '"some escapes, \\,\\\\" := "some escapes, \,\\"' and '"some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<"' and ''"' := '"'' and ''\'' := '''' and '',' := ','' and ''}' := '}'' and '')' := ')'' and ''(' := '('' and ''{' := '{''
+# Capture and info messages
+ok {test-number} - true with 1 message: 'i := 2'
+# Capture and info messages
+ok {test-number} - true with 1 message: '3'
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "", "" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "", "a" )) for: !false
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "a", "a" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "a", "A" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "A", "a" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - eq( "A", "A" ) for: true
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "a", "b" )) for: !false
+# CaseInsensitiveEqualsTo is case insensitive
+ok {test-number} - !(eq( "a", "B" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "", "a" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - !(lt( "a", "a" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - !(lt( "", "" )) for: !false
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "a", "b" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "a", "B" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "A", "b" ) for: true
+# CaseInsensitiveLess is case insensitive
+ok {test-number} - lt( "A", "B" ) for: true
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\t') == "'\\t'" for: "'\t'" == "'\t'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\n') == "'\\n'" for: "'\n'" == "'\n'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\r') == "'\\r'" for: "'\r'" == "'\r'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify('\f') == "'\\f'" for: "'\f'" == "'\f'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( ' ' ) == "' '" for: "' '" == "' '"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( 'A' ) == "'A'" for: "'A'" == "'A'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( 'z' ) == "'z'" for: "'z'" == "'z'"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( '\0' ) == "0" for: "0" == "0"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( static_cast<char>(2) ) == "2" for: "2" == "2"
+# Character pretty printing
+ok {test-number} - ::Catch::Detail::stringify( static_cast<char>(5) ) == "5" for: "5" == "5"
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - name.empty() for: true
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - result for: {?}
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - result.type() == Catch::Clara::Detail::ResultType::Ok for: 0 == 0
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - parsed.type() == Catch::Clara::ParseResultType::NoMatch for: 1 == 1
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - parsed.remainingTokens().count() == 2 for: 2 == 2
+# Clara::Arg does not crash on incomplete input
+ok {test-number} - name.empty() for: true
+# Clara::Arg supports single-arg parse the way Opt does
+ok {test-number} - name.empty() for: true
+# Clara::Arg supports single-arg parse the way Opt does
+ok {test-number} - name == "foo" for: "foo" == "foo"
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - !(parse_result) for: !{?}
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - parse_result for: {?}
+# Clara::Opt supports accept-many lambdas
+ok {test-number} - res == std::vector<std::string>{ "aaa", "bbb" } for: { "aaa", "bbb" } == { "aaa", "bbb" }
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str().empty() for: true
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" for: "1 Using code: 2 2 Using code: 0 3 " == "1 Using code: 2 2 Using code: 0 3 "
+# ColourGuard behaviour
+ok {test-number} - streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" for: "Using code: 2 A B Using code: 0 C " == "Using code: 2 A B Using code: 0 C "
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() && MatcherB() ) && MatcherC() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, MatcherA() && ( MatcherB() && MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+# Combining MatchAllOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() || MatcherB() ) || MatcherC() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, MatcherA() || ( MatcherB() || MatcherC() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC, MatcherD>>:: value'
+# Combining MatchAnyOfGeneric does not nest
+ok {test-number} - 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 0, !MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 1, !!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::MatchNotOfGeneric<MatcherA>>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 0, !!!MatcherA() for: 0 not equals: (int) 1 or (string) "1"
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - with 1 message: 'std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value'
+# Combining MatchNotOfGeneric does not nest
+ok {test-number} - 1, !!!!MatcherA() for: 1 equals: (int) 1 or (string) "1"
+# Combining concrete matchers does not use templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) && EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::MatchAnyOf<std::string>>::value'
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() || MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() && MatcherB() for: 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+# Combining only templated matchers
+ok {test-number} - with 1 message: 'std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail::MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric<MatcherB>>>::value'
+# Combining only templated matchers
+ok {test-number} - 1, MatcherA() || !MatcherB() for: 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+# Combining templated and concrete matchers
+ok {test-number} - vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) for: { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+# Combining templated and concrete matchers
+ok {test-number} - str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) for: "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) for: "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+# Combining templated and concrete matchers
+ok {test-number} - str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) for: "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+# Combining templated and concrete matchers
+ok {test-number} - str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) for: "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+# Combining templated matchers
+ok {test-number} - container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) for: { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+# Commas in various macros are allowed
+ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3}
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+# Commas in various macros are allowed
+ok {test-number} - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) for: !({ 1, 2 } == { 1, 2, 3 })
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Commas in various macros are allowed
+ok {test-number} - true
+# Commas in various macros are allowed
+ok {test-number} - std::vector<int>{1, 2} == std::vector<int>{1, 2} for: { 1, 2 } == { 1, 2 }
+# Comparing function pointers
+ok {test-number} - a for: 0x<hex digits>
+# Comparing function pointers
+ok {test-number} - a == &foo for: 0x<hex digits> == 0x<hex digits>
+# Comparison ops
+ok {test-number} - SimplePcg32{} == SimplePcg32{} for: {?} == {?}
+# Comparison ops
+ok {test-number} - SimplePcg32{ 0 } != SimplePcg32{} for: {?} != {?}
+# Comparison ops
+ok {test-number} - !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) for: !({?} == {?})
+# Comparison ops
+ok {test-number} - !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) for: !({?} != {?})
+# Comparison with explicitly convertible types
+ok {test-number} - td == Approx(10.0) for: StrongDoubleTypedef(10) == Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(10.0) == td for: Approx( 10.0 ) == StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td != Approx(11.0) for: StrongDoubleTypedef(10) != Approx( 11.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(11.0) != td for: Approx( 11.0 ) != StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td <= Approx(10.0) for: StrongDoubleTypedef(10) <= Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - td <= Approx(11.0) for: StrongDoubleTypedef(10) <= Approx( 11.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(10.0) <= td for: Approx( 10.0 ) <= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(9.0) <= td for: Approx( 9.0 ) <= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - td >= Approx(9.0) for: StrongDoubleTypedef(10) >= Approx( 9.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - td >= Approx(td) for: StrongDoubleTypedef(10) >= Approx( 10.0 )
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(td) >= td for: Approx( 10.0 ) >= StrongDoubleTypedef(10)
+# Comparison with explicitly convertible types
+ok {test-number} - Approx(11.0) >= td for: Approx( 11.0 ) >= StrongDoubleTypedef(10)
+# Comparisons between ints where one side is computed
+ok {test-number} - 54 == 6*9 for: 54 == 54
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( -1 > 2u ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - -1 > 2u for: -1 > 2
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( 2u < -1 ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - 2u < -1 for: 2 < -1
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - ( minInt > 2u ) for: true
+# Comparisons between unsigned ints and negative signed ints match c++ standard behaviour
+ok {test-number} - minInt > 2u for: -2147483648 > 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - i == 1 for: 1 == 1
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - ui == 2 for: 2 == 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - l == 3 for: 3 == 3
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - ul == 4 for: 4 == 4
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - c == 5 for: 5 == 5
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - uc == 6 for: 6 == 6
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 1 == i for: 1 == 1
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 2 == ui for: 2 == 2
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 3 == l for: 3 == 3
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 4 == ul for: 4 == 4
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 5 == c for: 5 == 5
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - 6 == uc for: 6 == 6
+# Comparisons with int literals don't warn when mixing signed/ unsigned
+ok {test-number} - (std::numeric_limits<uint32_t>::max)() > ul for: 4294967295 (0x<hex digits>) > 4
+# Composed generic matchers shortcircuit
+ok {test-number} - !(matcher.match( 1 )) for: !false
+# Composed generic matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - matcher.match( 1 ) for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed generic matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !(matcher.match( 1 )) for: !false
+# Composed matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - matcher.match( 1 ) for: true
+# Composed matchers shortcircuit
+ok {test-number} - first.matchCalled for: true
+# Composed matchers shortcircuit
+ok {test-number} - !second.matchCalled for: true
+# Contains string matcher
+not ok {test-number} - testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+# Contains string matcher
+not ok {test-number} - testStringForMatching(), ContainsSubstring( "STRING" ) for: "this string contains 'abc' as a substring" contains: "STRING"
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - elem % 2 == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - call_count == 1 for: 1 == 1
+# Copy and then generate a range
+ok {test-number} - make_data().size() == test_count for: 6 == 6
+# Cout stream properly declares it writes to stdout
+ok {test-number} - Catch::makeStream( "-" )->isConsole() for: true
+# Custom exceptions can be translated when testing for nothrow
+not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom()
+# Custom exceptions can be translated when testing for throwing as something else
+not ok {test-number} - unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception
+# Custom std-exceptions can be custom translated
+not ok {test-number} - unexpected exception with message: 'custom std exception'
+# Default scale is invisible to comparison
+ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 )
+# Default scale is invisible to comparison
+ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 )
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(0) == "Value1" for: Value1 == "Value1"
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(1) == "Value2" for: Value2 == "Value2"
+# Directly creating an EnumInfo
+ok {test-number} - enumInfo->lookup(3) == "{** unexpected enum value **}" for: {** unexpected enum value **} == "{** unexpected enum value **}"
+# Empty generators can SKIP in constructor
+ok {test-number} - # SKIP 'This generator is empty'
+# Empty stream name opens cout stream
+ok {test-number} - Catch::makeStream( "" )->isConsole() for: true
+# EndsWith string matcher
+not ok {test-number} - testStringForMatching(), EndsWith( "Substring" ) for: "this string contains 'abc' as a substring" ends with: "Substring"
+# EndsWith string matcher
+not ok {test-number} - testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value1 ) == "Value1" for: "Value1" == "Value1"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value2 ) == "Value2" for: "Value2" == "Value2"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value3 ) == "Value3" for: "Value3" == "Value3"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" for: "{** unexpected enum value **}" == "{** unexpected enum value **}"
+# Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( ec3 ) == "Value2" for: "Value2" == "Value2"
+# Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red"
+# Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM
+ok {test-number} - stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue"
+# Epsilon only applies to Approx's value
+ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 )
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 6 for: 7 == 6
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 8 for: 7 == 8
+# Equality checks that should fail
+not ok {test-number} - data.int_seven == 0 for: 7 == 0
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f == Approx( 9.10999965667724609 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 )
+# Equality checks that should fail
+not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 )
+# Equality checks that should fail
+not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 == Approx( 3.14150000000000018 )
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "goodbye" for: "hello" == "goodbye"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "hell" for: "hello" == "hell"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello == "hello1" for: "hello" == "hello1"
+# Equality checks that should fail
+not ok {test-number} - data.str_hello.size() == 6 for: 5 == 6
+# Equality checks that should fail
+not ok {test-number} - x == Approx( 1.301 ) for: 1.30000000000000027 == Approx( 1.30099999999999993 )
+# Equality checks that should succeed
+ok {test-number} - data.int_seven == 7 for: 7 == 7
+# Equality checks that should succeed
+ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f == Approx( 9.10000038146972656 )
+# Equality checks that should succeed
+ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 == Approx( 3.14159265350000005 )
+# Equality checks that should succeed
+ok {test-number} - data.str_hello == "hello" for: "hello" == "hello"
+# Equality checks that should succeed
+ok {test-number} - "hello" == data.str_hello for: "hello" == "hello"
+# Equality checks that should succeed
+ok {test-number} - data.str_hello.size() == 5 for: 5 == 5
+# Equality checks that should succeed
+ok {test-number} - x == Approx( 1.3 ) for: 1.30000000000000027 == Approx( 1.30000000000000004 )
+# Equals
+ok {test-number} - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+# Equals
+ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+# Equals string matcher
+not ok {test-number} - testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+# Equals string matcher
+not ok {test-number} - testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) for: "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
+ok {test-number} - ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" for: "This exception has overridden what() method" == "This exception has overridden what() method"
+# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+ok {test-number} - ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" for: "OperatorException" == "OperatorException"
+# Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
+ok {test-number} - ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" for: "StringMakerException" == "StringMakerException"
+# Exception matchers that fail
+not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - expected exception, got none; expression was: doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - unexpected exception with message: 'Unknown exception'; expression was: throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+# Exception matchers that fail
+not ok {test-number} - throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that fail
+not ok {test-number} - throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that succeed
+ok {test-number} - throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } for: SpecialException::what special exception has value of 1
+# Exception matchers that succeed
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } for: SpecialException::what special exception has value of 2
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) for: DerivedException::what matches "starts with: "Derived""
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) for: DerivedException::what matches "ends with: "::what""
+# Exception message can be matched
+ok {test-number} - throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) for: DerivedException::what matches "not starts with: "::what""
+# Exception message can be matched
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) for: SpecialException::what matches "starts with: "Special""
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) for: "expected exception" equals: "expected exception" (case insensitive)
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), StartsWith( "expected" ) for: "expected exception" starts with: "expected"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), EndsWith( "exception" ) for: "expected exception" ends with: "exception"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), ContainsSubstring( "except" ) for: "expected exception" contains: "except"
+# Exception messages can be tested for
+ok {test-number} - thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) for: "expected exception" contains: "except" (case insensitive)
+# Exceptions matchers
+ok {test-number} - throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) for: DerivedException::what exception message matches "DerivedException::what"
+# Exceptions matchers
+ok {test-number} - throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) for: DerivedException::what not exception message matches "derivedexception::what"
+# Exceptions matchers
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) for: SpecialException::what not exception message matches "DerivedException::what"
+# Exceptions matchers
+ok {test-number} - throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) for: SpecialException::what exception message matches "SpecialException::what"
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows(), std::string
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
+# Expected exceptions that don't throw or unexpected exceptions fail the test
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
+# FAIL aborts the test
+not ok {test-number} - explicitly with 1 message: 'This is a failure'
+# FAIL does not require an argument
+not ok {test-number} - explicitly
+# FAIL_CHECK does not abort the test
+not ok {test-number} - explicitly with 1 message: 'This is a failure'
+# FAIL_CHECK does not abort the test
+warning {test-number} - 'This message appears in the output'
+# Factorials are computed
+ok {test-number} - Factorial(0) == 1 for: 1 == 1
+# Factorials are computed
+ok {test-number} - Factorial(1) == 1 for: 1 == 1
+# Factorials are computed
+ok {test-number} - Factorial(2) == 2 for: 2 == 2
+# Factorials are computed
+ok {test-number} - Factorial(3) == 6 for: 6 == 6
+# Factorials are computed
+ok {test-number} - Factorial(10) == 3628800 for: 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+# Filter generator throws exception for empty generator
+ok {test-number} - filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+# Floating point matchers: double
+ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other
+# Floating point matchers: double
+ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other
+# Floating point matchers: double
+ok {test-number} - 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other
+# Floating point matchers: double
+ok {test-number} - -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other
+# Floating point matchers: double
+ok {test-number} - v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+# Floating point matchers: double
+ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0
+# Floating point matchers: double
+ok {test-number} - 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0
+# Floating point matchers: double
+ok {test-number} - 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0
+# Floating point matchers: double
+ok {test-number} - -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0
+# Floating point matchers: double
+ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+# Floating point matchers: double
+ok {test-number} - 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+# Floating point matchers: double
+ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - -0., WithinULP( 0., 0 ) for: -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) for: 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
+# Floating point matchers: double
+ok {test-number} - 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) for: 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
+# Floating point matchers: double
+ok {test-number} - 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) for: 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+# Floating point matchers: double
+ok {test-number} - WithinAbs( 1., 0. )
+# Floating point matchers: double
+ok {test-number} - WithinAbs( 1., -1. ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - WithinULP( 1., 0 )
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., 0. )
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., -0.2 ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - WithinRel( 1., 1. ), std::domain_error
+# Floating point matchers: double
+ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
+# Floating point matchers: float
+ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other
+# Floating point matchers: float
+ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other
+# Floating point matchers: float
+ok {test-number} - 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other
+# Floating point matchers: float
+ok {test-number} - -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other
+# Floating point matchers: float
+ok {test-number} - v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0
+# Floating point matchers: float
+ok {test-number} - 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0
+# Floating point matchers: float
+ok {test-number} - 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0
+# Floating point matchers: float
+ok {test-number} - -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0
+# Floating point matchers: float
+ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+# Floating point matchers: float
+ok {test-number} - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
+# Floating point matchers: float
+ok {test-number} - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
+# Floating point matchers: float
+ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+# Floating point matchers: float
+ok {test-number} - WithinAbs( 1.f, 0.f )
+# Floating point matchers: float
+ok {test-number} - WithinAbs( 1.f, -1.f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinULP( 1.f, 0 )
+# Floating point matchers: float
+ok {test-number} - WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, 0.f )
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, -0.2f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - WithinRel( 1.f, 1.f ), std::domain_error
+# Floating point matchers: float
+ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# GENERATE can combine literals and generators
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+# Generators -- adapters
+ok {test-number} - i < 4 for: 1 < 4
+# Generators -- adapters
+ok {test-number} - i < 4 for: 2 < 4
+# Generators -- adapters
+ok {test-number} - i < 4 for: 3 < 4
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i % 2 == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - i.size() == 1 for: 1 == 1
+# Generators -- adapters
+ok {test-number} - j > 0 for: 1 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 2 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 3 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 1 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 2 > 0
+# Generators -- adapters
+ok {test-number} - j > 0 for: 3 > 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 3 == 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 1 == 1
+# Generators -- adapters
+ok {test-number} - chunk2.front() < 3 for: 1 < 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 2 for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() == chunk2.back() for: 2 == 2
+# Generators -- adapters
+ok {test-number} - chunk2.front() < 3 for: 2 < 3
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk2.size() == 0 for: 0 == 0
+# Generators -- adapters
+ok {test-number} - chunk(2, value(1)), Catch::GeneratorException
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 1
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 1
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 4 > 3
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 2
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 2
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 8 > 3
+# Generators -- simple
+ok {test-number} - j < i for: -3 < 3
+# Generators -- simple
+ok {test-number} - j < i for: -2 < 3
+# Generators -- simple
+ok {test-number} - j < i for: -1 < 3
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 1
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 2
+# Generators -- simple
+ok {test-number} - 4u * i > str.size() for: 12 > 3
+# Generators internals
+ok {test-number} - gen.get() == 123 for: 123 == 123
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4 for: 4 == 4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get().size() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.get() == "aa" for: "aa" == "aa"
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == "bb" for: "bb" == "bb"
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == "cc" for: "cc" == "cc"
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - filter([](int) { return false; }, value(1)), Catch::GeneratorException
+# Generators internals
+ok {test-number} - filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2.0 for: 2.0 == 2.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 4.0 for: 4.0 == 4.0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 6.0 for: 6.0 == 6.0
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 3 for: 3 == 3
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -2 for: -2 == -2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 1 for: 1 == 1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 0 for: 0 == 0
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.90000000000000002 == Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.9'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.80000000000000004 == Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.8'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.70000000000000007 == Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.60000000000000009 == Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.6'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.50000000000000011 == Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.5'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.40000000000000013 == Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.30000000000000016 == Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.3'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.20000000000000015 == Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.10000000000000014 == Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.00000000000000014 == Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.09999999999999987 == Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.19999999999999987 == Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.29999999999999988 == Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.3'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.39999999999999991 == Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.49999999999999989 == Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.59999999999999987 == Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.6'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.69999999999999984 == Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.79999999999999982 == Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.8'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.8999999999999998 == Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.9'
+# Generators internals
+ok {test-number} - gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 )
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2'
+# Generators internals
+ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5'
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Generators internals
+ok {test-number} - gen.get() == 5 for: 5 == 5
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == 2 for: 2 == 2
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -1 for: -1 == -1
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -4 for: -4 == -4
+# Generators internals
+ok {test-number} - gen.next() for: true
+# Generators internals
+ok {test-number} - gen.get() == -7 for: -7 == -7
+# Generators internals
+ok {test-number} - !(gen.next()) for: !false
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.22 ) for: 1.22999999999999998 >= Approx( 1.21999999999999997 )
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.23 ) for: 1.22999999999999998 >= Approx( 1.22999999999999998 )
+# Greater-than inequalities with different epsilons
+ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.22999999999999998 >= Approx( 1.23999999999999999 ))
+# Greater-than inequalities with different epsilons
+ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 >= Approx( 1.23999999999999999 )
+# Hashers with different seed produce different hash with same test case
+ok {test-number} - h1( dummy ) != h2( dummy ) for: 3422778688 (0x<hex digits>) != 130711275 (0x<hex digits>)
+# Hashers with same seed produce same hash
+ok {test-number} - h1( dummy ) == h2( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2903002874 (0x<hex digits>) != 2668622104 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2673152918 (0x<hex digits>) != 3916075712 (0x<hex digits>)
+# Hashing different test cases produces different result
+ok {test-number} - h( dummy1 ) != h( dummy2 ) for: 2074929312 (0x<hex digits>) != 3429949824 (0x<hex digits>)
+# Hashing test case produces same hash across multiple calls
+ok {test-number} - h( dummy ) == h( dummy ) for: 3422778688 (0x<hex digits>) == 3422778688 (0x<hex digits>)
+# INFO and UNSCOPED_INFO can stream multiple arguments
+not ok {test-number} - explicitly with 3 messages: 'This info has multiple parts.' and 'This unscoped info has multiple parts.' and 'Show infos!'
+# INFO and WARN do not abort tests
+warning {test-number} - 'this is a message' with 1 message: 'this is a warning'
+# INFO gets logged on failure
+not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message should be logged' and 'so should this'
+# INFO gets logged on failure, even if captured before successful assertions
+ok {test-number} - a == 2 for: 2 == 2 with 1 message: 'this message may be logged later'
+# INFO gets logged on failure, even if captured before successful assertions
+not ok {test-number} - a == 1 for: 2 == 1 with 2 messages: 'this message may be logged later' and 'this message should be logged'
+# INFO gets logged on failure, even if captured before successful assertions
+not ok {test-number} - a == 0 for: 2 == 0 with 3 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later'
+# INFO gets logged on failure, even if captured before successful assertions
+ok {test-number} - a == 2 for: 2 == 2 with 4 messages: 'this message may be logged later' and 'this message should be logged' and 'and this, but later' and 'but not this'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 0 < 10 with 2 messages: 'current counter 0' and 'i := 0'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 1 < 10 with 2 messages: 'current counter 1' and 'i := 1'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 2 < 10 with 2 messages: 'current counter 2' and 'i := 2'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 3 < 10 with 2 messages: 'current counter 3' and 'i := 3'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 4 < 10 with 2 messages: 'current counter 4' and 'i := 4'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 5 < 10 with 2 messages: 'current counter 5' and 'i := 5'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 6 < 10 with 2 messages: 'current counter 6' and 'i := 6'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 7 < 10 with 2 messages: 'current counter 7' and 'i := 7'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 8 < 10 with 2 messages: 'current counter 8' and 'i := 8'
+# INFO is reset for each loop
+ok {test-number} - i < 10 for: 9 < 10 with 2 messages: 'current counter 9' and 'i := 9'
+# INFO is reset for each loop
+not ok {test-number} - i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10'
+# Incomplete AssertionHandler
+not ok {test-number} - unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy
+# Inequality checks that should fail
+not ok {test-number} - data.int_seven != 7 for: 7 != 7
+# Inequality checks that should fail
+not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f != Approx( 9.10000038146972656 )
+# Inequality checks that should fail
+not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 != Approx( 3.14159265350000005 )
+# Inequality checks that should fail
+not ok {test-number} - data.str_hello != "hello" for: "hello" != "hello"
+# Inequality checks that should fail
+not ok {test-number} - data.str_hello.size() != 5 for: 5 != 5
+# Inequality checks that should succeed
+ok {test-number} - data.int_seven != 6 for: 7 != 6
+# Inequality checks that should succeed
+ok {test-number} - data.int_seven != 8 for: 7 != 8
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f != Approx( 9.10999965667724609 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 )
+# Inequality checks that should succeed
+ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 != Approx( 3.14150000000000018 )
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "goodbye" for: "hello" != "goodbye"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "hell" for: "hello" != "hell"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello != "hello1" for: "hello" != "hello1"
+# Inequality checks that should succeed
+ok {test-number} - data.str_hello.size() != 6 for: 5 != 6
+# JsonWriter
+ok {test-number} - stream.str() == "" for: "" == ""
+# JsonWriter
+ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
+# JsonWriter
+ok {test-number} - stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" ) for: "{ "int": 1, "double": 1.5, "true": true, "false": false, "string": "this is a string", "array": [ 1, 2 ] }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [ 1, 2 ] }" )
+# JsonWriter
+ok {test-number} - stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) && ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" ) for: "{ "empty_object": { }, "fully_object": { "key": 1 } }" ( contains: ""empty_object": { }," and contains: ""fully_object": { "key": 1 }" )
+# JsonWriter
+ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
+# JsonWriter
+ok {test-number} - stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]" for: "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]" == "[ 1, 1.5, true, false, "this is a string", { "object": 42 }, [ "array", 42.5 ] ]"
+# JsonWriter
+ok {test-number} - stream.str() == "{\n}" for: "{ }" == "{ }"
+# JsonWriter
+ok {test-number} - stream.str() == "[\n]" for: "[ ]" == "[ ]"
+# JsonWriter
+ok {test-number} - stream.str() == "\"custom\"" for: ""custom"" == ""custom""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\"\"" for: ""\""" == ""\"""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\\\"" for: ""\\"" == ""\\""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"/\"" for: ""/"" == ""/""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\b\"" for: ""\b"" == ""\b""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\f\"" for: ""\f"" == ""\f""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\n\"" for: ""\n"" == ""\n""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\r\"" for: ""\r"" == ""\r""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\t\"" for: ""\t"" == ""\t""
+# JsonWriter escapes charaters in strings properly
+ok {test-number} - sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n""
+# Lambdas in assertions
+ok {test-number} - []() { return true; }() for: true
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.24 ) for: 1.22999999999999998 <= Approx( 1.23999999999999999 )
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.23 ) for: 1.22999999999999998 <= Approx( 1.22999999999999998 )
+# Less-than inequalities with different epsilons
+ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.22999999999999998 <= Approx( 1.21999999999999997 ))
+# Less-than inequalities with different epsilons
+ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 <= Approx( 1.21999999999999997 )
+# ManuallyRegistered
+ok {test-number} - with 1 message: 'was called'
+# Matchers can be (AllOf) composed with the && operator
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "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
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+# Matchers can be (AnyOf) composed with the || operator
+ok {test-number} - testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+# Matchers can be composed with both && and ||
+ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+# Matchers can be composed with both && and || - failing
+not ok {test-number} - testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+# Matchers can be negated (Not) with the ! operator
+ok {test-number} - testStringForMatching(), !ContainsSubstring( "different" ) for: "this string contains 'abc' as a substring" not contains: "different"
+# Matchers can be negated (Not) with the ! operator - failing
+not ok {test-number} - testStringForMatching(), !ContainsSubstring( "substring" ) for: "this string contains 'abc' as a substring" not contains: "substring"
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mayfail test case with nested sections
+not ok {test-number} - explicitly
+# Mismatching exception messages failing the test
+ok {test-number} - thisThrows(), "expected exception" for: "expected exception" equals: "expected exception"
+# Mismatching exception messages failing the test
+not ok {test-number} - thisThrows(), "should fail" for: "expected exception" equals: "should fail"
+# Multireporter calls reporters and listeners in correct order
+ok {test-number} - records == expected for: { "Hello", "world", "Goodbye", "world" } == { "Hello", "world", "Goodbye", "world" }
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == false for: false == false
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldRedirectStdOut == true for: true == true
+# Multireporter updates ReporterPreferences properly
+ok {test-number} - multiReporter.getPreferences().shouldReportAllAssertions == true for: true == true
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 3 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 4 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 5 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 6 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: -5 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: -4 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 90 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 91 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 92 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 93 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 94 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 95 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 96 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 97 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 98 > -6
+# Nested generators and captured variables
+ok {test-number} - values > -6 for: 99 > -6
+# Nice descriptive name
+warning {test-number} - 'This one ran'
+# Non-std exceptions can be translated
+not ok {test-number} - unexpected exception with message: 'custom exception'
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - True for: {?}
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - !False for: true
+# Objects that evaluated in boolean contexts can be checked
+ok {test-number} - !(False) for: !{?}
+# Optionally static assertions
+ok {test-number} - with 1 message: 'std::is_void<void>::value'
+# Optionally static assertions
+ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
+# Optionally static assertions
+ok {test-number} - with 1 message: 'std::is_void<void>::value'
+# Optionally static assertions
+ok {test-number} - with 1 message: '!(std::is_void<int>::value)'
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven > 7 for: 7 > 7
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 7 for: 7 < 7
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven > 8 for: 7 > 8
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 6 for: 7 < 6
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < 0 for: 7 < 0
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven < -1 for: 7 < -1
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven >= 8 for: 7 >= 8
+# Ordering comparison checks that should fail
+not ok {test-number} - data.int_seven <= 6 for: 7 <= 6
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one < 9 for: 9.100000381f < 9
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one > 10 for: 9.100000381f > 10
+# Ordering comparison checks that should fail
+not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "hello" for: "hello" > "hello"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "hello" for: "hello" < "hello"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "hellp" for: "hello" > "hellp"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello > "z" for: "hello" > "z"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "hellm" for: "hello" < "hellm"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello < "a" for: "hello" < "a"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello >= "z" for: "hello" >= "z"
+# Ordering comparison checks that should fail
+not ok {test-number} - data.str_hello <= "a" for: "hello" <= "a"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven < 8 for: 7 < 8
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > 6 for: 7 > 6
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > 0 for: 7 > 0
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven > -1 for: 7 > -1
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven >= 7 for: 7 >= 7
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven >= 6 for: 7 >= 6
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven <= 7 for: 7 <= 7
+# Ordering comparison checks that should succeed
+ok {test-number} - data.int_seven <= 8 for: 7 <= 8
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one > 9 for: 9.100000381f > 9
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one < 10 for: 9.100000381f < 10
+# Ordering comparison checks that should succeed
+ok {test-number} - data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello <= "hello" for: "hello" <= "hello"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello >= "hello" for: "hello" >= "hello"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello < "hellp" for: "hello" < "hellp"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello < "zebra" for: "hello" < "zebra"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello > "hellm" for: "hello" > "hellm"
+# Ordering comparison checks that should succeed
+ok {test-number} - data.str_hello > "a" for: "hello" > "a"
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4242248763 (0x<hex digits>) == 4242248763 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1867888929 (0x<hex digits>) == 1867888929 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1276619030 (0x<hex digits>) == 1276619030 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1911218783 (0x<hex digits>) == 1911218783 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1827115164 (0x<hex digits>) == 1827115164 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 1472234645 (0x<hex digits>) == 1472234645 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 868832940 (0x<hex digits>) == 868832940 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 570883446 (0x<hex digits>) == 570883446 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 889299803 (0x<hex digits>) == 889299803 (0x<hex digits>)
+# Our PCG implementation provides expected results for known seeds
+ok {test-number} - rng() == 0x<hex digits> for: 4261393167 (0x<hex digits>) == 4261393167 (0x<hex digits>)
+# Output from all sections is reported
+not ok {test-number} - explicitly with 1 message: 'Message from section one'
+# Output from all sections is reported
+not ok {test-number} - explicitly with 1 message: 'Message from section two'
+# Overloaded comma or address-of operators are not used
+ok {test-number} - ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+# Overloaded comma or address-of operators are not used
+ok {test-number} - &EvilMatcher(), EvilAddressOfOperatorUsed
+# Overloaded comma or address-of operators are not used
+ok {test-number} - EvilMatcher() || ( EvilMatcher() && !EvilMatcher() )
+# Overloaded comma or address-of operators are not used
+ok {test-number} - ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher()
+# Parse uints
+ok {test-number} - parseUInt( "0" ) == Optional<unsigned int>{ 0 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "100" ) == Optional<unsigned int>{ 100 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } for: {?} == {?}
+# Parse uints
+ok {test-number} - parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } for: {?} == {?}
+# Parse uints
+ok {test-number} - !(parseUInt( "" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "!!KJHF*#" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "-1" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "4294967296" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "42949672964294967296429496729642949672964294967296" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "2 4" )) for: !{?}
+# Parse uints
+ok {test-number} - !(parseUInt( "0x<hex digits>", 10 )) for: !{?}
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.hasFilters() for: true
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.getInvalidSpecs().empty() for: true
+# Parsed tags are matched case insensitive
+ok {test-number} - spec.matches( testCase ) for: true
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-count=8" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardCount == 8 for: 8 == 8
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) for: "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) for: "Shard count must be positive" contains: "Shard count must be positive"
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-index=2" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardIndex == 2 for: 2 == 2
+# Parsing sharding-related cli flags
+ok {test-number} - !(result) for: !{?}
+# Parsing sharding-related cli flags
+ok {test-number} - result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) for: "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+# Parsing sharding-related cli flags
+ok {test-number} - cli.parse({ "test", "--shard-index=0" }) for: {?}
+# Parsing sharding-related cli flags
+ok {test-number} - config.shardIndex == 0 for: 0 == 0
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[tag with spaces]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.hasFilters() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.getInvalidSpecs().empty() for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing tags with non-alphabetical characters is pass-through
+ok {test-number} - spec.matches( testCase ) for: true with 1 message: 'tagString := "[I said "good day" sir!]"'
+# Parsing warnings
+ok {test-number} - cli.parse( { "test", "-w", "NoAssertions" } ) for: {?}
+# Parsing warnings
+ok {test-number} - config.warnings == WarnAbout::NoAssertions for: 1 == 1
+# Parsing warnings
+ok {test-number} - !(cli.parse( { "test", "-w", "NoTests" } )) for: !{?}
+# Parsing warnings
+ok {test-number} - cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) for: {?}
+# Parsing warnings
+ok {test-number} - config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) for: 3 == 3
+# Pointers can be compared to null
+ok {test-number} - p == 0 for: 0 == 0
+# Pointers can be compared to null
+ok {test-number} - p == pNULL for: 0 == 0
+# Pointers can be compared to null
+ok {test-number} - p != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - cp != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - cpc != 0 for: 0x<hex digits> != 0
+# Pointers can be compared to null
+ok {test-number} - returnsNull() == 0 for: {null string} == 0
+# Pointers can be compared to null
+ok {test-number} - returnsConstNull() == 0 for: {null string} == 0
+# Pointers can be compared to null
+ok {test-number} - 0 != p for: 0 != 0x<hex digits>
+# Precision of floating point stringification can be set
+ok {test-number} - str1.size() == 3 + 5 for: 8 == 8
+# Precision of floating point stringification can be set
+ok {test-number} - str2.size() == 3 + 10 for: 13 == 13
+# Precision of floating point stringification can be set
+ok {test-number} - str1.size() == 2 + 5 for: 7 == 7
+# Precision of floating point stringification can be set
+ok {test-number} - str2.size() == 2 + 15 for: 17 == 17
+# Predicate matcher can accept const char*
+ok {test-number} - "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) for: "foo" matches undescribed predicate
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - config.processName == "" for: "" == ""
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - config.processName == "test" for: "test" == "test"
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak == false for: false == false
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == -1 for: -1 == -1
+# Process can be configured on command line
+ok {test-number} - config.noThrow == false for: false == false
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications.empty() for: true
+# Process can be configured on command line
+ok {test-number} - !(cfg.hasTestFilters()) for: !false
+# Process can be configured on command line
+ok {test-number} - cfg.getReporterSpecs().size() == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } for: {?} == {?}
+# Process can be configured on command line
+ok {test-number} - cfg.getProcessedReporterSpecs().size() == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } for: {?} == {?}
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?}
+# Process can be configured on command line
+ok {test-number} - cfg.hasTestFilters() for: true
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("test1")) == false for: false == false
+# Process can be configured on command line
+ok {test-number} - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) for: true
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("Unrecognized reporter") for: "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - result for: {?} with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } for: { {?} } == { {?} } with 1 message: 'result.errorMessage() := ""'
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } for: { {?}, {?} } == { {?}, {?} }
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") for: "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-b"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak == true for: true == true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--break"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-a"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-x", "2"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 2 for: 2 == 2
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") for: "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 2 == 2
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.waitForKeypress == std::get<1>(input) for: 3 == 3
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") for: "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
+ok {test-number} - cli.parse({"test", "-e"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.noThrow for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--nothrow"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.noThrow for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-o", "filename.ext"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--out", "filename.ext"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultOutputFilename == "filename.ext" for: "filename.ext" == "filename.ext"
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "-abe"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.abortAfter == 1 for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - config.shouldDebugBreak for: true
+# Process can be configured on command line
+ok {test-number} - config.noThrow == true for: true == true
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse( { "test", "--colour-mode", "default" } ) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::PlatformDefault for: 0 == 0
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--colour-mode", "ansi"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::ANSI for: 1 == 1
+# Process can be configured on command line
+ok {test-number} - cli.parse({"test", "--colour-mode", "none"}) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.defaultColourMode == ColourMode::None for: 3 == 3
+# Process can be configured on command line
+ok {test-number} - !result for: true
+# Process can be configured on command line
+ok {test-number} - result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) for: "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-samples=200" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkSamples == 200 for: 200 == 200
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkResamples == 20000 for: 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 == Approx( 0.98999999999999999 )
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-no-analysis" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkNoAnalysis for: true
+# Process can be configured on command line
+ok {test-number} - cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?}
+# Process can be configured on command line
+ok {test-number} - config.benchmarkWarmupTime == 10 for: 10 == 10
+# Product with differing arities - std::tuple<int, double, float>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 3 >= 1
+# Product with differing arities - std::tuple<int, double>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 2 >= 1
+# Product with differing arities - std::tuple<int>
+ok {test-number} - std::tuple_size<TestType>::value >= 1 for: 1 >= 1
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation accepts known methods
+ok {test-number} - Catch::generateRandomSeed(method)
+# Random seed generation reports unknown methods
+ok {test-number} - Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77))
+# Range type with sentinel
+ok {test-number} - Catch::Detail::stringify(UsesSentinel{}) == "{ }" for: "{ }" == "{ }"
+# Reconstruction should be based on stringification: #914
+not ok {test-number} - truthy(false) for: Hey, its truthy!
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+# Regex string matcher
+not ok {test-number} - testStringForMatching(), Matches( "this string contains 'abc' as a" ) for: "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+# Registering reporter with '::' in name fails
+ok {test-number} - registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" for: "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+# Regression test #1
+ok {test-number} - actual, !UnorderedEquals( expected ) for: { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: Automake'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: compact'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: console'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tags": [ { "aliases": [ "fakeTag" ], "count": 1 } ]" contains: "fakeTag" with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "reporters": [ { "name": "fake reporter", "description": "fake description" } ]" contains: "fake reporter" with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "{ "version": 1, "metadata": { "name": "", "rng-seed": 1234, "catch2-version": "<version>" }, "listings": { "tests": [ { "name": "fake test name", "class-name": "", "tags": [ "fakeTestTag" ], "source-location": { "filename": "fake-file.cpp", "line": 123456789 } } ]" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JSON'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: JUnit'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: SonarQube'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TAP'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "Available reporters: fake reporter: fake description " contains: "fake reporter" with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: TeamCity'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fakeTag"s) for: "<?xml version="1.0" encoding="UTF-8"?> <TagsFromMatchingTests> <Tag> <Count>1</Count> <Aliases> <Alias>fakeTag</Alias> </Aliases> </Tag> </TagsFromMatchingTests>" contains: "fakeTag" with 1 message: 'Tested reporter: XML'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring("fake reporter"s) for: "<?xml version="1.0" encoding="UTF-8"?> <AvailableReporters> <Reporter> <Name>fake reporter</Name> <Description>fake description</Description> </Reporter> </AvailableReporters>" contains: "fake reporter" with 1 message: 'Tested reporter: XML'
+# Reporter's write listings to provided stream
+ok {test-number} - !(factories.empty()) for: !false
+# Reporter's write listings to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "<?xml version="1.0" encoding="UTF-8"?> <MatchingTests> <TestCase> <Name>fake test name</Name> <ClassName/> <Tags>[fakeTestTag]</Tags> <SourceInfo> <File>fake-file.cpp</File> <Line>123456789</Line> </SourceInfo> </TestCase> </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) with 1 message: 'Tested reporter: XML'
+# Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla
+ok {test-number} -
+# SUCCEED counts as a test pass
+ok {test-number} - with 1 message: 'this is a success'
+# SUCCEED does not require an argument
+ok {test-number} -
+# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+ok {test-number} - before == 0 for: 0 == 0
+# Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods
+ok {test-number} - after > before for: 1 > 0
+# Scenario: Do that thing with the thing
+ok {test-number} - itDoesThis() for: true
+# Scenario: Do that thing with the thing
+ok {test-number} - itDoesThat() for: true
+# Scenario: This is a really long scenario name to see how the list command deals with wrapping
+ok {test-number} - with 1 message: 'boo!'
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 10 for: 10 == 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 5 for: 5 == 5
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# Scenario: Vector resizing affects size and capacity
+ok {test-number} - v.size() == 0 for: 0 == 0
+# Some simple comparisons between doubles
+ok {test-number} - d == Approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Some simple comparisons between doubles
+ok {test-number} - d != Approx( 1.22 ) for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# Some simple comparisons between doubles
+ok {test-number} - d != Approx( 1.24 ) for: 1.22999999999999998 != Approx( 1.23999999999999999 )
+# Some simple comparisons between doubles
+ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Some simple comparisons between doubles
+ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 )
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) != 1.21999999999999997
+# Some simple comparisons between doubles
+ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) != 1.23999999999999999
+# StartsWith string matcher
+not ok {test-number} - testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String"
+# StartsWith string matcher
+not ok {test-number} - testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }"
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" for: "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+# Static arrays are convertible to string
+ok {test-number} - Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" for: "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" == "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string" ) for: "this string contains 'abc' as a substring" contains: "string"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "abc" ) for: "this string contains 'abc' as a substring" contains: "abc"
+# String matchers
+ok {test-number} - testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), StartsWith( "this" ) for: "this string contains 'abc' as a substring" starts with: "this"
+# String matchers
+ok {test-number} - testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+# String matchers
+ok {test-number} - testStringForMatching(), EndsWith( "substring" ) for: "this string contains 'abc' as a substring" ends with: "substring"
+# String matchers
+ok {test-number} - testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+# StringRef
+ok {test-number} - empty.empty() for: true
+# StringRef
+ok {test-number} - empty.size() == 0 for: 0 == 0
+# StringRef
+ok {test-number} - std::strcmp( empty.data(), "" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.empty() == false for: false == false
+# StringRef
+ok {test-number} - s.size() == 5 for: 5 == 5
+# StringRef
+ok {test-number} - std::strcmp( rawChars, "hello" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.data() == rawChars for: "hello" == "hello"
+# StringRef
+ok {test-number} - original == "original"
+# StringRef
+ok {test-number} - original.data()
+# StringRef
+ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
+# StringRef
+ok {test-number} - original.begin() == copy.begin() for: "original string" == "original string"
+# StringRef
+ok {test-number} - ss.empty() == false for: false == false
+# StringRef
+ok {test-number} - ss.size() == 5 for: 5 == 5
+# StringRef
+ok {test-number} - std::strncmp( ss.data(), "hello", 5 ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - ss == "hello" for: hello == "hello"
+# StringRef
+ok {test-number} - ss.size() == 6 for: 6 == 6
+# StringRef
+ok {test-number} - std::strcmp( ss.data(), "world!" ) == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.data() == s2.data() for: "hello world!" == "hello world!"
+# StringRef
+ok {test-number} - s.data() == ss.data() for: "hello world!" == "hello world!"
+# StringRef
+ok {test-number} - s.substr(s.size() + 1, 123).empty() for: true
+# StringRef
+ok {test-number} - std::strcmp(ss.data(), "world!") == 0 for: 0 == 0
+# StringRef
+ok {test-number} - s.substr(1'000'000, 1).empty() for: true
+# StringRef
+ok {test-number} - reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) for: "Hello" != "Hello"
+# StringRef
+ok {test-number} - left == right for: Hello == Hello
+# StringRef
+ok {test-number} - left != left.substr(0, 3) for: Hello != Hel
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - sr == "a standard string" for: a standard string == "a standard string"
+# StringRef
+ok {test-number} - sr.size() == stdStr.size() for: 17 == 17
+# StringRef
+ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
+# StringRef
+ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
+# StringRef
+ok {test-number} - stdStr == "a stringref" for: "a stringref" == "a stringref"
+# StringRef
+ok {test-number} - stdStr.size() == sr.size() for: 11 == 11
+# StringRef
+ok {test-number} - lhs == "some string += the stringref contents" for: "some string += the stringref contents" == "some string += the stringref contents"
+# StringRef
+ok {test-number} - together == "abrakadabra" for: "abrakadabra" == "abrakadabra"
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'empty.size() == 0'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'empty.begin() == empty.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.size() == 3'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.data() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.begin() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.begin() != stringref.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.substr(10, 0).empty()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref.substr(2, 1).data() == abc + 2'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'stringref[1] == 'b''
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.size() == 2'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.data() == abc'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'shortened.begin() != shortened.end()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: '!(sr1.empty())'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr1.size() == 3'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr2.empty()'
+# StringRef at compilation time
+ok {test-number} - with 1 message: 'sr2.size() == 0'
+# Stringifying char arrays with statically known sizes - char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - signed char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - signed char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - unsigned char
+ok {test-number} - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying char arrays with statically known sizes - unsigned char
+ok {test-number} - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s for: ""abc"" == ""abc""
+# Stringifying std::chrono::duration helpers
+ok {test-number} - minute == seconds for: 1 m == 60 s
+# Stringifying std::chrono::duration helpers
+ok {test-number} - hour != seconds for: 1 h != 60 s
+# Stringifying std::chrono::duration helpers
+ok {test-number} - micro != milli for: 1 us != 1 ms
+# Stringifying std::chrono::duration helpers
+ok {test-number} - nano != micro for: 1 ns != 1 us
+# Stringifying std::chrono::duration with weird ratios
+ok {test-number} - half_minute != femto_second for: 1 [30/1]s != 1 fs
+# Stringifying std::chrono::duration with weird ratios
+ok {test-number} - pico_second != atto_second for: 1 ps != 1 as
+# Stringifying std::chrono::time_point<system_clock>
+ok {test-number} - now != later for: {iso8601-timestamp} != {iso8601-timestamp}
+# Tabs and newlines show in output
+not ok {test-number} - s1 == s2 for: "if ($b == 10) { $a = 20; }" == "if ($b == 10) { $a = 20; } "
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "[@zzz]" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "[@zzz]"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "file" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "file"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "2" ) for: "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "2"
+# Tag alias can be registered against tag patterns
+ok {test-number} - what, ContainsSubstring( "10" ) for: "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
+ok {test-number} - registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tag alias can be registered against tag patterns
+ok {test-number} - registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+# Tags with spaces and non-alphanumerical characters are accepted
+ok {test-number} - testCase.tags.size() == 2 for: 2 == 2
+# Tags with spaces and non-alphanumerical characters are accepted
+ok {test-number} - testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+# Template test case method with test types specified inside std::tuple - MyTypes - 0
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# Template test case method with test types specified inside std::tuple - MyTypes - 1
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1 == 1
+# Template test case method with test types specified inside std::tuple - MyTypes - 2
+ok {test-number} - Template_Fixture<TestType>::m_a == 1 for: 1.0 == 1
+# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0
+ok {test-number} - std::is_default_constructible<TestType>::value for: true
+# Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1
+ok {test-number} - std::is_default_constructible<TestType>::value for: true
+# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0
+ok {test-number} - std::is_trivially_copyable<TestType>::value for: true
+# Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1
+ok {test-number} - std::is_trivially_copyable<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 0
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 1
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# Template test case with test types specified inside std::tuple - MyTypes - 2
+ok {test-number} - std::is_arithmetic<TestType>::value for: true
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - float
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - int
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::string
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 10 for: 10 == 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.size() == 5 for: 5 == 5
+# TemplateTest: vectors can be sized and resized - std::tuple<int,float>
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == 2 * V for: 12 == 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= 2 * V for: 12 >= 12
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.size() == V for: 6 == 6
+# TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
+ok {test-number} - v.capacity() >= V for: 6 >= 6
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == 2 * V for: 8 == 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= 2 * V for: 8 >= 8
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.size() == V for: 4 == 4
+# TemplateTestSig: vectors can be sized and resized - float,4
+ok {test-number} - v.capacity() >= V for: 4 >= 4
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == 2 * V for: 10 == 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= 2 * V for: 10 >= 10
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.size() == V for: 5 == 5
+# TemplateTestSig: vectors can be sized and resized - int,5
+ok {test-number} - v.capacity() >= V for: 5 >= 5
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == 2 * V for: 30 == 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= 2 * V for: 30 >= 30
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.size() == V for: 15 == 15
+# TemplateTestSig: vectors can be sized and resized - std::string,15
+ok {test-number} - v.capacity() >= V for: 15 >= 15
+# Test case with identical tags keeps just one
+ok {test-number} - testCase.tags.size() == 1 for: 1 == 1
+# Test case with identical tags keeps just one
+ok {test-number} - testCase.tags[0] == Tag( "tag1" ) for: {?} == {?}
+# Test case with one argument
+ok {test-number} - with 1 message: 'no assertions'
+# Test enum bit values
+ok {test-number} - 0x<hex digits> == bit30and31 for: 3221225472 (0x<hex digits>) == 3221225472
+# Test with special, characters "in name
+ok {test-number} -
+# Testing checked-if
+ok {test-number} - true
+# Testing checked-if
+ok {test-number} -
+# Testing checked-if
+ok {test-number} - false # TODO
+# Testing checked-if
+ok {test-number} - true
+# Testing checked-if
+ok {test-number} - false # TODO
+# Testing checked-if
+ok {test-number} -
+# Testing checked-if 2
+ok {test-number} - true
+# Testing checked-if 2
+not ok {test-number} - explicitly
+# Testing checked-if 3
+ok {test-number} - false # TODO
+# Testing checked-if 3
+not ok {test-number} - explicitly
+# Testing checked-if 4
+ok {test-number} - true
+# Testing checked-if 4
+not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+# Testing checked-if 5
+ok {test-number} - false # TODO
+# Testing checked-if 5
+not ok {test-number} - unexpected exception with message: 'Uncaught exception should fail!'; expression was: {Unknown expression after the reported line}
+# The NO_FAIL macro reports a failure but does not fail the test
+ok {test-number} - 1 == 2 # TODO
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring("[fakeTag]"s) for: "All available tags: 1 [fakeTag] 1 tag " contains: "[fakeTag]"
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) for: "Available reporters: fake reporter: fake description " ( contains: "fake reporter" and contains: "fake description" )
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) for: "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" )
+# The default listing implementation write to provided stream
+ok {test-number} - listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) for: "Registered listeners: fakeListener: fake description " ( contains: "fakeListener" and contains: "fake description" )
+# This test 'should' fail but doesn't
+ok {test-number} - with 1 message: 'oops!'
+# Thrown string literals are translated
+not ok {test-number} - unexpected exception with message: 'For some reason someone is throwing a string literal!'
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2b.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - s2b.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase2.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isOpen() for: true
+# Tracker
+ok {test-number} - s1b.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2b.isOpen() for: true
+# Tracker
+ok {test-number} - ctx.completedCycle() == false for: false == false
+# Tracker
+ok {test-number} - ctx.completedCycle() for: true
+# Tracker
+ok {test-number} - s2b.isComplete() for: true
+# Tracker
+ok {test-number} - s2b.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase2.isSuccessfullyCompleted() == false for: false == false
+# Tracker
+ok {test-number} - testCase3.isOpen() for: true
+# Tracker
+ok {test-number} - s1c.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - s2c.isOpen() == false for: false == false
+# Tracker
+ok {test-number} - testCase3.isSuccessfullyCompleted() for: true
+# Tracker
+ok {test-number} - testCase.isOpen() for: true
+# Tracker
+ok {test-number} - s1.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isOpen() for: true
+# Tracker
+ok {test-number} - s2.isComplete() for: true
+# Tracker
+ok {test-number} - s1.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - s1.isComplete() for: true
+# Tracker
+ok {test-number} - testCase.isComplete() == false for: false == false
+# Tracker
+ok {test-number} - testCase.isComplete() for: true
+# Trim strings
+ok {test-number} - trim(std::string(no_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(leading_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(trailing_whitespace)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(std::string(whitespace_at_both_ends)) == no_whitespace for: "There is no extra whitespace here" == "There is no extra whitespace here"
+# Trim strings
+ok {test-number} - trim(StringRef(no_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Trim strings
+ok {test-number} - trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) for: There is no extra whitespace here == There is no extra whitespace here
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( c_array ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( c_array ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_3, !RangeEquals( array_int_4 ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_3, !UnorderedRangeEquals( array_int_4 ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - with 1 message: 'ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess( list_char_a )'
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, RangeEquals( list_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - array_int_a, UnorderedRangeEquals( list_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, RangeEquals( vector_char_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, UnorderedRangeEquals( vector_char_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, !RangeEquals( vector_char_b ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_int_a, !UnorderedRangeEquals( vector_char_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - a, !RangeEquals( b ) for: { 1, 2, 3 } not elements are { 3, 2, 1 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+# Type conversions of RangeEquals and similar
+ok {test-number} - vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+# Unexpected exceptions can be translated
+not ok {test-number} - unexpected exception with message: '3.14000000000000012'
+# Upcasting special member functions
+ok {test-number} - bptr->i == 3 for: 3 == 3
+# Upcasting special member functions
+ok {test-number} - bptr->i == 3 for: 3 == 3
+# Usage of AllMatch range matcher
+ok {test-number} - data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+# Usage of AllMatch range matcher
+ok {test-number} - data, !AllMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+# Usage of AllMatch range matcher
+ok {test-number} - needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked, allMatch for: { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked, !allMatch for: { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AllMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - data, !AllTrue() for: { false, false, false, false, false } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked, AllTrue() for: { true, true, true, true, true } contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked, !AllTrue() for: { true, true, false, true, true } not contains only true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AllTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AllTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - data, AnyMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+# Usage of AnyMatch range matcher
+ok {test-number} - data, !AnyMatch(Contains(0) && Contains(10)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+# Usage of AnyMatch range matcher
+ok {test-number} - needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked, !anyMatch for: { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked, anyMatch for: { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+# Usage of AnyMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[1]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[2]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AnyMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { true, true, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, AnyTrue() for: { false, false, true, false, false } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - data, !AnyTrue() for: { false, false, false, false, false } not contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked, AnyTrue() for: { false, false, false, false, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked, AnyTrue() for: { false, false, true, true, true } contains at least one true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of AnyTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of AnyTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - data, NoneMatch(SizeIs(6)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+# Usage of NoneMatch range matcher
+ok {test-number} - data, !NoneMatch(Contains(0) && Contains(1)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+# Usage of NoneMatch range matcher
+ok {test-number} - needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked, noneMatch for: { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked, !noneMatch for: { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+# Usage of NoneMatch range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[1]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[2]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of NoneMatch range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { true, true, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, !NoneTrue() for: { false, false, true, false, false } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - data, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked, NoneTrue() for: { false, false, false, false, false } contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[3] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[4] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked, !NoneTrue() for: { false, false, true, true, true } not contains no true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[0] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[1] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - mocked.m_derefed[2] for: true
+# Usage of NoneTrue range matcher
+ok {test-number} - !(mocked.m_derefed[3]) for: !false
+# Usage of NoneTrue range matcher
+ok {test-number} - !(mocked.m_derefed[4]) for: !false
+# Usage of RangeEquals range matcher
+ok {test-number} - empty_vector, RangeEquals( empty_vector ) for: { } elements are { }
+# Usage of RangeEquals range matcher
+ok {test-number} - empty_vector, !RangeEquals( non_empty_vector ) for: { } not elements are { 1 }
+# Usage of RangeEquals range matcher
+ok {test-number} - non_empty_vector, !RangeEquals( empty_vector ) for: { 1 } not elements are { }
+# Usage of RangeEquals range matcher
+ok {test-number} - non_empty_array, RangeEquals( non_empty_array ) for: { 1 } elements are { 1 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( array_a ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, !RangeEquals( array_b ) for: { 1, 2, 3 } not elements are { 2, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, !RangeEquals( array_c ) for: { 1, 2, 3 } not elements are { 1, 2, 2 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, !RangeEquals( vector_b ) for: { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, RangeEquals( vector_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - vector_a, !RangeEquals( vector_b, close_enough ) for: { 1, 2, 3 } not elements are { 3, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - needs_adl1, RangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+# Usage of RangeEquals range matcher
+ok {test-number} - needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) for: { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( { 1, 2, 3 } ) for: { 1, 2, 3 } elements are { 1, 2, 3 }
+# Usage of RangeEquals range matcher
+ok {test-number} - array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } ) for: { 1, 2, 3 } elements are { 2, 4, 6 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1, !RangeEquals( arr ) for: { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[0] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[1] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[2] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - !(mocked1.m_derefed[3]) for: !false
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1, RangeEquals( arr ) for: { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[0] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[1] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[2] for: true
+# Usage of RangeEquals range matcher
+ok {test-number} - mocked1.m_derefed[3] for: true
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - empty_vector, UnorderedRangeEquals( empty_vector ) for: { } unordered elements are { }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - empty_vector, !UnorderedRangeEquals( non_empty_vector ) for: { } not unordered elements are { 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - non_empty_vector, !UnorderedRangeEquals( empty_vector ) for: { 1 } not unordered elements are { }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - non_empty_array, UnorderedRangeEquals( non_empty_array ) for: { 1 } unordered elements are { 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( array_a ) for: { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, !UnorderedRangeEquals( array_b ) for: { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b ) for: { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - vector_a, !UnorderedRangeEquals( vector_b, close_enough ) for: { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - needs_adl1, UnorderedRangeEquals( needs_adl2 ) for: { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( { 10, 20, 1 } ) for: { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+# Usage of UnorderedRangeEquals range matcher
+ok {test-number} - array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) <= 1; } ) for: { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, SizeIs(0) for: { } has size == 0
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, !SizeIs(2) for: { } not has size == 2
+# Usage of the SizeIs range matcher
+ok {test-number} - empty_vec, SizeIs(Lt(2)) for: { } size matches is less than 2
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, SizeIs(2) for: { 0, 0 } has size == 2
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, SizeIs( Lt(3)) for: { 0, 0 } size matches is less than 3
+# Usage of the SizeIs range matcher
+ok {test-number} - arr, !SizeIs(!Lt(3)) for: { 0, 0 } not size matches not is less than 3
+# Usage of the SizeIs range matcher
+ok {test-number} - map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3
+# Usage of the SizeIs range matcher
+ok {test-number} - unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12
+# Usage of the SizeIs range matcher
+ok {test-number} - has_size{}, SizeIs(13) for: {?} has size == 13
+# Use a custom approx
+ok {test-number} - d == approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 )
+# Use a custom approx
+ok {test-number} - d == approx( 1.22 ) for: 1.22999999999999998 == Approx( 1.21999999999999997 )
+# Use a custom approx
+ok {test-number} - d == approx( 1.24 ) for: 1.22999999999999998 == Approx( 1.23999999999999999 )
+# Use a custom approx
+ok {test-number} - d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 )
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) == 1.21999999999999997
+# Use a custom approx
+ok {test-number} - approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) == 1.23999999999999999
+# Use a custom approx
+ok {test-number} - approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25
+# Variadic macros
+ok {test-number} - with 1 message: 'no assertions'
+# Vector Approx matcher
+ok {test-number} - empty, Approx( empty ) for: { } is approx: { }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx<double>( { 1., 2., 3. } ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+# Vector Approx matcher
+ok {test-number} - v1, !Approx( temp ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+# Vector Approx matcher
+ok {test-number} - v1, !Approx( v2 ) for: { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).margin( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).epsilon( 0.5 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher
+ok {test-number} - v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+# Vector Approx matcher -- failing
+not ok {test-number} - empty, Approx( t1 ) for: { } is approx: { 1.0, 2.0 }
+# Vector Approx matcher -- failing
+not ok {test-number} - v1, Approx( v2 ) for: { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+# Vector matchers
+ok {test-number} - v, VectorContains( 1 ) for: { 1, 2, 3 } Contains: 1
+# Vector matchers
+ok {test-number} - v, VectorContains( 2 ) for: { 1, 2, 3 } Contains: 2
+# Vector matchers
+ok {test-number} - v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) for: { 1, 2, 3 } Contains: 2
+# Vector matchers
+ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, Contains<int>( { 1, 2 } ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, Contains( empty ) for: { 1, 2, 3 } Contains: { }
+# Vector matchers
+ok {test-number} - empty, Contains( empty ) for: { } Contains: { }
+# Vector matchers
+ok {test-number} - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Contains: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, Contains( v6 ) for: { 1, 2, 3 } Contains: { 1, 2 }
+# Vector matchers
+ok {test-number} - v, VectorContains( 1 ) && VectorContains( 2 ) for: { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+# Vector matchers
+ok {test-number} - v, Equals( v ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - empty, Equals( empty ) for: { } Equals: { }
+# Vector matchers
+ok {test-number} - v, Equals<int>( { 1, 2, 3 } ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, Equals( v6 ) for: { 1, 2, 3 } Equals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, UnorderedEquals( v ) for: { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v, UnorderedEquals<int>( { 3, 2, 1 } ) for: { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+# Vector matchers
+ok {test-number} - empty, UnorderedEquals( empty ) for: { } UnorderedEquals: { }
+# Vector matchers
+ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - permuted, UnorderedEquals( v ) for: { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers
+ok {test-number} - v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) for: { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+# Vector matchers
+ok {test-number} - v5_permuted, UnorderedEquals( v5 ) for: { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, VectorContains( -1 ) for: { 1, 2, 3 } Contains: -1
+# Vector matchers that fail
+not ok {test-number} - empty, VectorContains( 1 ) for: { } Contains: 1
+# Vector matchers that fail
+not ok {test-number} - empty, Contains( v ) for: { } Contains: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, Contains( v2 ) for: { 1, 2, 3 } Contains: { 1, 2, 4 }
+# Vector matchers that fail
+not ok {test-number} - v, Equals( v2 ) for: { 1, 2, 3 } Equals: { 1, 2 }
+# Vector matchers that fail
+not ok {test-number} - v2, Equals( v ) for: { 1, 2 } Equals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - empty, Equals( v ) for: { } Equals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - v, Equals( empty ) for: { 1, 2, 3 } Equals: { }
+# Vector matchers that fail
+not ok {test-number} - v, UnorderedEquals( empty ) for: { 1, 2, 3 } UnorderedEquals: { }
+# Vector matchers that fail
+not ok {test-number} - empty, UnorderedEquals( v ) for: { } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - permuted, UnorderedEquals( v ) for: { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+# Vector matchers that fail
+not ok {test-number} - permuted, UnorderedEquals( v ) for: { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisThrows(), std::domain_error
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisDoesntThrow()
+# When checked exceptions are thrown they can be expected or unexpected
+ok {test-number} - thisThrows()
+# When unchecked exceptions are thrown directly they are always failures
+not ok {test-number} - unexpected exception with message: 'unexpected exception'
+# When unchecked exceptions are thrown during a CHECK the test should continue
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown during a REQUIRE the test should abort fail
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown from functions they are always failures
+not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
+# When unchecked exceptions are thrown from sections they are always failures
+not ok {test-number} - unexpected exception with message: 'unexpected exception'
+# X/level/0/a
+ok {test-number} -
+# X/level/0/b
+ok {test-number} -
+# X/level/1/a
+ok {test-number} -
+# X/level/1/b
+ok {test-number} -
+# XmlEncode
+ok {test-number} - encode( "normal string" ) == "normal string" for: "normal string" == "normal string"
+# XmlEncode
+ok {test-number} - encode( "" ) == "" for: "" == ""
+# XmlEncode
+ok {test-number} - encode( "smith & jones" ) == "smith &amp; jones" for: "smith &amp; jones" == "smith &amp; jones"
+# XmlEncode
+ok {test-number} - encode( "smith < jones" ) == "smith &lt; jones" for: "smith &lt; jones" == "smith &lt; jones"
+# XmlEncode
+ok {test-number} - encode( "smith > jones" ) == "smith > jones" for: "smith > jones" == "smith > jones"
+# XmlEncode
+ok {test-number} - encode( "smith ]]> jones" ) == "smith ]]&gt; jones" for: "smith ]]&gt; jones" == "smith ]]&gt; jones"
+# XmlEncode
+ok {test-number} - encode( stringWithQuotes ) == stringWithQuotes for: "don't "quote" me on that" == "don't "quote" me on that"
+# XmlEncode
+ok {test-number} - encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" for: "don't &quot;quote&quot; me on that" == "don't &quot;quote&quot; me on that"
+# XmlEncode
+ok {test-number} - encode( "[\x01]" ) == "[\\x01]" for: "[\x01]" == "[\x01]"
+# XmlEncode
+ok {test-number} - encode( "[\x7F]" ) == "[\\x7F]" for: "[\x7F]" == "[\x7F]"
+# XmlWriter writes boolean attributes as true/false
+ok {test-number} - stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") for: "<?xml version="1.0" encoding="UTF-8"?> <Element1 attr1="true" attr2="false"/> " ( contains: "attr1="true"" and contains: "attr2="false"" )
+# a succeeding test can still be skipped
+ok {test-number} -
+# a succeeding test can still be skipped
+ok {test-number} - # SKIP
+# analyse no analysis
+ok {test-number} - analysis.mean.point.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.mean.lower_bound.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.mean.upper_bound.count() == 23 for: 23.0 == 23
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.point.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.lower_bound.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.standard_deviation.upper_bound.count() == 0 for: 0.0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.total() == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.low_mild == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.low_severe == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.high_mild == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.high_severe == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outliers.samples_seen == 0 for: 0 == 0
+# analyse no analysis
+ok {test-number} - analysis.outlier_variance == 0 for: 0.0 == 0
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( empty ) == "{ }" for: "{ }" == "{ }"
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( oneValue ) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# array<int, N> -> toString
+ok {test-number} - Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# benchmark function call
+ok {test-number} - model.started == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.started == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.finished == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - called == 1 for: 1 == 1
+# benchmark function call
+ok {test-number} - model.started == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.started == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - model.finished == 0 for: 0 == 0
+# benchmark function call
+ok {test-number} - called == 1 for: 1 == 1
+# boolean member
+ok {test-number} - obj.prop != 0 for: 0x<hex digits> != 0
+# checkedElse
+ok {test-number} - flag for: true
+# checkedElse
+ok {test-number} - testCheckedElse( true ) for: true
+# checkedElse, failing
+ok {test-number} - flag for: false # TODO
+# checkedElse, failing
+not ok {test-number} - testCheckedElse( false ) for: false
+# checkedIf
+ok {test-number} - flag for: true
+# checkedIf
+ok {test-number} - testCheckedIf( true ) for: true
+# checkedIf, failing
+ok {test-number} - flag for: false # TODO
+# checkedIf, failing
+not ok {test-number} - testCheckedIf( false ) for: false
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 1 == 1
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 0 == 0
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 1 == 1
+# classify_outliers
+ok {test-number} - o.samples_seen == static_cast<int>(x.size()) for: 6 == 6
+# classify_outliers
+ok {test-number} - o.low_severe == los for: 1 == 1
+# classify_outliers
+ok {test-number} - o.low_mild == lom for: 0 == 0
+# classify_outliers
+ok {test-number} - o.high_mild == him for: 1 == 1
+# classify_outliers
+ok {test-number} - o.high_severe == his for: 0 == 0
+# classify_outliers
+ok {test-number} - o.total() == los + lom + him + his for: 2 == 2
+# comparisons between const int variables
+ok {test-number} - unsigned_char_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_short_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_int_var == 1 for: 1 == 1
+# comparisons between const int variables
+ok {test-number} - unsigned_long_var == 1 for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_char_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_short_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_int_var for: 1 == 1
+# comparisons between int variables
+ok {test-number} - long_var == unsigned_long_var for: 1 == 1
+# convertToBits
+ok {test-number} - convertToBits( 0.f ) == 0 for: 0 == 0
+# convertToBits
+ok {test-number} - convertToBits( -0.f ) == ( 1ULL << 31 ) for: 2147483648 (0x<hex digits>) == 2147483648 (0x<hex digits>)
+# convertToBits
+ok {test-number} - convertToBits( 0. ) == 0 for: 0 == 0
+# convertToBits
+ok {test-number} - convertToBits( -0. ) == ( 1ULL << 63 ) for: 9223372036854775808 (0x<hex digits>) == 9223372036854775808 (0x<hex digits>)
+# convertToBits
+ok {test-number} - convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 for: 1 == 1
+# convertToBits
+ok {test-number} - convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 for: 1 == 1
+# dynamic skipping works with generators
+ok {test-number} - # SKIP 'skipping because answer = 41'
+# dynamic skipping works with generators
+ok {test-number} -
+# dynamic skipping works with generators
+ok {test-number} - # SKIP 'skipping because answer = 43'
+# empty tags are not allowed
+ok {test-number} - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+# erfc_inv
+ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 == Approx( -0.09203687623843015 )
+# erfc_inv
+ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 == Approx( -0.05980291115763361 )
+# erfc_inv
+ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 == Approx( 1.38590382434967796 )
+# estimate_clock_resolution
+ok {test-number} - res.mean.count() == rate for: 2000.0 == 2000 (0x<hex digits>)
+# estimate_clock_resolution
+ok {test-number} - res.outliers.total() == 0 for: 0 == 0
+# even more nested SECTION tests
+ok {test-number} -
+# even more nested SECTION tests
+ok {test-number} -
+# even more nested SECTION tests
+ok {test-number} -
+# failed assertions before SKIP cause test case to fail
+not ok {test-number} - 3 == 4
+# failed assertions before SKIP cause test case to fail
+ok {test-number} - # SKIP
+# failing for some generator values causes entire test case to fail
+not ok {test-number} - explicitly
+# failing for some generator values causes entire test case to fail
+ok {test-number} - # SKIP
+# failing for some generator values causes entire test case to fail
+not ok {test-number} - explicitly
+# failing for some generator values causes entire test case to fail
+ok {test-number} - # SKIP
+# failing in some unskipped sections causes entire test case to fail
+ok {test-number} - # SKIP
+# failing in some unskipped sections causes entire test case to fail
+not ok {test-number} - explicitly
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: 'Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<int>::value)'
+# is_unary_function
+ok {test-number} - with 1 message: '!(Catch::Clara::Detail::is_unary_function<std::string const&>::value)'
+# just failure
+not ok {test-number} - explicitly with 1 message: 'Previous info should not be seen'
+# just failure after unscoped info
+not ok {test-number} - explicitly with 1 message: 'previous unscoped info SHOULD not be seen'
+# long long
+ok {test-number} - l == std::numeric_limits<long long>::max() for: 9223372036854775807 (0x<hex digits>) == 9223372036854775807 (0x<hex digits>)
+# looped SECTION tests
+not ok {test-number} - b > a for: 0 > 1
+# looped SECTION tests
+not ok {test-number} - b > a for: 1 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 2 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 3 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 4 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 5 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 6 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 7 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 8 > 1
+# looped SECTION tests
+ok {test-number} - b > a for: 9 > 1
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[0] (1) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[1] (1) is even'
+# looped tests
+ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[2] (2) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[3] (3) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[4] (5) is even'
+# looped tests
+ok {test-number} - ( fib[i] % 2 ) == 0 for: 0 == 0 with 1 message: 'Testing if fib[5] (8) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[6] (13) is even'
+# looped tests
+not ok {test-number} - ( fib[i] % 2 ) == 0 for: 1 == 0 with 1 message: 'Testing if fib[7] (21) is even'
+# makeStream recognizes %debug stream name
+ok {test-number} - Catch::makeStream( "%debug" )
+# make_unique reimplementation
+ok {test-number} - !(lval.has_moved) for: !false
+# make_unique reimplementation
+ok {test-number} - rval.has_moved for: true
+# make_unique reimplementation
+ok {test-number} - *ptr == std::tuple<int, double, int>{1, 2., 3} for: {?} == {?}
+# mean
+ok {test-number} - m == 19. for: 19.0 == 19.0
+# measure
+ok {test-number} - x == 17 for: 17 == 17
+# measure
+ok {test-number} - x == 23 for: 23 == 23
+# measure
+ok {test-number} - r.elapsed.count() == 42 for: 42 == 42
+# measure
+ok {test-number} - r.result == 23 for: 23 == 23
+# measure
+ok {test-number} - r.iterations == 1 for: 1 == 1
+# measure
+ok {test-number} - s.elapsed.count() == 69 for: 69 == 69
+# measure
+ok {test-number} - s.result == 17 for: 17 == 17
+# measure
+ok {test-number} - s.iterations == 1 for: 1 == 1
+# mix info, unscoped info and warning
+warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'and warn may mix'
+# mix info, unscoped info and warning
+warning {test-number} - 'info' with 2 messages: 'unscoped info' and 'they are not cleared after warnings'
+# more nested SECTION tests
+not ok {test-number} - a == b for: 1 == 2
+# more nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# more nested SECTION tests
+ok {test-number} - a < b for: 1 < 2
+# nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# nested SECTION tests
+ok {test-number} - b != a for: 2 != 1
+# nested SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# nested sections can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+# non streamable - with conv. op
+ok {test-number} - s == "7" for: "7" == "7"
+# non-copyable objects
+ok {test-number} - ti == typeid(int) for: {?} == {?}
+# normal_quantile
+ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 == Approx( 0.13015979861484198 )
+# normal_quantile
+ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 == Approx( 0.08457408802851875 )
+# normal_quantile
+ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 == Approx( -1.95996398454005449 )
+# not allowed
+ok {test-number} -
+# not prints unscoped info from previous failures
+ok {test-number} - true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions'
+# not prints unscoped info from previous failures
+ok {test-number} - true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions'
+# not prints unscoped info from previous failures
+not ok {test-number} - false with 1 message: 'this SHOULD be seen'
+# null strings
+ok {test-number} - makeString( false ) != static_cast<char*>(0) for: "valid string" != {null string}
+# null strings
+ok {test-number} - makeString( true ) == static_cast<char*>(0) for: {null string} == {null string}
+# null_ptr
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# pair<pair<int,const char *,pair<std::string,int> > -> toString
+ok {test-number} - ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" for: "{ { 42, "Arthur" }, { "Ford", 24 } }" == "{ { 42, "Arthur" }, { "Ford", 24 } }"
+# parseEnums
+ok {test-number} - parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) for: { } Equals: { }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) for: { Value1 } Equals: { Value1 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) for: { Value1, Value2 } Equals: { Value1, Value2 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+# parseEnums
+ok {test-number} - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) for: { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+# pointer to class
+ok {test-number} - p == 0 for: 0 == 0
+# print unscoped info if passing unscoped info is printed
+ok {test-number} - true with 1 message: 'this MAY be seen IF info is printed for passing assertions'
+# prints unscoped info on failure
+not ok {test-number} - false with 2 messages: 'this SHOULD be seen' and 'this SHOULD also be seen'
+# prints unscoped info only for the first assertion
+not ok {test-number} - false with 1 message: 'this SHOULD be seen only ONCE'
+# prints unscoped info only for the first assertion
+ok {test-number} - true
+# prints unscoped info only for the first assertion
+ok {test-number} - true with 1 message: 'this MAY also be seen only ONCE IF info is printed for passing assertions'
+# prints unscoped info only for the first assertion
+ok {test-number} - true
+# random SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# random SECTION tests
+ok {test-number} - b != a for: 2 != 1
+# random SECTION tests
+ok {test-number} - a != b for: 1 != 2
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "b", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "azcdefcg" for: "azcdefcg" == "azcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "c", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "abzdefzg" for: "abzdefzg" == "abzdefzg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "a", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "zbcdefcg" for: "zbcdefcg" == "zbcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "g", "z") for: true
+# replaceInPlace
+ok {test-number} - letters == "abcdefcz" for: "abcdefcz" == "abcdefcz"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, letters, "replaced") for: true
+# replaceInPlace
+ok {test-number} - letters == "replaced" for: "replaced" == "replaced"
+# replaceInPlace
+ok {test-number} - !(Catch::replaceInPlace(letters, "x", "z")) for: !false
+# replaceInPlace
+ok {test-number} - letters == letters for: "abcdefcg" == "abcdefcg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(letters, "c", "cc") for: true
+# replaceInPlace
+ok {test-number} - letters == "abccdefccg" for: "abccdefccg" == "abccdefccg"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(s, "--", "-") for: true
+# replaceInPlace
+ok {test-number} - s == "--" for: "--" == "--"
+# replaceInPlace
+ok {test-number} - Catch::replaceInPlace(s, "'", "|'") for: true
+# replaceInPlace
+ok {test-number} - s == "didn|'t" for: "didn|'t" == "didn|'t"
+# request an unknown %-starting stream fails
+ok {test-number} - Catch::makeStream( "%somestream" )
+# resolution
+ok {test-number} - res.size() == count for: 10 == 10
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# resolution
+ok {test-number} - res[i] == rate for: 1000.0 == 1000 (0x<hex digits>)
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 1 >= 1
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 2 >= 1
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 4 >= 2
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 8 >= 4
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 16 >= 8
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 32 >= 16
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 64 >= 32
+# run_for_at_least, chronometer
+ok {test-number} - meter.runs() >= old_runs for: 128 >= 64
+# run_for_at_least, chronometer
+ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
+# run_for_at_least, chronometer
+ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
+# run_for_at_least, chronometer
+ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 1 >= 1
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 2 >= 1
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 4 >= 2
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 8 >= 4
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 16 >= 8
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 32 >= 16
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 64 >= 32
+# run_for_at_least, int
+ok {test-number} - x >= old_x for: 128 >= 64
+# run_for_at_least, int
+ok {test-number} - Timing.elapsed >= time for: 128 ns >= 100 ns
+# run_for_at_least, int
+ok {test-number} - Timing.result == Timing.iterations + 17 for: 145 == 145
+# run_for_at_least, int
+ok {test-number} - Timing.iterations >= time.count() for: 128 >= 100
+# sections can be skipped dynamically at runtime
+ok {test-number} -
+# sections can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+# sections can be skipped dynamically at runtime
+ok {test-number} -
+# send a single char to INFO
+not ok {test-number} - false with 1 message: '3'
+# sends information to INFO
+not ok {test-number} - false with 2 messages: 'hi' and 'i := 7'
+# shortened hide tags are split apart
+ok {test-number} - testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) for: { {?}, {?} } ( Contains: {?} and Contains: {?} )
+# skipped tests can optionally provide a reason
+ok {test-number} - # SKIP 'skipping because answer = 43'
+# splitString
+ok {test-number} - splitStringRef("", ','), Equals(std::vector<StringRef>()) for: { } Equals: { }
+# splitString
+ok {test-number} - splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) for: { abc } Equals: { abc }
+# splitString
+ok {test-number} - splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) for: { abc, def } Equals: { abc, def }
+# stacks unscoped info in loops
+not ok {test-number} - false with 4 messages: 'Count 1 to 3...' and '1' and '2' and '3'
+# stacks unscoped info in loops
+not ok {test-number} - false with 4 messages: 'Count 4 to 6...' and '4' and '5' and '6'
+# startsWith
+ok {test-number} - !(startsWith("", 'c')) for: !false
+# startsWith
+ok {test-number} - startsWith(std::string("abc"), 'a') for: true
+# startsWith
+ok {test-number} - startsWith("def"_catch_sr, 'd') for: true
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( emptyMap ) == "{ }" for: "{ }" == "{ }"
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" for: "{ { "one", 1 } }" == "{ { "one", 1 } }"
+# std::map is convertible string
+ok {test-number} - Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" for: "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" == "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+# std::pair<int,const std::string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+# std::pair<int,std::string> -> toString
+ok {test-number} - ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" for: "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( emptySet ) == "{ }" for: "{ }" == "{ }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( set ) == "{ \"one\" }" for: "{ "one" }" == "{ "one" }"
+# std::set is convertible string
+ok {test-number} - Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" for: "{ "abc", "def", "ghi" }" == "{ "abc", "def", "ghi" }"
+# std::vector<std::pair<std::string,int> > -> toString
+ok {test-number} - ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" for: "{ { "green", 55 } }" == "{ { "green", 55 } }"
+# stdout and stderr streams have %-starting name
+ok {test-number} - Catch::makeStream( "%stderr" )->isConsole() for: true
+# stdout and stderr streams have %-starting name
+ok {test-number} - Catch::makeStream( "%stdout" )->isConsole() for: true
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" for: "op<<(streamable_range)" == "op<<(streamable_range)"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" for: "stringmaker(streamable_range)" == "stringmaker(streamable_range)"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" for: "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+# stringify ranges
+ok {test-number} - ::Catch::Detail::stringify(disabled_range{}) == "{?}" for: "{?}" == "{?}"
+# stringify( has_maker )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" for: "StringMaker<has_maker>" == "StringMaker<has_maker>"
+# stringify( has_maker_and_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" for: "StringMaker<has_maker_and_operator>" == "StringMaker<has_maker_and_operator>"
+# stringify( has_neither )
+ok {test-number} - ::Catch::Detail::stringify(item) == "{?}" for: "{?}" == "{?}"
+# stringify( has_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" for: "operator<<( has_operator )" == "operator<<( has_operator )"
+# stringify( has_template_operator )
+ok {test-number} - ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" for: "operator<<( has_template_operator )" == "operator<<( has_template_operator )"
+# stringify( vectors<has_maker> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" for: "{ StringMaker<has_maker> }" == "{ StringMaker<has_maker> }"
+# stringify( vectors<has_maker_and_operator> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" for: "{ StringMaker<has_maker_and_operator> }" == "{ StringMaker<has_maker_and_operator> }"
+# stringify( vectors<has_operator> )
+ok {test-number} - ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" for: "{ operator<<( has_operator ) }" == "{ operator<<( has_operator ) }"
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 3 == 3
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 3 == 3
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 5 == 5
+# strlen3
+ok {test-number} - data.str.size() == data.len for: 4 == 4
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 5 == 5
+# tables
+ok {test-number} - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) for: 6 == 6
+# tags with dots in later positions are not parsed as hidden
+ok {test-number} - testcase.tags.size() == 1 for: 1 == 1
+# tags with dots in later positions are not parsed as hidden
+ok {test-number} - testcase.tags[0].original == "magic.tag"_catch_sr for: magic.tag == magic.tag
+# tests can be skipped dynamically at runtime
+ok {test-number} - # SKIP
+# thrown std::strings are translated
+not ok {test-number} - unexpected exception with message: 'Why would you throw a std::string?'
+# toString on const wchar_t const pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on const wchar_t pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on wchar_t const pointer returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString on wchar_t returns the string contents
+ok {test-number} - result == "\"wide load\"" for: ""wide load"" == ""wide load""
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "E2/V0" for: "E2/V0" == "E2/V0"
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "E2/V1" for: "E2/V1" == "E2/V1"
+# toString(enum class w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e3) == "Unknown enum value 10" for: "Unknown enum value 10" == "Unknown enum value 10"
+# toString(enum class)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+# toString(enum class)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+# toString(enum w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "E2{0}" for: "E2{0}" == "E2{0}"
+# toString(enum w/operator<<)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "E2{1}" for: "E2{1}" == "E2{1}"
+# toString(enum)
+ok {test-number} - ::Catch::Detail::stringify(e0) == "0" for: "0" == "0"
+# toString(enum)
+ok {test-number} - ::Catch::Detail::stringify(e1) == "1" for: "1" == "1"
+# tuple<>
+ok {test-number} - "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }"
+# tuple<>
+ok {test-number} - "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }"
+# tuple<float,int>
+ok {test-number} - "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f"
+# tuple<float,int>
+ok {test-number} - "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+# tuple<int>
+ok {test-number} - "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }"
+# tuple<string,string>
+ok {test-number} - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }"
+# tuple<tuple<int>,tuple<>,float>
+ok {test-number} - "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == "{ { 42 }, { }, 1.5f }"
+# uniform samples
+ok {test-number} - e.point == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.upper_bound == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.lower_bound == 23 for: 23.0 == 23
+# uniform samples
+ok {test-number} - e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996
+# uniform_integer_distribution can return the bounds
+ok {test-number} - dist.a() == -10 for: -10 == -10
+# uniform_integer_distribution can return the bounds
+ok {test-number} - dist.b() == 10 for: 10 == 10
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == naked_ptr for: 0x<hex digits> == 0x<hex digits>
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() != 0 for: 0x<hex digits> != 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr.get() == 0 for: 0 == 0
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr1) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr2 for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr2 == 1 for: 1 == 1
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - !(ptr2) for: !{?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - ptr1 for: {?}
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr1 == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr1 == 2 for: 2 == 2
+# unique_ptr reimplementation: basic functionality
+ok {test-number} - *ptr2 == 1 for: 1 == 1
+# vec<vec<string,alloc>> -> toString
+ok {test-number} - ::Catch::Detail::stringify(v) == "{ }" for: "{ }" == "{ }"
+# vec<vec<string,alloc>> -> toString
+ok {test-number} - ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" for: "{ { "hello" }, { "world" } }" == "{ { "hello" }, { "world" } }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ }" for: "{ }" == "{ }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true }" for: "{ true }" == "{ true }"
+# vector<bool> -> toString
+ok {test-number} - ::Catch::Detail::stringify(bools) == "{ true, false }" for: "{ true, false }" == "{ true, false }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# vector<int,allocator> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42 }" for: "{ 42 }" == "{ 42 }"
+# vector<int> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" for: "{ 42, 250 }" == "{ 42, 250 }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ }" for: "{ }" == "{ }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\" }" for: "{ "hello" }" == "{ "hello" }"
+# vector<string> -> toString
+ok {test-number} - ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" for: "{ "hello", "world" }" == "{ "hello", "world" }"
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 10 for: 10 == 10
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 0 for: 0 == 0
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() == 0 for: 0 == 0
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 10 for: 10 >= 10
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# vectors can be sized and resized
+ok {test-number} - v.size() == 5 for: 5 == 5
+# vectors can be sized and resized
+ok {test-number} - v.capacity() >= 5 for: 5 >= 5
+# warmup
+ok {test-number} - (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() for: 160000000 (0x<hex digits>) > 100
+# warmup
+ok {test-number} - (end - start) > Catch::Benchmark::Detail::warmup_time for: 310016000 ns > 100 ms
+# weighted_average_quantile
+ok {test-number} - q1 == 14.5 for: 14.5 == 14.5
+# weighted_average_quantile
+ok {test-number} - med == 18. for: 18.0 == 18.0
+# weighted_average_quantile
+ok {test-number} - q3 == 23. for: 23.0 == 23.0
+# xmlentitycheck
+ok {test-number} -
+# xmlentitycheck
+ok {test-number} -
+1..2281
+
diff --git a/tests/SelfTest/Baselines/teamcity.sw.approved.txt b/tests/SelfTest/Baselines/teamcity.sw.approved.txt
new file mode 100644
index 0000000..db48552
--- /dev/null
+++ b/tests/SelfTest/Baselines/teamcity.sw.approved.txt
@@ -0,0 +1,1024 @@
+##teamcity[testSuiteStarted name='<exe-name>']
+##teamcity[testStarted name='# A test name that starts with a #']
+##teamcity[testFinished name='# A test name that starts with a #' duration="{duration}"]
+##teamcity[testStarted name='#1027: Bitfields can be captured']
+##teamcity[testFinished name='#1027: Bitfields can be captured' duration="{duration}"]
+##teamcity[testStarted name='#1147']
+##teamcity[testFinished name='#1147' duration="{duration}"]
+##teamcity[testStarted name='#1175 - Hidden Test']
+##teamcity[testFinished name='#1175 - Hidden Test' duration="{duration}"]
+##teamcity[testStarted name='#1238']
+##teamcity[testFinished name='#1238' duration="{duration}"]
+##teamcity[testStarted name='#1245']
+##teamcity[testFinished name='#1245' duration="{duration}"]
+##teamcity[testStarted name='#1319: Sections can have description (even if it is not saved']
+##teamcity[testFinished name='#1319: Sections can have description (even if it is not saved' duration="{duration}"]
+##teamcity[testStarted name='#1403']
+##teamcity[testFinished name='#1403' duration="{duration}"]
+##teamcity[testStarted name='#1455 - INFO and WARN can start with a linebreak']
+##teamcity[testFinished name='#1455 - INFO and WARN can start with a linebreak' duration="{duration}"]
+##teamcity[testStarted name='#1514: stderr/stdout is not captured in tests aborted by an exception']
+##teamcity[testFailed name='#1514: stderr/stdout is not captured in tests aborted by an exception' message='Tricky.tests.cpp:<line number>|n...............................................................................|n|nTricky.tests.cpp:<line number>|nexplicit failure with message:|n "1514"']
+##teamcity[testStdOut name='#1514: stderr/stdout is not captured in tests aborted by an exception' out='This would not be caught previously|n']
+##teamcity[testStdErr name='#1514: stderr/stdout is not captured in tests aborted by an exception' out='Nor would this|n']
+##teamcity[testFinished name='#1514: stderr/stdout is not captured in tests aborted by an exception' duration="{duration}"]
+##teamcity[testStarted name='#1548']
+##teamcity[testFinished name='#1548' duration="{duration}"]
+##teamcity[testStarted name='#1905 -- test spec parser properly clears internal state between compound tests']
+##teamcity[testFinished name='#1905 -- test spec parser properly clears internal state between compound tests' duration="{duration}"]
+##teamcity[testStarted name='#1912 -- test spec parser handles escaping']
+##teamcity[testFinished name='#1912 -- test spec parser handles escaping' duration="{duration}"]
+##teamcity[testStarted name='#1913 - GENERATE inside a for loop should not keep recreating the generator']
+##teamcity[testFinished name='#1913 - GENERATE inside a for loop should not keep recreating the generator' duration="{duration}"]
+##teamcity[testStarted name='#1913 - GENERATEs can share a line']
+##teamcity[testFinished name='#1913 - GENERATEs can share a line' duration="{duration}"]
+##teamcity[testStarted name='#1938 - GENERATE after a section']
+##teamcity[testFinished name='#1938 - GENERATE after a section' duration="{duration}"]
+##teamcity[testStarted name='#1938 - Section followed by flat generate']
+##teamcity[testFinished name='#1938 - Section followed by flat generate' duration="{duration}"]
+##teamcity[testStarted name='#1938 - flat generate']
+##teamcity[testFinished name='#1938 - flat generate' duration="{duration}"]
+##teamcity[testStarted name='#1938 - mixed sections and generates']
+##teamcity[testFinished name='#1938 - mixed sections and generates' duration="{duration}"]
+##teamcity[testStarted name='#1938 - nested generate']
+##teamcity[testFinished name='#1938 - nested generate' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#2152 - ULP checks between differently signed values were wrong - double']
+##teamcity[testFinished name='#2152 - ULP checks between differently signed values were wrong - double' duration="{duration}"]
+##teamcity[testStarted name='#2152 - ULP checks between differently signed values were wrong - float']
+##teamcity[testFinished name='#2152 - ULP checks between differently signed values were wrong - float' duration="{duration}"]
+##teamcity[testStarted name='#2615 - Throwing in constructor generator fails test case but does not abort']
+##teamcity[testIgnored name='#2615 - Throwing in constructor generator fails test case but does not abort' message='Generators.tests.cpp:<line number>|n...............................................................................|n|nGenerators.tests.cpp:<line number>|nunexpected exception with message:|n "failure to init"- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#2615 - Throwing in constructor generator fails test case but does not abort' duration="{duration}"]
+##teamcity[testStarted name='#748 - captures with unexpected exceptions']
+##teamcity[testIgnored name='#748 - captures with unexpected exceptions' message='-------------------------------------------------------------------------------|noutside assertions|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with messages:|n "answer := 42"|n "expected exception"- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='#748 - captures with unexpected exceptions' message='-------------------------------------------------------------------------------|ninside REQUIRE_NOTHROW|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with messages:|n "answer := 42"|n "expected exception"|n REQUIRE_NOTHROW( thisThrows() )|nwith expansion:|n thisThrows()|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#748 - captures with unexpected exceptions' duration="{duration}"]
+##teamcity[testStarted name='#809']
+##teamcity[testFinished name='#809' duration="{duration}"]
+##teamcity[testStarted name='#833']
+##teamcity[testFinished name='#833' duration="{duration}"]
+##teamcity[testStarted name='#835 -- errno should not be touched by Catch2']
+##teamcity[testIgnored name='#835 -- errno should not be touched by Catch2' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( f() == 0 )|nwith expansion:|n 1 == 0|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#835 -- errno should not be touched by Catch2' duration="{duration}"]
+##teamcity[testStarted name='#872']
+##teamcity[testFinished name='#872' duration="{duration}"]
+##teamcity[testStarted name='#961 -- Dynamically created sections should all be reported']
+##teamcity[testFinished name='#961 -- Dynamically created sections should all be reported' duration="{duration}"]
+##teamcity[testStarted name='|'Not|' checks that should fail']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( false != false )|nwith expansion:|n false != false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( true != true )|nwith expansion:|n true != true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !true )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( true )|nwith expansion:|n !true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !trueValue )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( trueValue )|nwith expansion:|n !true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !(1 == 1) )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( 1 == 1 )|nwith expansion:|n !(1 == 1)|n']
+##teamcity[testFinished name='|'Not|' checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='|'Not|' checks that should succeed']
+##teamcity[testFinished name='|'Not|' checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='(unimplemented) static bools can be evaluated']
+##teamcity[testFinished name='(unimplemented) static bools can be evaluated' duration="{duration}"]
+##teamcity[testStarted name='3x3x3 ints']
+##teamcity[testFinished name='3x3x3 ints' duration="{duration}"]
+##teamcity[testStarted name='A METHOD_AS_TEST_CASE based test run that fails']
+##teamcity[testFailed name='A METHOD_AS_TEST_CASE based test run that fails' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( s == "world" )|nwith expansion:|n "hello" == "world"|n']
+##teamcity[testFinished name='A METHOD_AS_TEST_CASE based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A METHOD_AS_TEST_CASE based test run that succeeds']
+##teamcity[testFinished name='A METHOD_AS_TEST_CASE based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 6 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 2 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 6 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 2 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1.0 == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1.0f == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 3 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 6 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_METHOD based test run that fails']
+##teamcity[testFailed name='A TEST_CASE_METHOD based test run that fails' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( m_a == 2 )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='A TEST_CASE_METHOD based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_METHOD based test run that succeeds']
+##teamcity[testFinished name='A TEST_CASE_METHOD based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails']
+##teamcity[testFailed name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails' message='-------------------------------------------------------------------------------|nSecond partial run|n-------------------------------------------------------------------------------|nClass.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( m_a == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds']
+##teamcity[testFinished name='A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - Foo<float>']
+##teamcity[testFinished name='A Template product test case - Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - Foo<int>']
+##teamcity[testFinished name='A Template product test case - Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - std::vector<float>']
+##teamcity[testFinished name='A Template product test case - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - std::vector<int>']
+##teamcity[testFinished name='A Template product test case - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - Bar<float, 42>']
+##teamcity[testFinished name='A Template product test case with array signature - Bar<float, 42>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - Bar<int, 9>']
+##teamcity[testFinished name='A Template product test case with array signature - Bar<int, 9>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - std::array<float, 42>']
+##teamcity[testFinished name='A Template product test case with array signature - std::array<float, 42>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - std::array<int, 9>']
+##teamcity[testFinished name='A Template product test case with array signature - std::array<int, 9>' duration="{duration}"]
+##teamcity[testStarted name='A comparison that uses literals instead of the normal constructor']
+##teamcity[testFinished name='A comparison that uses literals instead of the normal constructor' duration="{duration}"]
+##teamcity[testStarted name='A couple of nested sections followed by a failure']
+##teamcity[testFailed name='A couple of nested sections followed by a failure' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure with message:|n "to infinity and beyond"']
+##teamcity[testFinished name='A couple of nested sections followed by a failure' duration="{duration}"]
+##teamcity[testStarted name='A failing expression with a non streamable type is still captured']
+##teamcity[testFailed name='A failing expression with a non streamable type is still captured' message='Tricky.tests.cpp:<line number>|n...............................................................................|n|nTricky.tests.cpp:<line number>|nexpression failed|n CHECK( &o1 == &o2 )|nwith expansion:|n 0x<hex digits> == 0x<hex digits>|n']
+##teamcity[testFailed name='A failing expression with a non streamable type is still captured' message='Tricky.tests.cpp:<line number>|nexpression failed|n CHECK( o1 == o2 )|nwith expansion:|n {?} == {?}|n']
+##teamcity[testFinished name='A failing expression with a non streamable type is still captured' duration="{duration}"]
+##teamcity[testStarted name='Absolute margin']
+##teamcity[testFinished name='Absolute margin' duration="{duration}"]
+##teamcity[testStarted name='An empty test with no assertions']
+##teamcity[testFinished name='An empty test with no assertions' duration="{duration}"]
+##teamcity[testStarted name='An expression with side-effects should only be evaluated once']
+##teamcity[testFinished name='An expression with side-effects should only be evaluated once' duration="{duration}"]
+##teamcity[testStarted name='An unchecked exception reports the line of the last assertion']
+##teamcity[testFailed name='An unchecked exception reports the line of the last assertion' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n']
+##teamcity[testFinished name='An unchecked exception reports the line of the last assertion' duration="{duration}"]
+##teamcity[testStarted name='Anonymous test case 1']
+##teamcity[testFinished name='Anonymous test case 1' duration="{duration}"]
+##teamcity[testStarted name='Approx setters validate their arguments']
+##teamcity[testFinished name='Approx setters validate their arguments' duration="{duration}"]
+##teamcity[testStarted name='Approx with exactly-representable margin']
+##teamcity[testFinished name='Approx with exactly-representable margin' duration="{duration}"]
+##teamcity[testStarted name='Approximate PI']
+##teamcity[testFinished name='Approximate PI' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with different epsilons']
+##teamcity[testFinished name='Approximate comparisons with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with floats']
+##teamcity[testFinished name='Approximate comparisons with floats' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with ints']
+##teamcity[testFinished name='Approximate comparisons with ints' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with mixed numeric types']
+##teamcity[testFinished name='Approximate comparisons with mixed numeric types' duration="{duration}"]
+##teamcity[testStarted name='Arbitrary predicate matcher']
+##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
+##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
+##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
+##teamcity[testStarted name='Assertions then sections']
+##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
+##teamcity[testStarted name='Basic use of the Contains range matcher']
+##teamcity[testFinished name='Basic use of the Contains range matcher' duration="{duration}"]
+##teamcity[testStarted name='Basic use of the Empty range matcher']
+##teamcity[testFinished name='Basic use of the Empty range matcher' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE can deal with complex expressions']
+##teamcity[testFinished name='CAPTURE can deal with complex expressions' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE can deal with complex expressions involving commas']
+##teamcity[testFinished name='CAPTURE can deal with complex expressions involving commas' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE parses string and character constants']
+##teamcity[testFinished name='CAPTURE parses string and character constants' duration="{duration}"]
+##teamcity[testStarted name='Capture and info messages']
+##teamcity[testFinished name='Capture and info messages' duration="{duration}"]
+##teamcity[testStarted name='CaseInsensitiveEqualsTo is case insensitive']
+##teamcity[testFinished name='CaseInsensitiveEqualsTo is case insensitive' duration="{duration}"]
+##teamcity[testStarted name='CaseInsensitiveLess is case insensitive']
+##teamcity[testFinished name='CaseInsensitiveLess is case insensitive' duration="{duration}"]
+##teamcity[testStarted name='Character pretty printing']
+##teamcity[testFinished name='Character pretty printing' duration="{duration}"]
+##teamcity[testStarted name='Clara::Arg does not crash on incomplete input']
+##teamcity[testFinished name='Clara::Arg does not crash on incomplete input' duration="{duration}"]
+##teamcity[testStarted name='Clara::Arg supports single-arg parse the way Opt does']
+##teamcity[testFinished name='Clara::Arg supports single-arg parse the way Opt does' duration="{duration}"]
+##teamcity[testStarted name='Clara::Opt supports accept-many lambdas']
+##teamcity[testFinished name='Clara::Opt supports accept-many lambdas' duration="{duration}"]
+##teamcity[testStarted name='ColourGuard behaviour']
+##teamcity[testFinished name='ColourGuard behaviour' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchAllOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchAllOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchAnyOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchAnyOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchNotOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchNotOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining concrete matchers does not use templated matchers']
+##teamcity[testFinished name='Combining concrete matchers does not use templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining only templated matchers']
+##teamcity[testFinished name='Combining only templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining templated and concrete matchers']
+##teamcity[testFinished name='Combining templated and concrete matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining templated matchers']
+##teamcity[testFinished name='Combining templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Commas in various macros are allowed']
+##teamcity[testFinished name='Commas in various macros are allowed' duration="{duration}"]
+##teamcity[testStarted name='Comparing function pointers']
+##teamcity[testFinished name='Comparing function pointers' duration="{duration}"]
+##teamcity[testStarted name='Comparison ops']
+##teamcity[testFinished name='Comparison ops' duration="{duration}"]
+##teamcity[testStarted name='Comparison with explicitly convertible types']
+##teamcity[testFinished name='Comparison with explicitly convertible types' duration="{duration}"]
+##teamcity[testStarted name='Comparisons between ints where one side is computed']
+##teamcity[testFinished name='Comparisons between ints where one side is computed' duration="{duration}"]
+##teamcity[testStarted name='Comparisons between unsigned ints and negative signed ints match c++ standard behaviour']
+##teamcity[testFinished name='Comparisons between unsigned ints and negative signed ints match c++ standard behaviour' duration="{duration}"]
+##teamcity[testStarted name='Comparisons with int literals don|'t warn when mixing signed/ unsigned']
+##teamcity[testFinished name='Comparisons with int literals don|'t warn when mixing signed/ unsigned' duration="{duration}"]
+##teamcity[testStarted name='Composed generic matchers shortcircuit']
+##teamcity[testFinished name='Composed generic matchers shortcircuit' duration="{duration}"]
+##teamcity[testStarted name='Composed matchers shortcircuit']
+##teamcity[testFinished name='Composed matchers shortcircuit' duration="{duration}"]
+##teamcity[testStarted name='Contains string matcher']
+##teamcity[testFailed name='Contains string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" contains: "not there" (case insensitive)|n']
+##teamcity[testFailed name='Contains string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" contains: "STRING"|n']
+##teamcity[testFinished name='Contains string matcher' duration="{duration}"]
+##teamcity[testStarted name='Copy and then generate a range']
+##teamcity[testFinished name='Copy and then generate a range' duration="{duration}"]
+##teamcity[testStarted name='Cout stream properly declares it writes to stdout']
+##teamcity[testFinished name='Cout stream properly declares it writes to stdout' duration="{duration}"]
+##teamcity[testStarted name='Custom exceptions can be translated when testing for nothrow']
+##teamcity[testFailed name='Custom exceptions can be translated when testing for nothrow' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception - not std"|n REQUIRE_NOTHROW( throwCustom() )|nwith expansion:|n throwCustom()|n']
+##teamcity[testFinished name='Custom exceptions can be translated when testing for nothrow' duration="{duration}"]
+##teamcity[testStarted name='Custom exceptions can be translated when testing for throwing as something else']
+##teamcity[testFailed name='Custom exceptions can be translated when testing for throwing as something else' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception - not std"|n REQUIRE_THROWS_AS( throwCustom(), std::exception )|nwith expansion:|n throwCustom(), std::exception|n']
+##teamcity[testFinished name='Custom exceptions can be translated when testing for throwing as something else' duration="{duration}"]
+##teamcity[testStarted name='Custom std-exceptions can be custom translated']
+##teamcity[testFailed name='Custom std-exceptions can be custom translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom std exception"']
+##teamcity[testFinished name='Custom std-exceptions can be custom translated' duration="{duration}"]
+##teamcity[testStarted name='Default scale is invisible to comparison']
+##teamcity[testFinished name='Default scale is invisible to comparison' duration="{duration}"]
+##teamcity[testStarted name='Directly creating an EnumInfo']
+##teamcity[testFinished name='Directly creating an EnumInfo' duration="{duration}"]
+##teamcity[testStarted name='Empty generators can SKIP in constructor']
+##teamcity[testIgnored name='Empty generators can SKIP in constructor' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "This generator is empty"']
+##teamcity[testFinished name='Empty generators can SKIP in constructor' duration="{duration}"]
+##teamcity[testStarted name='Empty stream name opens cout stream']
+##teamcity[testFinished name='Empty stream name opens cout stream' duration="{duration}"]
+##teamcity[testStarted name='EndsWith string matcher']
+##teamcity[testFailed name='EndsWith string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ends with: "Substring"|n']
+##teamcity[testFailed name='EndsWith string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ends with: "this" (case insensitive)|n']
+##teamcity[testFinished name='EndsWith string matcher' duration="{duration}"]
+##teamcity[testStarted name='Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM']
+##teamcity[testFinished name='Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM' duration="{duration}"]
+##teamcity[testStarted name='Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM']
+##teamcity[testFinished name='Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM' duration="{duration}"]
+##teamcity[testStarted name='Epsilon only applies to Approx|'s value']
+##teamcity[testFinished name='Epsilon only applies to Approx|'s value' duration="{duration}"]
+##teamcity[testStarted name='Equality checks that should fail']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 6 )|nwith expansion:|n 7 == 6|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 8 )|nwith expansion:|n 7 == 8|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 0 )|nwith expansion:|n 7 == 0|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.100000381f|n==|nApprox( 9.10999965667724609 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.100000381f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.100000381f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.100000381f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.14159265350000005|n==|nApprox( 3.14150000000000018 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "goodbye" )|nwith expansion:|n "hello" == "goodbye"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "hell" )|nwith expansion:|n "hello" == "hell"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "hello1" )|nwith expansion:|n "hello" == "hello1"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello.size() == 6 )|nwith expansion:|n 5 == 6|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.30000000000000027|n==|nApprox( 1.30099999999999993 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Equality checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Equality checks that should succeed']
+##teamcity[testFinished name='Equality checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='Equals']
+##teamcity[testFinished name='Equals' duration="{duration}"]
+##teamcity[testStarted name='Equals string matcher']
+##teamcity[testFailed name='Equals string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Equals( "this string contains |'ABC|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" equals: "this string contains |'ABC|' as a substring"|n']
+##teamcity[testFailed name='Equals string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" equals: "something else" (case insensitive)|n']
+##teamcity[testFinished name='Equals string matcher' duration="{duration}"]
+##teamcity[testStarted name='Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified']
+##teamcity[testFinished name='Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified' duration="{duration}"]
+##teamcity[testStarted name='Exception matchers that fail']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nNo exception|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nno exception was thrown where one was expected|n CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nno exception was thrown where one was expected|n REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nType mismatch|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nunexpected exception with message:|n "Unknown exception"|n CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nunexpected exception with message:|n "Unknown exception"|n REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nContents are wrong|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n SpecialException::what special exception has value of 1|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n SpecialException::what special exception has value of 1|n']
+##teamcity[testFinished name='Exception matchers that fail' duration="{duration}"]
+##teamcity[testStarted name='Exception matchers that succeed']
+##teamcity[testFinished name='Exception matchers that succeed' duration="{duration}"]
+##teamcity[testStarted name='Exception message can be matched']
+##teamcity[testFinished name='Exception message can be matched' duration="{duration}"]
+##teamcity[testStarted name='Exception messages can be tested for']
+##teamcity[testFinished name='Exception messages can be tested for' duration="{duration}"]
+##teamcity[testStarted name='Exceptions matchers']
+##teamcity[testFinished name='Exceptions matchers' duration="{duration}"]
+##teamcity[testStarted name='Expected exceptions that don|'t throw or unexpected exceptions fail the test']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK_THROWS_AS( thisThrows(), std::string )|nwith expansion:|n thisThrows(), std::string|n']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|nno exception was thrown where one was expected|n CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )|nwith expansion:|n thisDoesntThrow(), std::domain_error|n']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK_NOTHROW( thisThrows() )|nwith expansion:|n thisThrows()|n']
+##teamcity[testFinished name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' duration="{duration}"]
+##teamcity[testStarted name='FAIL aborts the test']
+##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
+##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
+##teamcity[testStarted name='FAIL does not require an argument']
+##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
+##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
+##teamcity[testStarted name='FAIL_CHECK does not abort the test']
+##teamcity[testFailed name='FAIL_CHECK does not abort the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
+##teamcity[testFinished name='FAIL_CHECK does not abort the test' duration="{duration}"]
+##teamcity[testStarted name='Factorials are computed']
+##teamcity[testFinished name='Factorials are computed' duration="{duration}"]
+##teamcity[testStarted name='Filter generator throws exception for empty generator']
+##teamcity[testFinished name='Filter generator throws exception for empty generator' duration="{duration}"]
+##teamcity[testStarted name='Floating point matchers: double']
+##teamcity[testFinished name='Floating point matchers: double' duration="{duration}"]
+##teamcity[testStarted name='Floating point matchers: float']
+##teamcity[testFinished name='Floating point matchers: float' duration="{duration}"]
+##teamcity[testStarted name='GENERATE can combine literals and generators']
+##teamcity[testFinished name='GENERATE can combine literals and generators' duration="{duration}"]
+##teamcity[testStarted name='Generators -- adapters']
+##teamcity[testFinished name='Generators -- adapters' duration="{duration}"]
+##teamcity[testStarted name='Generators -- simple']
+##teamcity[testFinished name='Generators -- simple' duration="{duration}"]
+##teamcity[testStarted name='Generators internals']
+##teamcity[testFinished name='Generators internals' duration="{duration}"]
+##teamcity[testStarted name='Greater-than inequalities with different epsilons']
+##teamcity[testFinished name='Greater-than inequalities with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='Hashers with different seed produce different hash with same test case']
+##teamcity[testFinished name='Hashers with different seed produce different hash with same test case' duration="{duration}"]
+##teamcity[testStarted name='Hashers with same seed produce same hash']
+##teamcity[testFinished name='Hashers with same seed produce same hash' duration="{duration}"]
+##teamcity[testStarted name='Hashing different test cases produces different result']
+##teamcity[testFinished name='Hashing different test cases produces different result' duration="{duration}"]
+##teamcity[testStarted name='Hashing test case produces same hash across multiple calls']
+##teamcity[testFinished name='Hashing test case produces same hash across multiple calls' duration="{duration}"]
+##teamcity[testStarted name='INFO and UNSCOPED_INFO can stream multiple arguments']
+##teamcity[testFailed name='INFO and UNSCOPED_INFO can stream multiple arguments' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with messages:|n "This info has multiple parts."|n "This unscoped info has multiple parts."|n "Show infos!"']
+##teamcity[testFinished name='INFO and UNSCOPED_INFO can stream multiple arguments' duration="{duration}"]
+##teamcity[testStarted name='INFO and WARN do not abort tests']
+##teamcity[testFinished name='INFO and WARN do not abort tests' duration="{duration}"]
+##teamcity[testStarted name='INFO gets logged on failure']
+##teamcity[testFailed name='INFO gets logged on failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this message should be logged"|n "so should this"|n REQUIRE( a == 1 )|nwith expansion:|n 2 == 1|n']
+##teamcity[testFinished name='INFO gets logged on failure' duration="{duration}"]
+##teamcity[testStarted name='INFO gets logged on failure, even if captured before successful assertions']
+##teamcity[testFailed name='INFO gets logged on failure, even if captured before successful assertions' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this message may be logged later"|n "this message should be logged"|n CHECK( a == 1 )|nwith expansion:|n 2 == 1|n']
+##teamcity[testFailed name='INFO gets logged on failure, even if captured before successful assertions' message='Message.tests.cpp:<line number>|nexpression failed with messages:|n "this message may be logged later"|n "this message should be logged"|n "and this, but later"|n CHECK( a == 0 )|nwith expansion:|n 2 == 0|n']
+##teamcity[testFinished name='INFO gets logged on failure, even if captured before successful assertions' duration="{duration}"]
+##teamcity[testStarted name='INFO is reset for each loop']
+##teamcity[testFailed name='INFO is reset for each loop' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "current counter 10"|n "i := 10"|n REQUIRE( i < 10 )|nwith expansion:|n 10 < 10|n']
+##teamcity[testFinished name='INFO is reset for each loop' duration="{duration}"]
+##teamcity[testStarted name='Incomplete AssertionHandler']
+##teamcity[testIgnored name='Incomplete AssertionHandler' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE"|n REQUIRE( Dummy )|nwith expansion:|n Dummy|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Incomplete AssertionHandler' duration="{duration}"]
+##teamcity[testStarted name='Inequality checks that should fail']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven != 7 )|nwith expansion:|n 7 != 7|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.100000381f|n!=|nApprox( 9.10000038146972656 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.14159265350000005|n!=|nApprox( 3.14159265350000005 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello != "hello" )|nwith expansion:|n "hello" != "hello"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello.size() != 5 )|nwith expansion:|n 5 != 5|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Inequality checks that should succeed']
+##teamcity[testFinished name='Inequality checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='JsonWriter']
+##teamcity[testFinished name='JsonWriter' duration="{duration}"]
+##teamcity[testStarted name='JsonWriter escapes charaters in strings properly']
+##teamcity[testFinished name='JsonWriter escapes charaters in strings properly' duration="{duration}"]
+##teamcity[testStarted name='Lambdas in assertions']
+##teamcity[testFinished name='Lambdas in assertions' duration="{duration}"]
+##teamcity[testStarted name='Less-than inequalities with different epsilons']
+##teamcity[testFinished name='Less-than inequalities with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='ManuallyRegistered']
+##teamcity[testFinished name='ManuallyRegistered' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be (AllOf) composed with the && operator']
+##teamcity[testFinished name='Matchers can be (AllOf) composed with the && operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be (AnyOf) composed with the |||| operator']
+##teamcity[testFinished name='Matchers can be (AnyOf) composed with the |||| operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be composed with both && and ||||']
+##teamcity[testFinished name='Matchers can be composed with both && and ||||' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be composed with both && and |||| - failing']
+##teamcity[testFailed name='Matchers can be composed with both && and |||| - failing' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) |||| ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )|n']
+##teamcity[testFinished name='Matchers can be composed with both && and |||| - failing' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be negated (Not) with the ! operator']
+##teamcity[testFinished name='Matchers can be negated (Not) with the ! operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be negated (Not) with the ! operator - failing']
+##teamcity[testFailed name='Matchers can be negated (Not) with the ! operator - failing' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" not contains: "substring"|n']
+##teamcity[testFinished name='Matchers can be negated (Not) with the ! operator - failing' duration="{duration}"]
+##teamcity[testStarted name='Mayfail test case with nested sections']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nA|n1|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nA|n2|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nB|n1|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nB|n2|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Mayfail test case with nested sections' duration="{duration}"]
+##teamcity[testStarted name='Mismatching exception messages failing the test']
+##teamcity[testFailed name='Mismatching exception messages failing the test' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nexpression failed|n REQUIRE_THROWS_WITH( thisThrows(), "should fail" )|nwith expansion:|n "expected exception" equals: "should fail"|n']
+##teamcity[testFinished name='Mismatching exception messages failing the test' duration="{duration}"]
+##teamcity[testStarted name='Multireporter calls reporters and listeners in correct order']
+##teamcity[testFinished name='Multireporter calls reporters and listeners in correct order' duration="{duration}"]
+##teamcity[testStarted name='Multireporter updates ReporterPreferences properly']
+##teamcity[testFinished name='Multireporter updates ReporterPreferences properly' duration="{duration}"]
+##teamcity[testStarted name='Nested generators and captured variables']
+##teamcity[testFinished name='Nested generators and captured variables' duration="{duration}"]
+##teamcity[testStarted name='Nice descriptive name']
+##teamcity[testFinished name='Nice descriptive name' duration="{duration}"]
+##teamcity[testStarted name='Non-std exceptions can be translated']
+##teamcity[testFailed name='Non-std exceptions can be translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception"']
+##teamcity[testFinished name='Non-std exceptions can be translated' duration="{duration}"]
+##teamcity[testStarted name='Objects that evaluated in boolean contexts can be checked']
+##teamcity[testFinished name='Objects that evaluated in boolean contexts can be checked' duration="{duration}"]
+##teamcity[testStarted name='Optionally static assertions']
+##teamcity[testFinished name='Optionally static assertions' duration="{duration}"]
+##teamcity[testStarted name='Ordering comparison checks that should fail']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven > 7 )|nwith expansion:|n 7 > 7|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 7 )|nwith expansion:|n 7 < 7|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven > 8 )|nwith expansion:|n 7 > 8|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 6 )|nwith expansion:|n 7 < 6|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 0 )|nwith expansion:|n 7 < 0|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < -1 )|nwith expansion:|n 7 < -1|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven >= 8 )|nwith expansion:|n 7 >= 8|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven <= 6 )|nwith expansion:|n 7 <= 6|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.100000381f < 9|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.100000381f > 10|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.100000381f > 9.19999999999999929|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "hello" )|nwith expansion:|n "hello" > "hello"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "hello" )|nwith expansion:|n "hello" < "hello"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "hellp" )|nwith expansion:|n "hello" > "hellp"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "z" )|nwith expansion:|n "hello" > "z"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "hellm" )|nwith expansion:|n "hello" < "hellm"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "a" )|nwith expansion:|n "hello" < "a"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello >= "z" )|nwith expansion:|n "hello" >= "z"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello <= "a" )|nwith expansion:|n "hello" <= "a"|n']
+##teamcity[testFinished name='Ordering comparison checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Ordering comparison checks that should succeed']
+##teamcity[testFinished name='Ordering comparison checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='Our PCG implementation provides expected results for known seeds']
+##teamcity[testFinished name='Our PCG implementation provides expected results for known seeds' duration="{duration}"]
+##teamcity[testStarted name='Output from all sections is reported']
+##teamcity[testFailed name='Output from all sections is reported' message='-------------------------------------------------------------------------------|none|n-------------------------------------------------------------------------------|nMessage.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Message from section one"']
+##teamcity[testFailed name='Output from all sections is reported' message='-------------------------------------------------------------------------------|ntwo|n-------------------------------------------------------------------------------|nMessage.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Message from section two"']
+##teamcity[testFinished name='Output from all sections is reported' duration="{duration}"]
+##teamcity[testStarted name='Overloaded comma or address-of operators are not used']
+##teamcity[testFinished name='Overloaded comma or address-of operators are not used' duration="{duration}"]
+##teamcity[testStarted name='Parse uints']
+##teamcity[testFinished name='Parse uints' duration="{duration}"]
+##teamcity[testStarted name='Parsed tags are matched case insensitive']
+##teamcity[testFinished name='Parsed tags are matched case insensitive' duration="{duration}"]
+##teamcity[testStarted name='Parsing sharding-related cli flags']
+##teamcity[testFinished name='Parsing sharding-related cli flags' duration="{duration}"]
+##teamcity[testStarted name='Parsing tags with non-alphabetical characters is pass-through']
+##teamcity[testFinished name='Parsing tags with non-alphabetical characters is pass-through' duration="{duration}"]
+##teamcity[testStarted name='Parsing warnings']
+##teamcity[testFinished name='Parsing warnings' duration="{duration}"]
+##teamcity[testStarted name='Pointers can be compared to null']
+##teamcity[testFinished name='Pointers can be compared to null' duration="{duration}"]
+##teamcity[testStarted name='Precision of floating point stringification can be set']
+##teamcity[testFinished name='Precision of floating point stringification can be set' duration="{duration}"]
+##teamcity[testStarted name='Predicate matcher can accept const char*']
+##teamcity[testFinished name='Predicate matcher can accept const char*' duration="{duration}"]
+##teamcity[testStarted name='Process can be configured on command line']
+##teamcity[testFinished name='Process can be configured on command line' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int, double, float>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int, double, float>' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int, double>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int, double>' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int>' duration="{duration}"]
+##teamcity[testStarted name='Random seed generation accepts known methods']
+##teamcity[testFinished name='Random seed generation accepts known methods' duration="{duration}"]
+##teamcity[testStarted name='Random seed generation reports unknown methods']
+##teamcity[testFinished name='Random seed generation reports unknown methods' duration="{duration}"]
+##teamcity[testStarted name='Range type with sentinel']
+##teamcity[testFinished name='Range type with sentinel' duration="{duration}"]
+##teamcity[testStarted name='Reconstruction should be based on stringification: #914']
+##teamcity[testFailed name='Reconstruction should be based on stringification: #914' message='Decomposition.tests.cpp:<line number>|n...............................................................................|n|nDecomposition.tests.cpp:<line number>|nexpression failed|n CHECK( truthy(false) )|nwith expansion:|n Hey, its truthy!|n']
+##teamcity[testFinished name='Reconstruction should be based on stringification: #914' duration="{duration}"]
+##teamcity[testStarted name='Regex string matcher']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "this STRING contains |'abc|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "this STRING contains |'abc|' as a substring" case sensitively|n']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "contains |'abc|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "contains |'abc|' as a substring" case sensitively|n']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "this string contains |'abc|' as a" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "this string contains |'abc|' as a" case sensitively|n']
+##teamcity[testFinished name='Regex string matcher' duration="{duration}"]
+##teamcity[testStarted name='Registering reporter with |'::|' in name fails']
+##teamcity[testFinished name='Registering reporter with |'::|' in name fails' duration="{duration}"]
+##teamcity[testStarted name='Regression test #1']
+##teamcity[testFinished name='Regression test #1' duration="{duration}"]
+##teamcity[testStarted name='Reporter|'s write listings to provided stream']
+##teamcity[testFinished name='Reporter|'s write listings to provided stream' duration="{duration}"]
+##teamcity[testStarted name='Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla']
+##teamcity[testFinished name='Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla' duration="{duration}"]
+##teamcity[testStarted name='SUCCEED counts as a test pass']
+##teamcity[testFinished name='SUCCEED counts as a test pass' duration="{duration}"]
+##teamcity[testStarted name='SUCCEED does not require an argument']
+##teamcity[testFinished name='SUCCEED does not require an argument' duration="{duration}"]
+##teamcity[testStarted name='Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods']
+##teamcity[testFinished name='Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods' duration="{duration}"]
+##teamcity[testStarted name='Scenario: Do that thing with the thing']
+##teamcity[testFinished name='Scenario: Do that thing with the thing' duration="{duration}"]
+##teamcity[testStarted name='Scenario: This is a really long scenario name to see how the list command deals with wrapping']
+##teamcity[testFinished name='Scenario: This is a really long scenario name to see how the list command deals with wrapping' duration="{duration}"]
+##teamcity[testStarted name='Scenario: Vector resizing affects size and capacity']
+##teamcity[testFinished name='Scenario: Vector resizing affects size and capacity' duration="{duration}"]
+##teamcity[testStarted name='Sends stuff to stdout and stderr']
+##teamcity[testStdOut name='Sends stuff to stdout and stderr' out='A string sent directly to stdout|n']
+##teamcity[testStdErr name='Sends stuff to stdout and stderr' out='A string sent directly to stderr|nA string sent to stderr via clog|n']
+##teamcity[testFinished name='Sends stuff to stdout and stderr' duration="{duration}"]
+##teamcity[testStarted name='Some simple comparisons between doubles']
+##teamcity[testFinished name='Some simple comparisons between doubles' duration="{duration}"]
+##teamcity[testStarted name='Standard output from all sections is reported']
+##teamcity[testStdOut name='Standard output from all sections is reported' out='Message from section one|nMessage from section two|n']
+##teamcity[testFinished name='Standard output from all sections is reported' duration="{duration}"]
+##teamcity[testStarted name='StartsWith string matcher']
+##teamcity[testFailed name='StartsWith string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" starts with: "This String"|n']
+##teamcity[testFailed name='StartsWith string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" starts with: "string" (case insensitive)|n']
+##teamcity[testFinished name='StartsWith string matcher' duration="{duration}"]
+##teamcity[testStarted name='Static arrays are convertible to string']
+##teamcity[testFinished name='Static arrays are convertible to string' duration="{duration}"]
+##teamcity[testStarted name='String matchers']
+##teamcity[testFinished name='String matchers' duration="{duration}"]
+##teamcity[testStarted name='StringRef']
+##teamcity[testFinished name='StringRef' duration="{duration}"]
+##teamcity[testStarted name='StringRef at compilation time']
+##teamcity[testFinished name='StringRef at compilation time' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - signed char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - signed char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - unsigned char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - unsigned char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::duration helpers']
+##teamcity[testFinished name='Stringifying std::chrono::duration helpers' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::duration with weird ratios']
+##teamcity[testFinished name='Stringifying std::chrono::duration with weird ratios' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::time_point<system_clock>']
+##teamcity[testFinished name='Stringifying std::chrono::time_point<system_clock>' duration="{duration}"]
+##teamcity[testStarted name='Tabs and newlines show in output']
+##teamcity[testFailed name='Tabs and newlines show in output' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( s1 == s2 )|nwith expansion:|n "if ($b == 10) {|n $a = 20;|n}"|n==|n"if ($b == 10) {|n $a = 20;|n}|n"|n']
+##teamcity[testFinished name='Tabs and newlines show in output' duration="{duration}"]
+##teamcity[testStarted name='Tag alias can be registered against tag patterns']
+##teamcity[testFinished name='Tag alias can be registered against tag patterns' duration="{duration}"]
+##teamcity[testStarted name='Tags with spaces and non-alphanumerical characters are accepted']
+##teamcity[testFinished name='Tags with spaces and non-alphanumerical characters are accepted' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 0']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 1']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 2']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 2' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 2']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 2' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - float']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - float' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - int']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - int' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - std::string']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - std::string' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - std::tuple<int,float>']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - std::tuple<int,float>' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - float,4']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - float,4' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - int,5']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - int,5' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - std::string,15']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - std::string,15' duration="{duration}"]
+##teamcity[testStarted name='Test case with identical tags keeps just one']
+##teamcity[testFinished name='Test case with identical tags keeps just one' duration="{duration}"]
+##teamcity[testStarted name='Test case with one argument']
+##teamcity[testFinished name='Test case with one argument' duration="{duration}"]
+##teamcity[testStarted name='Test enum bit values']
+##teamcity[testFinished name='Test enum bit values' duration="{duration}"]
+##teamcity[testStarted name='Test with special, characters "in name']
+##teamcity[testFinished name='Test with special, characters "in name' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if']
+##teamcity[testFinished name='Testing checked-if' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 2']
+##teamcity[testIgnored name='Testing checked-if 2' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 2' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 3']
+##teamcity[testIgnored name='Testing checked-if 3' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 3' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 4']
+##teamcity[testIgnored name='Testing checked-if 4' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nunexpected exception with message:|n "Uncaught exception should fail!"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 4' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 5']
+##teamcity[testIgnored name='Testing checked-if 5' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nunexpected exception with message:|n "Uncaught exception should fail!"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 5' duration="{duration}"]
+##teamcity[testStarted name='The NO_FAIL macro reports a failure but does not fail the test']
+##teamcity[testFinished name='The NO_FAIL macro reports a failure but does not fail the test' duration="{duration}"]
+##teamcity[testStarted name='The default listing implementation write to provided stream']
+##teamcity[testFinished name='The default listing implementation write to provided stream' duration="{duration}"]
+##teamcity[testStarted name='This test |'should|' fail but doesn|'t']
+##teamcity[testFinished name='This test |'should|' fail but doesn|'t' duration="{duration}"]
+##teamcity[testStarted name='Thrown string literals are translated']
+##teamcity[testFailed name='Thrown string literals are translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "For some reason someone is throwing a string literal!"']
+##teamcity[testFinished name='Thrown string literals are translated' duration="{duration}"]
+##teamcity[testStarted name='Tracker']
+##teamcity[testFinished name='Tracker' duration="{duration}"]
+##teamcity[testStarted name='Trim strings']
+##teamcity[testFinished name='Trim strings' duration="{duration}"]
+##teamcity[testStarted name='Type conversions of RangeEquals and similar']
+##teamcity[testFinished name='Type conversions of RangeEquals and similar' duration="{duration}"]
+##teamcity[testStarted name='Unexpected exceptions can be translated']
+##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "3.14000000000000012"']
+##teamcity[testFinished name='Unexpected exceptions can be translated' duration="{duration}"]
+##teamcity[testStarted name='Upcasting special member functions']
+##teamcity[testFinished name='Upcasting special member functions' duration="{duration}"]
+##teamcity[testStarted name='Usage of AllMatch range matcher']
+##teamcity[testFinished name='Usage of AllMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AllTrue range matcher']
+##teamcity[testFinished name='Usage of AllTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AnyMatch range matcher']
+##teamcity[testFinished name='Usage of AnyMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AnyTrue range matcher']
+##teamcity[testFinished name='Usage of AnyTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of NoneMatch range matcher']
+##teamcity[testFinished name='Usage of NoneMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of NoneTrue range matcher']
+##teamcity[testFinished name='Usage of NoneTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of RangeEquals range matcher']
+##teamcity[testFinished name='Usage of RangeEquals range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of UnorderedRangeEquals range matcher']
+##teamcity[testFinished name='Usage of UnorderedRangeEquals range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of the SizeIs range matcher']
+##teamcity[testFinished name='Usage of the SizeIs range matcher' duration="{duration}"]
+##teamcity[testStarted name='Use a custom approx']
+##teamcity[testFinished name='Use a custom approx' duration="{duration}"]
+##teamcity[testStarted name='Variadic macros']
+##teamcity[testFinished name='Variadic macros' duration="{duration}"]
+##teamcity[testStarted name='Vector Approx matcher']
+##teamcity[testFinished name='Vector Approx matcher' duration="{duration}"]
+##teamcity[testStarted name='Vector Approx matcher -- failing']
+##teamcity[testFailed name='Vector Approx matcher -- failing' message='-------------------------------------------------------------------------------|nEmpty and non empty vectors are not approx equal|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Approx( t1 ) )|nwith expansion:|n { } is approx: { 1.0, 2.0 }|n']
+##teamcity[testFailed name='Vector Approx matcher -- failing' message='-------------------------------------------------------------------------------|nJust different vectors|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v1, Approx( v2 ) )|nwith expansion:|n { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }|n']
+##teamcity[testFinished name='Vector Approx matcher -- failing' duration="{duration}"]
+##teamcity[testStarted name='Vector matchers']
+##teamcity[testFinished name='Vector matchers' duration="{duration}"]
+##teamcity[testStarted name='Vector matchers that fail']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nContains (element)|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, VectorContains( -1 ) )|nwith expansion:|n { 1, 2, 3 } Contains: -1|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, VectorContains( 1 ) )|nwith expansion:|n { } Contains: 1|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nContains (vector)|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Contains( v ) )|nwith expansion:|n { } Contains: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Contains( v2 ) )|nwith expansion:|n { 1, 2, 3 } Contains: { 1, 2, 4 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nEquals|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Equals( v2 ) )|nwith expansion:|n { 1, 2, 3 } Equals: { 1, 2 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v2, Equals( v ) )|nwith expansion:|n { 1, 2 } Equals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Equals( v ) )|nwith expansion:|n { } Equals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Equals( empty ) )|nwith expansion:|n { 1, 2, 3 } Equals: { }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nUnorderedEquals|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, UnorderedEquals( empty ) )|nwith expansion:|n { 1, 2, 3 } UnorderedEquals: { }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, UnorderedEquals( v ) )|nwith expansion:|n { } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( permuted, UnorderedEquals( v ) )|nwith expansion:|n { 1, 3 } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( permuted, UnorderedEquals( v ) )|nwith expansion:|n { 3, 1 } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFinished name='Vector matchers that fail' duration="{duration}"]
+##teamcity[testStarted name='When checked exceptions are thrown they can be expected or unexpected']
+##teamcity[testFinished name='When checked exceptions are thrown they can be expected or unexpected' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown directly they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown directly they are always failures' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"']
+##teamcity[testFinished name='When unchecked exceptions are thrown directly they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown during a CHECK the test should continue']
+##teamcity[testFailed name='When unchecked exceptions are thrown during a CHECK the test should continue' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown during a CHECK the test should continue' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail']
+##teamcity[testFailed name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n REQUIRE( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown from functions they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown from functions they are always failures' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown from functions they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown from sections they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown from sections they are always failures' message='-------------------------------------------------------------------------------|nsection name|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"']
+##teamcity[testFinished name='When unchecked exceptions are thrown from sections they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown, but caught, they do not affect the test']
+##teamcity[testFinished name='When unchecked exceptions are thrown, but caught, they do not affect the test' duration="{duration}"]
+##teamcity[testStarted name='X/level/0/a']
+##teamcity[testFinished name='X/level/0/a' duration="{duration}"]
+##teamcity[testStarted name='X/level/0/b']
+##teamcity[testFinished name='X/level/0/b' duration="{duration}"]
+##teamcity[testStarted name='X/level/1/a']
+##teamcity[testFinished name='X/level/1/a' duration="{duration}"]
+##teamcity[testStarted name='X/level/1/b']
+##teamcity[testFinished name='X/level/1/b' duration="{duration}"]
+##teamcity[testStarted name='XmlEncode']
+##teamcity[testFinished name='XmlEncode' duration="{duration}"]
+##teamcity[testStarted name='XmlWriter writes boolean attributes as true/false']
+##teamcity[testFinished name='XmlWriter writes boolean attributes as true/false' duration="{duration}"]
+##teamcity[testStarted name='a succeeding test can still be skipped']
+##teamcity[testIgnored name='a succeeding test can still be skipped' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='a succeeding test can still be skipped' duration="{duration}"]
+##teamcity[testStarted name='analyse no analysis']
+##teamcity[testFinished name='analyse no analysis' duration="{duration}"]
+##teamcity[testStarted name='array<int, N> -> toString']
+##teamcity[testFinished name='array<int, N> -> toString' duration="{duration}"]
+##teamcity[testStarted name='benchmark function call']
+##teamcity[testFinished name='benchmark function call' duration="{duration}"]
+##teamcity[testStarted name='boolean member']
+##teamcity[testFinished name='boolean member' duration="{duration}"]
+##teamcity[testStarted name='checkedElse']
+##teamcity[testFinished name='checkedElse' duration="{duration}"]
+##teamcity[testStarted name='checkedElse, failing']
+##teamcity[testFailed name='checkedElse, failing' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( testCheckedElse( false ) )|nwith expansion:|n false|n']
+##teamcity[testFinished name='checkedElse, failing' duration="{duration}"]
+##teamcity[testStarted name='checkedIf']
+##teamcity[testFinished name='checkedIf' duration="{duration}"]
+##teamcity[testStarted name='checkedIf, failing']
+##teamcity[testFailed name='checkedIf, failing' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( testCheckedIf( false ) )|nwith expansion:|n false|n']
+##teamcity[testFinished name='checkedIf, failing' duration="{duration}"]
+##teamcity[testStarted name='classify_outliers']
+##teamcity[testFinished name='classify_outliers' duration="{duration}"]
+##teamcity[testStarted name='comparisons between const int variables']
+##teamcity[testFinished name='comparisons between const int variables' duration="{duration}"]
+##teamcity[testStarted name='comparisons between int variables']
+##teamcity[testFinished name='comparisons between int variables' duration="{duration}"]
+##teamcity[testStarted name='convertToBits']
+##teamcity[testFinished name='convertToBits' duration="{duration}"]
+##teamcity[testStarted name='dynamic skipping works with generators']
+##teamcity[testIgnored name='dynamic skipping works with generators' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 41"']
+##teamcity[testIgnored name='dynamic skipping works with generators' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 43"']
+##teamcity[testFinished name='dynamic skipping works with generators' duration="{duration}"]
+##teamcity[testStarted name='empty tags are not allowed']
+##teamcity[testFinished name='empty tags are not allowed' duration="{duration}"]
+##teamcity[testStarted name='erfc_inv']
+##teamcity[testFinished name='erfc_inv' duration="{duration}"]
+##teamcity[testStarted name='estimate_clock_resolution']
+##teamcity[testFinished name='estimate_clock_resolution' duration="{duration}"]
+##teamcity[testStarted name='even more nested SECTION tests']
+##teamcity[testFinished name='even more nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='failed assertions before SKIP cause test case to fail']
+##teamcity[testIgnored name='failed assertions before SKIP cause test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexpression failed|n CHECK( 3 == 4 )|nwith expansion:|n 3 == 4|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failed assertions before SKIP cause test case to fail' message='Skip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='failed assertions before SKIP cause test case to fail' duration="{duration}"]
+##teamcity[testStarted name='failing for some generator values causes entire test case to fail']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='failing for some generator values causes entire test case to fail' duration="{duration}"]
+##teamcity[testStarted name='failing in some unskipped sections causes entire test case to fail']
+##teamcity[testIgnored name='failing in some unskipped sections causes entire test case to fail' message='-------------------------------------------------------------------------------|nskipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testIgnored name='failing in some unskipped sections causes entire test case to fail' message='-------------------------------------------------------------------------------|nnot skipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='failing in some unskipped sections causes entire test case to fail' duration="{duration}"]
+##teamcity[testStarted name='first tag']
+##teamcity[testFinished name='first tag' duration="{duration}"]
+##teamcity[testStarted name='has printf']
+loose text artifact
+##teamcity[testFinished name='has printf' duration="{duration}"]
+##teamcity[testStarted name='is_unary_function']
+##teamcity[testFinished name='is_unary_function' duration="{duration}"]
+##teamcity[testStarted name='just failure']
+##teamcity[testFailed name='just failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Previous info should not be seen"']
+##teamcity[testFinished name='just failure' duration="{duration}"]
+##teamcity[testStarted name='just failure after unscoped info']
+##teamcity[testFailed name='just failure after unscoped info' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "previous unscoped info SHOULD not be seen"']
+##teamcity[testFinished name='just failure after unscoped info' duration="{duration}"]
+##teamcity[testStarted name='just info']
+##teamcity[testFinished name='just info' duration="{duration}"]
+##teamcity[testStarted name='just unscoped info']
+##teamcity[testFinished name='just unscoped info' duration="{duration}"]
+##teamcity[testStarted name='long long']
+##teamcity[testFinished name='long long' duration="{duration}"]
+##teamcity[testStarted name='looped SECTION tests']
+##teamcity[testFailed name='looped SECTION tests' message='-------------------------------------------------------------------------------|nb is currently: 0|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( b > a )|nwith expansion:|n 0 > 1|n']
+##teamcity[testFailed name='looped SECTION tests' message='-------------------------------------------------------------------------------|nb is currently: 1|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( b > a )|nwith expansion:|n 1 > 1|n']
+##teamcity[testFinished name='looped SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='looped tests']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[0|] (1) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[1|] (1) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[3|] (3) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[4|] (5) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[6|] (13) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[7|] (21) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='looped tests' duration="{duration}"]
+##teamcity[testStarted name='makeStream recognizes %debug stream name']
+##teamcity[testFinished name='makeStream recognizes %debug stream name' duration="{duration}"]
+##teamcity[testStarted name='make_unique reimplementation']
+##teamcity[testFinished name='make_unique reimplementation' duration="{duration}"]
+##teamcity[testStarted name='mean']
+##teamcity[testFinished name='mean' duration="{duration}"]
+##teamcity[testStarted name='measure']
+##teamcity[testFinished name='measure' duration="{duration}"]
+##teamcity[testStarted name='mix info, unscoped info and warning']
+##teamcity[testFinished name='mix info, unscoped info and warning' duration="{duration}"]
+##teamcity[testStarted name='more nested SECTION tests']
+##teamcity[testFailed name='more nested SECTION tests' message='-------------------------------------------------------------------------------|ndoesn|'t equal|nequal|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( a == b )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='more nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='nested SECTION tests']
+##teamcity[testFinished name='nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='nested sections can be skipped dynamically at runtime']
+##teamcity[testIgnored name='nested sections can be skipped dynamically at runtime' message='-------------------------------------------------------------------------------|nB|nB2|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testStdOut name='nested sections can be skipped dynamically at runtime' out='a!|nb1!|n!|n']
+##teamcity[testFinished name='nested sections can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='non streamable - with conv. op']
+##teamcity[testFinished name='non streamable - with conv. op' duration="{duration}"]
+##teamcity[testStarted name='non-copyable objects']
+##teamcity[testFinished name='non-copyable objects' duration="{duration}"]
+##teamcity[testStarted name='normal_quantile']
+##teamcity[testFinished name='normal_quantile' duration="{duration}"]
+##teamcity[testStarted name='not allowed']
+##teamcity[testFinished name='not allowed' duration="{duration}"]
+##teamcity[testStarted name='not prints unscoped info from previous failures']
+##teamcity[testFailed name='not prints unscoped info from previous failures' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with message:|n "this SHOULD be seen"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='not prints unscoped info from previous failures' duration="{duration}"]
+##teamcity[testStarted name='null strings']
+##teamcity[testFinished name='null strings' duration="{duration}"]
+##teamcity[testStarted name='null_ptr']
+##teamcity[testFinished name='null_ptr' duration="{duration}"]
+##teamcity[testStarted name='pair<pair<int,const char *,pair<std::string,int> > -> toString']
+##teamcity[testFinished name='pair<pair<int,const char *,pair<std::string,int> > -> toString' duration="{duration}"]
+##teamcity[testStarted name='parseEnums']
+##teamcity[testFinished name='parseEnums' duration="{duration}"]
+##teamcity[testStarted name='pointer to class']
+##teamcity[testFinished name='pointer to class' duration="{duration}"]
+##teamcity[testStarted name='print unscoped info if passing unscoped info is printed']
+##teamcity[testFinished name='print unscoped info if passing unscoped info is printed' duration="{duration}"]
+##teamcity[testStarted name='prints unscoped info on failure']
+##teamcity[testFailed name='prints unscoped info on failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this SHOULD be seen"|n "this SHOULD also be seen"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='prints unscoped info on failure' duration="{duration}"]
+##teamcity[testStarted name='prints unscoped info only for the first assertion']
+##teamcity[testFailed name='prints unscoped info only for the first assertion' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with message:|n "this SHOULD be seen only ONCE"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='prints unscoped info only for the first assertion' duration="{duration}"]
+##teamcity[testStarted name='random SECTION tests']
+##teamcity[testFinished name='random SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='replaceInPlace']
+##teamcity[testFinished name='replaceInPlace' duration="{duration}"]
+##teamcity[testStarted name='request an unknown %-starting stream fails']
+##teamcity[testFinished name='request an unknown %-starting stream fails' duration="{duration}"]
+##teamcity[testStarted name='resolution']
+##teamcity[testFinished name='resolution' duration="{duration}"]
+##teamcity[testStarted name='run_for_at_least, chronometer']
+##teamcity[testFinished name='run_for_at_least, chronometer' duration="{duration}"]
+##teamcity[testStarted name='run_for_at_least, int']
+##teamcity[testFinished name='run_for_at_least, int' duration="{duration}"]
+##teamcity[testStarted name='second tag']
+##teamcity[testFinished name='second tag' duration="{duration}"]
+##teamcity[testStarted name='sections can be skipped dynamically at runtime']
+##teamcity[testIgnored name='sections can be skipped dynamically at runtime' message='-------------------------------------------------------------------------------|nskipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='sections can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='send a single char to INFO']
+##teamcity[testFailed name='send a single char to INFO' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed with message:|n "3"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='send a single char to INFO' duration="{duration}"]
+##teamcity[testStarted name='sends information to INFO']
+##teamcity[testFailed name='sends information to INFO' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "hi"|n "i := 7"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='sends information to INFO' duration="{duration}"]
+##teamcity[testStarted name='shortened hide tags are split apart']
+##teamcity[testFinished name='shortened hide tags are split apart' duration="{duration}"]
+##teamcity[testStarted name='skipped tests can optionally provide a reason']
+##teamcity[testIgnored name='skipped tests can optionally provide a reason' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 43"']
+##teamcity[testFinished name='skipped tests can optionally provide a reason' duration="{duration}"]
+##teamcity[testStarted name='splitString']
+##teamcity[testFinished name='splitString' duration="{duration}"]
+##teamcity[testStarted name='stacks unscoped info in loops']
+##teamcity[testFailed name='stacks unscoped info in loops' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "Count 1 to 3..."|n "1"|n "2"|n "3"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFailed name='stacks unscoped info in loops' message='Message.tests.cpp:<line number>|nexpression failed with messages:|n "Count 4 to 6..."|n "4"|n "5"|n "6"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='stacks unscoped info in loops' duration="{duration}"]
+##teamcity[testStarted name='startsWith']
+##teamcity[testFinished name='startsWith' duration="{duration}"]
+##teamcity[testStarted name='std::map is convertible string']
+##teamcity[testFinished name='std::map is convertible string' duration="{duration}"]
+##teamcity[testStarted name='std::pair<int,const std::string> -> toString']
+##teamcity[testFinished name='std::pair<int,const std::string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='std::pair<int,std::string> -> toString']
+##teamcity[testFinished name='std::pair<int,std::string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='std::set is convertible string']
+##teamcity[testFinished name='std::set is convertible string' duration="{duration}"]
+##teamcity[testStarted name='std::vector<std::pair<std::string,int> > -> toString']
+##teamcity[testFinished name='std::vector<std::pair<std::string,int> > -> toString' duration="{duration}"]
+##teamcity[testStarted name='stdout and stderr streams have %-starting name']
+##teamcity[testFinished name='stdout and stderr streams have %-starting name' duration="{duration}"]
+##teamcity[testStarted name='stringify ranges']
+##teamcity[testFinished name='stringify ranges' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_maker )']
+##teamcity[testFinished name='stringify( has_maker )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_maker_and_operator )']
+##teamcity[testFinished name='stringify( has_maker_and_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_neither )']
+##teamcity[testFinished name='stringify( has_neither )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_operator )']
+##teamcity[testFinished name='stringify( has_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_template_operator )']
+##teamcity[testFinished name='stringify( has_template_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_maker> )']
+##teamcity[testFinished name='stringify( vectors<has_maker> )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_maker_and_operator> )']
+##teamcity[testFinished name='stringify( vectors<has_maker_and_operator> )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_operator> )']
+##teamcity[testFinished name='stringify( vectors<has_operator> )' duration="{duration}"]
+##teamcity[testStarted name='strlen3']
+##teamcity[testFinished name='strlen3' duration="{duration}"]
+##teamcity[testStarted name='tables']
+##teamcity[testFinished name='tables' duration="{duration}"]
+##teamcity[testStarted name='tags with dots in later positions are not parsed as hidden']
+##teamcity[testFinished name='tags with dots in later positions are not parsed as hidden' duration="{duration}"]
+##teamcity[testStarted name='tests can be skipped dynamically at runtime']
+##teamcity[testIgnored name='tests can be skipped dynamically at runtime' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='tests can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='thrown std::strings are translated']
+##teamcity[testFailed name='thrown std::strings are translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "Why would you throw a std::string?"']
+##teamcity[testFinished name='thrown std::strings are translated' duration="{duration}"]
+##teamcity[testStarted name='toString on const wchar_t const pointer returns the string contents']
+##teamcity[testFinished name='toString on const wchar_t const pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on const wchar_t pointer returns the string contents']
+##teamcity[testFinished name='toString on const wchar_t pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on wchar_t const pointer returns the string contents']
+##teamcity[testFinished name='toString on wchar_t const pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on wchar_t returns the string contents']
+##teamcity[testFinished name='toString on wchar_t returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString(enum class w/operator<<)']
+##teamcity[testFinished name='toString(enum class w/operator<<)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum class)']
+##teamcity[testFinished name='toString(enum class)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum w/operator<<)']
+##teamcity[testFinished name='toString(enum w/operator<<)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum)']
+##teamcity[testFinished name='toString(enum)' duration="{duration}"]
+##teamcity[testStarted name='tuple<>']
+##teamcity[testFinished name='tuple<>' duration="{duration}"]
+##teamcity[testStarted name='tuple<float,int>']
+##teamcity[testFinished name='tuple<float,int>' duration="{duration}"]
+##teamcity[testStarted name='tuple<int>']
+##teamcity[testFinished name='tuple<int>' duration="{duration}"]
+##teamcity[testStarted name='tuple<string,string>']
+##teamcity[testFinished name='tuple<string,string>' duration="{duration}"]
+##teamcity[testStarted name='tuple<tuple<int>,tuple<>,float>']
+##teamcity[testFinished name='tuple<tuple<int>,tuple<>,float>' duration="{duration}"]
+##teamcity[testStarted name='uniform samples']
+##teamcity[testFinished name='uniform samples' duration="{duration}"]
+##teamcity[testStarted name='uniform_integer_distribution can return the bounds']
+##teamcity[testFinished name='uniform_integer_distribution can return the bounds' duration="{duration}"]
+##teamcity[testStarted name='unique_ptr reimplementation: basic functionality']
+##teamcity[testFinished name='unique_ptr reimplementation: basic functionality' duration="{duration}"]
+##teamcity[testStarted name='vec<vec<string,alloc>> -> toString']
+##teamcity[testFinished name='vec<vec<string,alloc>> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<bool> -> toString']
+##teamcity[testFinished name='vector<bool> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<int,allocator> -> toString']
+##teamcity[testFinished name='vector<int,allocator> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<int> -> toString']
+##teamcity[testFinished name='vector<int> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<string> -> toString']
+##teamcity[testFinished name='vector<string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vectors can be sized and resized']
+##teamcity[testFinished name='vectors can be sized and resized' duration="{duration}"]
+##teamcity[testStarted name='warmup']
+##teamcity[testFinished name='warmup' duration="{duration}"]
+##teamcity[testStarted name='weighted_average_quantile']
+##teamcity[testFinished name='weighted_average_quantile' duration="{duration}"]
+##teamcity[testStarted name='xmlentitycheck']
+##teamcity[testFinished name='xmlentitycheck' duration="{duration}"]
+##teamcity[testSuiteFinished name='<exe-name>']
diff --git a/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt b/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt
new file mode 100644
index 0000000..dde8a68
--- /dev/null
+++ b/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt
@@ -0,0 +1,1023 @@
+##teamcity[testSuiteStarted name='<exe-name>']
+##teamcity[testStarted name='# A test name that starts with a #']
+##teamcity[testFinished name='# A test name that starts with a #' duration="{duration}"]
+##teamcity[testStarted name='#1027: Bitfields can be captured']
+##teamcity[testFinished name='#1027: Bitfields can be captured' duration="{duration}"]
+##teamcity[testStarted name='#1147']
+##teamcity[testFinished name='#1147' duration="{duration}"]
+##teamcity[testStarted name='#1175 - Hidden Test']
+##teamcity[testFinished name='#1175 - Hidden Test' duration="{duration}"]
+##teamcity[testStarted name='#1238']
+##teamcity[testFinished name='#1238' duration="{duration}"]
+##teamcity[testStarted name='#1245']
+##teamcity[testFinished name='#1245' duration="{duration}"]
+##teamcity[testStarted name='#1319: Sections can have description (even if it is not saved']
+##teamcity[testFinished name='#1319: Sections can have description (even if it is not saved' duration="{duration}"]
+##teamcity[testStarted name='#1403']
+##teamcity[testFinished name='#1403' duration="{duration}"]
+##teamcity[testStarted name='#1455 - INFO and WARN can start with a linebreak']
+##teamcity[testFinished name='#1455 - INFO and WARN can start with a linebreak' duration="{duration}"]
+##teamcity[testStarted name='#1514: stderr/stdout is not captured in tests aborted by an exception']
+##teamcity[testFailed name='#1514: stderr/stdout is not captured in tests aborted by an exception' message='Tricky.tests.cpp:<line number>|n...............................................................................|n|nTricky.tests.cpp:<line number>|nexplicit failure with message:|n "1514"']
+##teamcity[testStdOut name='#1514: stderr/stdout is not captured in tests aborted by an exception' out='This would not be caught previously|n']
+##teamcity[testStdErr name='#1514: stderr/stdout is not captured in tests aborted by an exception' out='Nor would this|n']
+##teamcity[testFinished name='#1514: stderr/stdout is not captured in tests aborted by an exception' duration="{duration}"]
+##teamcity[testStarted name='#1548']
+##teamcity[testFinished name='#1548' duration="{duration}"]
+##teamcity[testStarted name='#1905 -- test spec parser properly clears internal state between compound tests']
+##teamcity[testFinished name='#1905 -- test spec parser properly clears internal state between compound tests' duration="{duration}"]
+##teamcity[testStarted name='#1912 -- test spec parser handles escaping']
+##teamcity[testFinished name='#1912 -- test spec parser handles escaping' duration="{duration}"]
+##teamcity[testStarted name='#1913 - GENERATE inside a for loop should not keep recreating the generator']
+##teamcity[testFinished name='#1913 - GENERATE inside a for loop should not keep recreating the generator' duration="{duration}"]
+##teamcity[testStarted name='#1913 - GENERATEs can share a line']
+##teamcity[testFinished name='#1913 - GENERATEs can share a line' duration="{duration}"]
+##teamcity[testStarted name='#1938 - GENERATE after a section']
+##teamcity[testFinished name='#1938 - GENERATE after a section' duration="{duration}"]
+##teamcity[testStarted name='#1938 - Section followed by flat generate']
+##teamcity[testFinished name='#1938 - Section followed by flat generate' duration="{duration}"]
+##teamcity[testStarted name='#1938 - flat generate']
+##teamcity[testFinished name='#1938 - flat generate' duration="{duration}"]
+##teamcity[testStarted name='#1938 - mixed sections and generates']
+##teamcity[testFinished name='#1938 - mixed sections and generates' duration="{duration}"]
+##teamcity[testStarted name='#1938 - nested generate']
+##teamcity[testFinished name='#1938 - nested generate' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0']
+##teamcity[testFinished name='#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0' duration="{duration}"]
+##teamcity[testStarted name='#2152 - ULP checks between differently signed values were wrong - double']
+##teamcity[testFinished name='#2152 - ULP checks between differently signed values were wrong - double' duration="{duration}"]
+##teamcity[testStarted name='#2152 - ULP checks between differently signed values were wrong - float']
+##teamcity[testFinished name='#2152 - ULP checks between differently signed values were wrong - float' duration="{duration}"]
+##teamcity[testStarted name='#2615 - Throwing in constructor generator fails test case but does not abort']
+##teamcity[testIgnored name='#2615 - Throwing in constructor generator fails test case but does not abort' message='Generators.tests.cpp:<line number>|n...............................................................................|n|nGenerators.tests.cpp:<line number>|nunexpected exception with message:|n "failure to init"- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#2615 - Throwing in constructor generator fails test case but does not abort' duration="{duration}"]
+##teamcity[testStarted name='#748 - captures with unexpected exceptions']
+##teamcity[testIgnored name='#748 - captures with unexpected exceptions' message='-------------------------------------------------------------------------------|noutside assertions|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with messages:|n "answer := 42"|n "expected exception"- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='#748 - captures with unexpected exceptions' message='-------------------------------------------------------------------------------|ninside REQUIRE_NOTHROW|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with messages:|n "answer := 42"|n "expected exception"|n REQUIRE_NOTHROW( thisThrows() )|nwith expansion:|n thisThrows()|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#748 - captures with unexpected exceptions' duration="{duration}"]
+##teamcity[testStarted name='#809']
+##teamcity[testFinished name='#809' duration="{duration}"]
+##teamcity[testStarted name='#833']
+##teamcity[testFinished name='#833' duration="{duration}"]
+##teamcity[testStarted name='#835 -- errno should not be touched by Catch2']
+##teamcity[testIgnored name='#835 -- errno should not be touched by Catch2' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( f() == 0 )|nwith expansion:|n 1 == 0|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='#835 -- errno should not be touched by Catch2' duration="{duration}"]
+##teamcity[testStarted name='#872']
+##teamcity[testFinished name='#872' duration="{duration}"]
+##teamcity[testStarted name='#961 -- Dynamically created sections should all be reported']
+##teamcity[testFinished name='#961 -- Dynamically created sections should all be reported' duration="{duration}"]
+##teamcity[testStarted name='|'Not|' checks that should fail']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( false != false )|nwith expansion:|n false != false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( true != true )|nwith expansion:|n true != true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !true )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( true )|nwith expansion:|n !true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !trueValue )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( trueValue )|nwith expansion:|n !true|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( !(1 == 1) )|nwith expansion:|n false|n']
+##teamcity[testFailed name='|'Not|' checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK_FALSE( 1 == 1 )|nwith expansion:|n !(1 == 1)|n']
+##teamcity[testFinished name='|'Not|' checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='|'Not|' checks that should succeed']
+##teamcity[testFinished name='|'Not|' checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='(unimplemented) static bools can be evaluated']
+##teamcity[testFinished name='(unimplemented) static bools can be evaluated' duration="{duration}"]
+##teamcity[testStarted name='3x3x3 ints']
+##teamcity[testFinished name='3x3x3 ints' duration="{duration}"]
+##teamcity[testStarted name='A METHOD_AS_TEST_CASE based test run that fails']
+##teamcity[testFailed name='A METHOD_AS_TEST_CASE based test run that fails' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( s == "world" )|nwith expansion:|n "hello" == "world"|n']
+##teamcity[testFinished name='A METHOD_AS_TEST_CASE based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A METHOD_AS_TEST_CASE based test run that succeeds']
+##teamcity[testFinished name='A METHOD_AS_TEST_CASE based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )|nwith expansion:|n 0 == 1|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 6 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<float, 6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 2 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2<int, 2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 6 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<float, 6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>']
+##teamcity[testFailed name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )|nwith expansion:|n 2 < 2|n']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array<int, 2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<float,6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2<int,2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<float,6>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>']
+##teamcity[testFinished name='A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array<int,2>' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1.0 == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - double' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1.0f == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - float' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Template_Fixture<TestType>::m_a == 2 )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that fails - int' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 3 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6']
+##teamcity[testFailed name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( Nttp_Fixture<V>::value == 0 )|nwith expansion:|n 6 == 0|n']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3' duration="{duration}"]
+##teamcity[testStarted name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6']
+##teamcity[testFinished name='A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_METHOD based test run that fails']
+##teamcity[testFailed name='A TEST_CASE_METHOD based test run that fails' message='Class.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( m_a == 2 )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='A TEST_CASE_METHOD based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_METHOD based test run that succeeds']
+##teamcity[testFinished name='A TEST_CASE_METHOD based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails']
+##teamcity[testFailed name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails' message='-------------------------------------------------------------------------------|nSecond partial run|n-------------------------------------------------------------------------------|nClass.tests.cpp:<line number>|n...............................................................................|n|nClass.tests.cpp:<line number>|nexpression failed|n REQUIRE( m_a == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='A TEST_CASE_PERSISTENT_FIXTURE based test run that fails' duration="{duration}"]
+##teamcity[testStarted name='A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds']
+##teamcity[testFinished name='A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - Foo<float>']
+##teamcity[testFinished name='A Template product test case - Foo<float>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - Foo<int>']
+##teamcity[testFinished name='A Template product test case - Foo<int>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - std::vector<float>']
+##teamcity[testFinished name='A Template product test case - std::vector<float>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case - std::vector<int>']
+##teamcity[testFinished name='A Template product test case - std::vector<int>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - Bar<float, 42>']
+##teamcity[testFinished name='A Template product test case with array signature - Bar<float, 42>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - Bar<int, 9>']
+##teamcity[testFinished name='A Template product test case with array signature - Bar<int, 9>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - std::array<float, 42>']
+##teamcity[testFinished name='A Template product test case with array signature - std::array<float, 42>' duration="{duration}"]
+##teamcity[testStarted name='A Template product test case with array signature - std::array<int, 9>']
+##teamcity[testFinished name='A Template product test case with array signature - std::array<int, 9>' duration="{duration}"]
+##teamcity[testStarted name='A comparison that uses literals instead of the normal constructor']
+##teamcity[testFinished name='A comparison that uses literals instead of the normal constructor' duration="{duration}"]
+##teamcity[testStarted name='A couple of nested sections followed by a failure']
+##teamcity[testFailed name='A couple of nested sections followed by a failure' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure with message:|n "to infinity and beyond"']
+##teamcity[testFinished name='A couple of nested sections followed by a failure' duration="{duration}"]
+##teamcity[testStarted name='A failing expression with a non streamable type is still captured']
+##teamcity[testFailed name='A failing expression with a non streamable type is still captured' message='Tricky.tests.cpp:<line number>|n...............................................................................|n|nTricky.tests.cpp:<line number>|nexpression failed|n CHECK( &o1 == &o2 )|nwith expansion:|n 0x<hex digits> == 0x<hex digits>|n']
+##teamcity[testFailed name='A failing expression with a non streamable type is still captured' message='Tricky.tests.cpp:<line number>|nexpression failed|n CHECK( o1 == o2 )|nwith expansion:|n {?} == {?}|n']
+##teamcity[testFinished name='A failing expression with a non streamable type is still captured' duration="{duration}"]
+##teamcity[testStarted name='Absolute margin']
+##teamcity[testFinished name='Absolute margin' duration="{duration}"]
+##teamcity[testStarted name='An empty test with no assertions']
+##teamcity[testFinished name='An empty test with no assertions' duration="{duration}"]
+##teamcity[testStarted name='An expression with side-effects should only be evaluated once']
+##teamcity[testFinished name='An expression with side-effects should only be evaluated once' duration="{duration}"]
+##teamcity[testStarted name='An unchecked exception reports the line of the last assertion']
+##teamcity[testFailed name='An unchecked exception reports the line of the last assertion' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n']
+##teamcity[testFinished name='An unchecked exception reports the line of the last assertion' duration="{duration}"]
+##teamcity[testStarted name='Anonymous test case 1']
+##teamcity[testFinished name='Anonymous test case 1' duration="{duration}"]
+##teamcity[testStarted name='Approx setters validate their arguments']
+##teamcity[testFinished name='Approx setters validate their arguments' duration="{duration}"]
+##teamcity[testStarted name='Approx with exactly-representable margin']
+##teamcity[testFinished name='Approx with exactly-representable margin' duration="{duration}"]
+##teamcity[testStarted name='Approximate PI']
+##teamcity[testFinished name='Approximate PI' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with different epsilons']
+##teamcity[testFinished name='Approximate comparisons with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with floats']
+##teamcity[testFinished name='Approximate comparisons with floats' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with ints']
+##teamcity[testFinished name='Approximate comparisons with ints' duration="{duration}"]
+##teamcity[testStarted name='Approximate comparisons with mixed numeric types']
+##teamcity[testFinished name='Approximate comparisons with mixed numeric types' duration="{duration}"]
+##teamcity[testStarted name='Arbitrary predicate matcher']
+##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
+##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
+##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
+##teamcity[testStarted name='Assertions then sections']
+##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
+##teamcity[testStarted name='Basic use of the Contains range matcher']
+##teamcity[testFinished name='Basic use of the Contains range matcher' duration="{duration}"]
+##teamcity[testStarted name='Basic use of the Empty range matcher']
+##teamcity[testFinished name='Basic use of the Empty range matcher' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE can deal with complex expressions']
+##teamcity[testFinished name='CAPTURE can deal with complex expressions' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE can deal with complex expressions involving commas']
+##teamcity[testFinished name='CAPTURE can deal with complex expressions involving commas' duration="{duration}"]
+##teamcity[testStarted name='CAPTURE parses string and character constants']
+##teamcity[testFinished name='CAPTURE parses string and character constants' duration="{duration}"]
+##teamcity[testStarted name='Capture and info messages']
+##teamcity[testFinished name='Capture and info messages' duration="{duration}"]
+##teamcity[testStarted name='CaseInsensitiveEqualsTo is case insensitive']
+##teamcity[testFinished name='CaseInsensitiveEqualsTo is case insensitive' duration="{duration}"]
+##teamcity[testStarted name='CaseInsensitiveLess is case insensitive']
+##teamcity[testFinished name='CaseInsensitiveLess is case insensitive' duration="{duration}"]
+##teamcity[testStarted name='Character pretty printing']
+##teamcity[testFinished name='Character pretty printing' duration="{duration}"]
+##teamcity[testStarted name='Clara::Arg does not crash on incomplete input']
+##teamcity[testFinished name='Clara::Arg does not crash on incomplete input' duration="{duration}"]
+##teamcity[testStarted name='Clara::Arg supports single-arg parse the way Opt does']
+##teamcity[testFinished name='Clara::Arg supports single-arg parse the way Opt does' duration="{duration}"]
+##teamcity[testStarted name='Clara::Opt supports accept-many lambdas']
+##teamcity[testFinished name='Clara::Opt supports accept-many lambdas' duration="{duration}"]
+##teamcity[testStarted name='ColourGuard behaviour']
+##teamcity[testFinished name='ColourGuard behaviour' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchAllOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchAllOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchAnyOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchAnyOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining MatchNotOfGeneric does not nest']
+##teamcity[testFinished name='Combining MatchNotOfGeneric does not nest' duration="{duration}"]
+##teamcity[testStarted name='Combining concrete matchers does not use templated matchers']
+##teamcity[testFinished name='Combining concrete matchers does not use templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining only templated matchers']
+##teamcity[testFinished name='Combining only templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining templated and concrete matchers']
+##teamcity[testFinished name='Combining templated and concrete matchers' duration="{duration}"]
+##teamcity[testStarted name='Combining templated matchers']
+##teamcity[testFinished name='Combining templated matchers' duration="{duration}"]
+##teamcity[testStarted name='Commas in various macros are allowed']
+##teamcity[testFinished name='Commas in various macros are allowed' duration="{duration}"]
+##teamcity[testStarted name='Comparing function pointers']
+##teamcity[testFinished name='Comparing function pointers' duration="{duration}"]
+##teamcity[testStarted name='Comparison ops']
+##teamcity[testFinished name='Comparison ops' duration="{duration}"]
+##teamcity[testStarted name='Comparison with explicitly convertible types']
+##teamcity[testFinished name='Comparison with explicitly convertible types' duration="{duration}"]
+##teamcity[testStarted name='Comparisons between ints where one side is computed']
+##teamcity[testFinished name='Comparisons between ints where one side is computed' duration="{duration}"]
+##teamcity[testStarted name='Comparisons between unsigned ints and negative signed ints match c++ standard behaviour']
+##teamcity[testFinished name='Comparisons between unsigned ints and negative signed ints match c++ standard behaviour' duration="{duration}"]
+##teamcity[testStarted name='Comparisons with int literals don|'t warn when mixing signed/ unsigned']
+##teamcity[testFinished name='Comparisons with int literals don|'t warn when mixing signed/ unsigned' duration="{duration}"]
+##teamcity[testStarted name='Composed generic matchers shortcircuit']
+##teamcity[testFinished name='Composed generic matchers shortcircuit' duration="{duration}"]
+##teamcity[testStarted name='Composed matchers shortcircuit']
+##teamcity[testFinished name='Composed matchers shortcircuit' duration="{duration}"]
+##teamcity[testStarted name='Contains string matcher']
+##teamcity[testFailed name='Contains string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" contains: "not there" (case insensitive)|n']
+##teamcity[testFailed name='Contains string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" contains: "STRING"|n']
+##teamcity[testFinished name='Contains string matcher' duration="{duration}"]
+##teamcity[testStarted name='Copy and then generate a range']
+##teamcity[testFinished name='Copy and then generate a range' duration="{duration}"]
+##teamcity[testStarted name='Cout stream properly declares it writes to stdout']
+##teamcity[testFinished name='Cout stream properly declares it writes to stdout' duration="{duration}"]
+##teamcity[testStarted name='Custom exceptions can be translated when testing for nothrow']
+##teamcity[testFailed name='Custom exceptions can be translated when testing for nothrow' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception - not std"|n REQUIRE_NOTHROW( throwCustom() )|nwith expansion:|n throwCustom()|n']
+##teamcity[testFinished name='Custom exceptions can be translated when testing for nothrow' duration="{duration}"]
+##teamcity[testStarted name='Custom exceptions can be translated when testing for throwing as something else']
+##teamcity[testFailed name='Custom exceptions can be translated when testing for throwing as something else' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception - not std"|n REQUIRE_THROWS_AS( throwCustom(), std::exception )|nwith expansion:|n throwCustom(), std::exception|n']
+##teamcity[testFinished name='Custom exceptions can be translated when testing for throwing as something else' duration="{duration}"]
+##teamcity[testStarted name='Custom std-exceptions can be custom translated']
+##teamcity[testFailed name='Custom std-exceptions can be custom translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom std exception"']
+##teamcity[testFinished name='Custom std-exceptions can be custom translated' duration="{duration}"]
+##teamcity[testStarted name='Default scale is invisible to comparison']
+##teamcity[testFinished name='Default scale is invisible to comparison' duration="{duration}"]
+##teamcity[testStarted name='Directly creating an EnumInfo']
+##teamcity[testFinished name='Directly creating an EnumInfo' duration="{duration}"]
+##teamcity[testStarted name='Empty generators can SKIP in constructor']
+##teamcity[testIgnored name='Empty generators can SKIP in constructor' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "This generator is empty"']
+##teamcity[testFinished name='Empty generators can SKIP in constructor' duration="{duration}"]
+##teamcity[testStarted name='Empty stream name opens cout stream']
+##teamcity[testFinished name='Empty stream name opens cout stream' duration="{duration}"]
+##teamcity[testStarted name='EndsWith string matcher']
+##teamcity[testFailed name='EndsWith string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ends with: "Substring"|n']
+##teamcity[testFailed name='EndsWith string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ends with: "this" (case insensitive)|n']
+##teamcity[testFinished name='EndsWith string matcher' duration="{duration}"]
+##teamcity[testStarted name='Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM']
+##teamcity[testFinished name='Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM' duration="{duration}"]
+##teamcity[testStarted name='Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM']
+##teamcity[testFinished name='Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM' duration="{duration}"]
+##teamcity[testStarted name='Epsilon only applies to Approx|'s value']
+##teamcity[testFinished name='Epsilon only applies to Approx|'s value' duration="{duration}"]
+##teamcity[testStarted name='Equality checks that should fail']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 6 )|nwith expansion:|n 7 == 6|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 8 )|nwith expansion:|n 7 == 8|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven == 0 )|nwith expansion:|n 7 == 0|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.100000381f|n==|nApprox( 9.10999965667724609 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.100000381f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.100000381f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.100000381f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.14159265350000005|n==|nApprox( 3.14150000000000018 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "goodbye" )|nwith expansion:|n "hello" == "goodbye"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "hell" )|nwith expansion:|n "hello" == "hell"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello == "hello1" )|nwith expansion:|n "hello" == "hello1"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello.size() == 6 )|nwith expansion:|n 5 == 6|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.30000000000000027|n==|nApprox( 1.30099999999999993 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Equality checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Equality checks that should succeed']
+##teamcity[testFinished name='Equality checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='Equals']
+##teamcity[testFinished name='Equals' duration="{duration}"]
+##teamcity[testStarted name='Equals string matcher']
+##teamcity[testFailed name='Equals string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Equals( "this string contains |'ABC|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" equals: "this string contains |'ABC|' as a substring"|n']
+##teamcity[testFailed name='Equals string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" equals: "something else" (case insensitive)|n']
+##teamcity[testFinished name='Equals string matcher' duration="{duration}"]
+##teamcity[testStarted name='Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified']
+##teamcity[testFinished name='Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified' duration="{duration}"]
+##teamcity[testStarted name='Exception matchers that fail']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nNo exception|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nno exception was thrown where one was expected|n CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nno exception was thrown where one was expected|n REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nType mismatch|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nunexpected exception with message:|n "Unknown exception"|n CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nunexpected exception with message:|n "Unknown exception"|n REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }|n']
+##teamcity[testFailed name='Exception matchers that fail' message='-------------------------------------------------------------------------------|nContents are wrong|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n SpecialException::what special exception has value of 1|n']
+##teamcity[testFailed name='Exception matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )|nwith expansion:|n SpecialException::what special exception has value of 1|n']
+##teamcity[testFinished name='Exception matchers that fail' duration="{duration}"]
+##teamcity[testStarted name='Exception matchers that succeed']
+##teamcity[testFinished name='Exception matchers that succeed' duration="{duration}"]
+##teamcity[testStarted name='Exception message can be matched']
+##teamcity[testFinished name='Exception message can be matched' duration="{duration}"]
+##teamcity[testStarted name='Exception messages can be tested for']
+##teamcity[testFinished name='Exception messages can be tested for' duration="{duration}"]
+##teamcity[testStarted name='Exceptions matchers']
+##teamcity[testFinished name='Exceptions matchers' duration="{duration}"]
+##teamcity[testStarted name='Expected exceptions that don|'t throw or unexpected exceptions fail the test']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK_THROWS_AS( thisThrows(), std::string )|nwith expansion:|n thisThrows(), std::string|n']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|nno exception was thrown where one was expected|n CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )|nwith expansion:|n thisDoesntThrow(), std::domain_error|n']
+##teamcity[testFailed name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' message='Exception.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK_NOTHROW( thisThrows() )|nwith expansion:|n thisThrows()|n']
+##teamcity[testFinished name='Expected exceptions that don|'t throw or unexpected exceptions fail the test' duration="{duration}"]
+##teamcity[testStarted name='FAIL aborts the test']
+##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
+##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
+##teamcity[testStarted name='FAIL does not require an argument']
+##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
+##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
+##teamcity[testStarted name='FAIL_CHECK does not abort the test']
+##teamcity[testFailed name='FAIL_CHECK does not abort the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
+##teamcity[testFinished name='FAIL_CHECK does not abort the test' duration="{duration}"]
+##teamcity[testStarted name='Factorials are computed']
+##teamcity[testFinished name='Factorials are computed' duration="{duration}"]
+##teamcity[testStarted name='Filter generator throws exception for empty generator']
+##teamcity[testFinished name='Filter generator throws exception for empty generator' duration="{duration}"]
+##teamcity[testStarted name='Floating point matchers: double']
+##teamcity[testFinished name='Floating point matchers: double' duration="{duration}"]
+##teamcity[testStarted name='Floating point matchers: float']
+##teamcity[testFinished name='Floating point matchers: float' duration="{duration}"]
+##teamcity[testStarted name='GENERATE can combine literals and generators']
+##teamcity[testFinished name='GENERATE can combine literals and generators' duration="{duration}"]
+##teamcity[testStarted name='Generators -- adapters']
+##teamcity[testFinished name='Generators -- adapters' duration="{duration}"]
+##teamcity[testStarted name='Generators -- simple']
+##teamcity[testFinished name='Generators -- simple' duration="{duration}"]
+##teamcity[testStarted name='Generators internals']
+##teamcity[testFinished name='Generators internals' duration="{duration}"]
+##teamcity[testStarted name='Greater-than inequalities with different epsilons']
+##teamcity[testFinished name='Greater-than inequalities with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='Hashers with different seed produce different hash with same test case']
+##teamcity[testFinished name='Hashers with different seed produce different hash with same test case' duration="{duration}"]
+##teamcity[testStarted name='Hashers with same seed produce same hash']
+##teamcity[testFinished name='Hashers with same seed produce same hash' duration="{duration}"]
+##teamcity[testStarted name='Hashing different test cases produces different result']
+##teamcity[testFinished name='Hashing different test cases produces different result' duration="{duration}"]
+##teamcity[testStarted name='Hashing test case produces same hash across multiple calls']
+##teamcity[testFinished name='Hashing test case produces same hash across multiple calls' duration="{duration}"]
+##teamcity[testStarted name='INFO and UNSCOPED_INFO can stream multiple arguments']
+##teamcity[testFailed name='INFO and UNSCOPED_INFO can stream multiple arguments' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with messages:|n "This info has multiple parts."|n "This unscoped info has multiple parts."|n "Show infos!"']
+##teamcity[testFinished name='INFO and UNSCOPED_INFO can stream multiple arguments' duration="{duration}"]
+##teamcity[testStarted name='INFO and WARN do not abort tests']
+##teamcity[testFinished name='INFO and WARN do not abort tests' duration="{duration}"]
+##teamcity[testStarted name='INFO gets logged on failure']
+##teamcity[testFailed name='INFO gets logged on failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this message should be logged"|n "so should this"|n REQUIRE( a == 1 )|nwith expansion:|n 2 == 1|n']
+##teamcity[testFinished name='INFO gets logged on failure' duration="{duration}"]
+##teamcity[testStarted name='INFO gets logged on failure, even if captured before successful assertions']
+##teamcity[testFailed name='INFO gets logged on failure, even if captured before successful assertions' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this message may be logged later"|n "this message should be logged"|n CHECK( a == 1 )|nwith expansion:|n 2 == 1|n']
+##teamcity[testFailed name='INFO gets logged on failure, even if captured before successful assertions' message='Message.tests.cpp:<line number>|nexpression failed with messages:|n "this message may be logged later"|n "this message should be logged"|n "and this, but later"|n CHECK( a == 0 )|nwith expansion:|n 2 == 0|n']
+##teamcity[testFinished name='INFO gets logged on failure, even if captured before successful assertions' duration="{duration}"]
+##teamcity[testStarted name='INFO is reset for each loop']
+##teamcity[testFailed name='INFO is reset for each loop' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "current counter 10"|n "i := 10"|n REQUIRE( i < 10 )|nwith expansion:|n 10 < 10|n']
+##teamcity[testFinished name='INFO is reset for each loop' duration="{duration}"]
+##teamcity[testStarted name='Incomplete AssertionHandler']
+##teamcity[testIgnored name='Incomplete AssertionHandler' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE"|n REQUIRE( Dummy )|nwith expansion:|n Dummy|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Incomplete AssertionHandler' duration="{duration}"]
+##teamcity[testStarted name='Inequality checks that should fail']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven != 7 )|nwith expansion:|n 7 != 7|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.100000381f|n!=|nApprox( 9.10000038146972656 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.14159265350000005|n!=|nApprox( 3.14159265350000005 )|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello != "hello" )|nwith expansion:|n "hello" != "hello"|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello.size() != 5 )|nwith expansion:|n 5 != 5|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Inequality checks that should succeed']
+##teamcity[testFinished name='Inequality checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='JsonWriter']
+##teamcity[testFinished name='JsonWriter' duration="{duration}"]
+##teamcity[testStarted name='JsonWriter escapes charaters in strings properly']
+##teamcity[testFinished name='JsonWriter escapes charaters in strings properly' duration="{duration}"]
+##teamcity[testStarted name='Lambdas in assertions']
+##teamcity[testFinished name='Lambdas in assertions' duration="{duration}"]
+##teamcity[testStarted name='Less-than inequalities with different epsilons']
+##teamcity[testFinished name='Less-than inequalities with different epsilons' duration="{duration}"]
+##teamcity[testStarted name='ManuallyRegistered']
+##teamcity[testFinished name='ManuallyRegistered' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be (AllOf) composed with the && operator']
+##teamcity[testFinished name='Matchers can be (AllOf) composed with the && operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be (AnyOf) composed with the |||| operator']
+##teamcity[testFinished name='Matchers can be (AnyOf) composed with the |||| operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be composed with both && and ||||']
+##teamcity[testFinished name='Matchers can be composed with both && and ||||' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be composed with both && and |||| - failing']
+##teamcity[testFailed name='Matchers can be composed with both && and |||| - failing' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) |||| ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )|n']
+##teamcity[testFinished name='Matchers can be composed with both && and |||| - failing' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be negated (Not) with the ! operator']
+##teamcity[testFinished name='Matchers can be negated (Not) with the ! operator' duration="{duration}"]
+##teamcity[testStarted name='Matchers can be negated (Not) with the ! operator - failing']
+##teamcity[testFailed name='Matchers can be negated (Not) with the ! operator - failing' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" not contains: "substring"|n']
+##teamcity[testFinished name='Matchers can be negated (Not) with the ! operator - failing' duration="{duration}"]
+##teamcity[testStarted name='Mayfail test case with nested sections']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nA|n1|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nA|n2|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nB|n1|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='Mayfail test case with nested sections' message='-------------------------------------------------------------------------------|nB|n2|n-------------------------------------------------------------------------------|nCondition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Mayfail test case with nested sections' duration="{duration}"]
+##teamcity[testStarted name='Mismatching exception messages failing the test']
+##teamcity[testFailed name='Mismatching exception messages failing the test' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nexpression failed|n REQUIRE_THROWS_WITH( thisThrows(), "should fail" )|nwith expansion:|n "expected exception" equals: "should fail"|n']
+##teamcity[testFinished name='Mismatching exception messages failing the test' duration="{duration}"]
+##teamcity[testStarted name='Multireporter calls reporters and listeners in correct order']
+##teamcity[testFinished name='Multireporter calls reporters and listeners in correct order' duration="{duration}"]
+##teamcity[testStarted name='Multireporter updates ReporterPreferences properly']
+##teamcity[testFinished name='Multireporter updates ReporterPreferences properly' duration="{duration}"]
+##teamcity[testStarted name='Nested generators and captured variables']
+##teamcity[testFinished name='Nested generators and captured variables' duration="{duration}"]
+##teamcity[testStarted name='Nice descriptive name']
+##teamcity[testFinished name='Nice descriptive name' duration="{duration}"]
+##teamcity[testStarted name='Non-std exceptions can be translated']
+##teamcity[testFailed name='Non-std exceptions can be translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "custom exception"']
+##teamcity[testFinished name='Non-std exceptions can be translated' duration="{duration}"]
+##teamcity[testStarted name='Objects that evaluated in boolean contexts can be checked']
+##teamcity[testFinished name='Objects that evaluated in boolean contexts can be checked' duration="{duration}"]
+##teamcity[testStarted name='Optionally static assertions']
+##teamcity[testFinished name='Optionally static assertions' duration="{duration}"]
+##teamcity[testStarted name='Ordering comparison checks that should fail']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|n...............................................................................|n|nCondition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven > 7 )|nwith expansion:|n 7 > 7|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 7 )|nwith expansion:|n 7 < 7|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven > 8 )|nwith expansion:|n 7 > 8|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 6 )|nwith expansion:|n 7 < 6|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < 0 )|nwith expansion:|n 7 < 0|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven < -1 )|nwith expansion:|n 7 < -1|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven >= 8 )|nwith expansion:|n 7 >= 8|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.int_seven <= 6 )|nwith expansion:|n 7 <= 6|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.100000381f < 9|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.100000381f > 10|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.100000381f > 9.19999999999999929|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "hello" )|nwith expansion:|n "hello" > "hello"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "hello" )|nwith expansion:|n "hello" < "hello"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "hellp" )|nwith expansion:|n "hello" > "hellp"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello > "z" )|nwith expansion:|n "hello" > "z"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "hellm" )|nwith expansion:|n "hello" < "hellm"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello < "a" )|nwith expansion:|n "hello" < "a"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello >= "z" )|nwith expansion:|n "hello" >= "z"|n']
+##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello <= "a" )|nwith expansion:|n "hello" <= "a"|n']
+##teamcity[testFinished name='Ordering comparison checks that should fail' duration="{duration}"]
+##teamcity[testStarted name='Ordering comparison checks that should succeed']
+##teamcity[testFinished name='Ordering comparison checks that should succeed' duration="{duration}"]
+##teamcity[testStarted name='Our PCG implementation provides expected results for known seeds']
+##teamcity[testFinished name='Our PCG implementation provides expected results for known seeds' duration="{duration}"]
+##teamcity[testStarted name='Output from all sections is reported']
+##teamcity[testFailed name='Output from all sections is reported' message='-------------------------------------------------------------------------------|none|n-------------------------------------------------------------------------------|nMessage.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Message from section one"']
+##teamcity[testFailed name='Output from all sections is reported' message='-------------------------------------------------------------------------------|ntwo|n-------------------------------------------------------------------------------|nMessage.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Message from section two"']
+##teamcity[testFinished name='Output from all sections is reported' duration="{duration}"]
+##teamcity[testStarted name='Overloaded comma or address-of operators are not used']
+##teamcity[testFinished name='Overloaded comma or address-of operators are not used' duration="{duration}"]
+##teamcity[testStarted name='Parse uints']
+##teamcity[testFinished name='Parse uints' duration="{duration}"]
+##teamcity[testStarted name='Parsed tags are matched case insensitive']
+##teamcity[testFinished name='Parsed tags are matched case insensitive' duration="{duration}"]
+##teamcity[testStarted name='Parsing sharding-related cli flags']
+##teamcity[testFinished name='Parsing sharding-related cli flags' duration="{duration}"]
+##teamcity[testStarted name='Parsing tags with non-alphabetical characters is pass-through']
+##teamcity[testFinished name='Parsing tags with non-alphabetical characters is pass-through' duration="{duration}"]
+##teamcity[testStarted name='Parsing warnings']
+##teamcity[testFinished name='Parsing warnings' duration="{duration}"]
+##teamcity[testStarted name='Pointers can be compared to null']
+##teamcity[testFinished name='Pointers can be compared to null' duration="{duration}"]
+##teamcity[testStarted name='Precision of floating point stringification can be set']
+##teamcity[testFinished name='Precision of floating point stringification can be set' duration="{duration}"]
+##teamcity[testStarted name='Predicate matcher can accept const char*']
+##teamcity[testFinished name='Predicate matcher can accept const char*' duration="{duration}"]
+##teamcity[testStarted name='Process can be configured on command line']
+##teamcity[testFinished name='Process can be configured on command line' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int, double, float>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int, double, float>' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int, double>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int, double>' duration="{duration}"]
+##teamcity[testStarted name='Product with differing arities - std::tuple<int>']
+##teamcity[testFinished name='Product with differing arities - std::tuple<int>' duration="{duration}"]
+##teamcity[testStarted name='Random seed generation accepts known methods']
+##teamcity[testFinished name='Random seed generation accepts known methods' duration="{duration}"]
+##teamcity[testStarted name='Random seed generation reports unknown methods']
+##teamcity[testFinished name='Random seed generation reports unknown methods' duration="{duration}"]
+##teamcity[testStarted name='Range type with sentinel']
+##teamcity[testFinished name='Range type with sentinel' duration="{duration}"]
+##teamcity[testStarted name='Reconstruction should be based on stringification: #914']
+##teamcity[testFailed name='Reconstruction should be based on stringification: #914' message='Decomposition.tests.cpp:<line number>|n...............................................................................|n|nDecomposition.tests.cpp:<line number>|nexpression failed|n CHECK( truthy(false) )|nwith expansion:|n Hey, its truthy!|n']
+##teamcity[testFinished name='Reconstruction should be based on stringification: #914' duration="{duration}"]
+##teamcity[testStarted name='Regex string matcher']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "this STRING contains |'abc|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "this STRING contains |'abc|' as a substring" case sensitively|n']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "contains |'abc|' as a substring" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "contains |'abc|' as a substring" case sensitively|n']
+##teamcity[testFailed name='Regex string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), Matches( "this string contains |'abc|' as a" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" matches "this string contains |'abc|' as a" case sensitively|n']
+##teamcity[testFinished name='Regex string matcher' duration="{duration}"]
+##teamcity[testStarted name='Registering reporter with |'::|' in name fails']
+##teamcity[testFinished name='Registering reporter with |'::|' in name fails' duration="{duration}"]
+##teamcity[testStarted name='Regression test #1']
+##teamcity[testFinished name='Regression test #1' duration="{duration}"]
+##teamcity[testStarted name='Reporter|'s write listings to provided stream']
+##teamcity[testFinished name='Reporter|'s write listings to provided stream' duration="{duration}"]
+##teamcity[testStarted name='Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla']
+##teamcity[testFinished name='Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla' duration="{duration}"]
+##teamcity[testStarted name='SUCCEED counts as a test pass']
+##teamcity[testFinished name='SUCCEED counts as a test pass' duration="{duration}"]
+##teamcity[testStarted name='SUCCEED does not require an argument']
+##teamcity[testFinished name='SUCCEED does not require an argument' duration="{duration}"]
+##teamcity[testStarted name='Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods']
+##teamcity[testFinished name='Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods' duration="{duration}"]
+##teamcity[testStarted name='Scenario: Do that thing with the thing']
+##teamcity[testFinished name='Scenario: Do that thing with the thing' duration="{duration}"]
+##teamcity[testStarted name='Scenario: This is a really long scenario name to see how the list command deals with wrapping']
+##teamcity[testFinished name='Scenario: This is a really long scenario name to see how the list command deals with wrapping' duration="{duration}"]
+##teamcity[testStarted name='Scenario: Vector resizing affects size and capacity']
+##teamcity[testFinished name='Scenario: Vector resizing affects size and capacity' duration="{duration}"]
+##teamcity[testStarted name='Sends stuff to stdout and stderr']
+##teamcity[testStdOut name='Sends stuff to stdout and stderr' out='A string sent directly to stdout|n']
+##teamcity[testStdErr name='Sends stuff to stdout and stderr' out='A string sent directly to stderr|nA string sent to stderr via clog|n']
+##teamcity[testFinished name='Sends stuff to stdout and stderr' duration="{duration}"]
+##teamcity[testStarted name='Some simple comparisons between doubles']
+##teamcity[testFinished name='Some simple comparisons between doubles' duration="{duration}"]
+##teamcity[testStarted name='Standard output from all sections is reported']
+##teamcity[testStdOut name='Standard output from all sections is reported' out='Message from section one|nMessage from section two|n']
+##teamcity[testFinished name='Standard output from all sections is reported' duration="{duration}"]
+##teamcity[testStarted name='StartsWith string matcher']
+##teamcity[testFailed name='StartsWith string matcher' message='Matchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )|nwith expansion:|n "this string contains |'abc|' as a substring" starts with: "This String"|n']
+##teamcity[testFailed name='StartsWith string matcher' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )|nwith expansion:|n "this string contains |'abc|' as a substring" starts with: "string" (case insensitive)|n']
+##teamcity[testFinished name='StartsWith string matcher' duration="{duration}"]
+##teamcity[testStarted name='Static arrays are convertible to string']
+##teamcity[testFinished name='Static arrays are convertible to string' duration="{duration}"]
+##teamcity[testStarted name='String matchers']
+##teamcity[testFinished name='String matchers' duration="{duration}"]
+##teamcity[testStarted name='StringRef']
+##teamcity[testFinished name='StringRef' duration="{duration}"]
+##teamcity[testStarted name='StringRef at compilation time']
+##teamcity[testFinished name='StringRef at compilation time' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - signed char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - signed char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying char arrays with statically known sizes - unsigned char']
+##teamcity[testFinished name='Stringifying char arrays with statically known sizes - unsigned char' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::duration helpers']
+##teamcity[testFinished name='Stringifying std::chrono::duration helpers' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::duration with weird ratios']
+##teamcity[testFinished name='Stringifying std::chrono::duration with weird ratios' duration="{duration}"]
+##teamcity[testStarted name='Stringifying std::chrono::time_point<system_clock>']
+##teamcity[testFinished name='Stringifying std::chrono::time_point<system_clock>' duration="{duration}"]
+##teamcity[testStarted name='Tabs and newlines show in output']
+##teamcity[testFailed name='Tabs and newlines show in output' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( s1 == s2 )|nwith expansion:|n "if ($b == 10) {|n $a = 20;|n}"|n==|n"if ($b == 10) {|n $a = 20;|n}|n"|n']
+##teamcity[testFinished name='Tabs and newlines show in output' duration="{duration}"]
+##teamcity[testStarted name='Tag alias can be registered against tag patterns']
+##teamcity[testFinished name='Tag alias can be registered against tag patterns' duration="{duration}"]
+##teamcity[testStarted name='Tags with spaces and non-alphanumerical characters are accepted']
+##teamcity[testFinished name='Tags with spaces and non-alphanumerical characters are accepted' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 0']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 1']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case method with test types specified inside std::tuple - MyTypes - 2']
+##teamcity[testFinished name='Template test case method with test types specified inside std::tuple - MyTypes - 2' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 0']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 0' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 1']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 1' duration="{duration}"]
+##teamcity[testStarted name='Template test case with test types specified inside std::tuple - MyTypes - 2']
+##teamcity[testFinished name='Template test case with test types specified inside std::tuple - MyTypes - 2' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - float']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - float' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - int']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - int' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - std::string']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - std::string' duration="{duration}"]
+##teamcity[testStarted name='TemplateTest: vectors can be sized and resized - std::tuple<int,float>']
+##teamcity[testFinished name='TemplateTest: vectors can be sized and resized - std::tuple<int,float>' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - float,4']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - float,4' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - int,5']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - int,5' duration="{duration}"]
+##teamcity[testStarted name='TemplateTestSig: vectors can be sized and resized - std::string,15']
+##teamcity[testFinished name='TemplateTestSig: vectors can be sized and resized - std::string,15' duration="{duration}"]
+##teamcity[testStarted name='Test case with identical tags keeps just one']
+##teamcity[testFinished name='Test case with identical tags keeps just one' duration="{duration}"]
+##teamcity[testStarted name='Test case with one argument']
+##teamcity[testFinished name='Test case with one argument' duration="{duration}"]
+##teamcity[testStarted name='Test enum bit values']
+##teamcity[testFinished name='Test enum bit values' duration="{duration}"]
+##teamcity[testStarted name='Test with special, characters "in name']
+##teamcity[testFinished name='Test with special, characters "in name' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if']
+##teamcity[testFinished name='Testing checked-if' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 2']
+##teamcity[testIgnored name='Testing checked-if 2' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 2' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 3']
+##teamcity[testIgnored name='Testing checked-if 3' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 3' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 4']
+##teamcity[testIgnored name='Testing checked-if 4' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nunexpected exception with message:|n "Uncaught exception should fail!"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 4' duration="{duration}"]
+##teamcity[testStarted name='Testing checked-if 5']
+##teamcity[testIgnored name='Testing checked-if 5' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nunexpected exception with message:|n "Uncaught exception should fail!"|n {Unknown expression after the reported line}|nwith expansion:|n {Unknown expression after the reported line}|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='Testing checked-if 5' duration="{duration}"]
+##teamcity[testStarted name='The NO_FAIL macro reports a failure but does not fail the test']
+##teamcity[testFinished name='The NO_FAIL macro reports a failure but does not fail the test' duration="{duration}"]
+##teamcity[testStarted name='The default listing implementation write to provided stream']
+##teamcity[testFinished name='The default listing implementation write to provided stream' duration="{duration}"]
+##teamcity[testStarted name='This test |'should|' fail but doesn|'t']
+##teamcity[testFinished name='This test |'should|' fail but doesn|'t' duration="{duration}"]
+##teamcity[testStarted name='Thrown string literals are translated']
+##teamcity[testFailed name='Thrown string literals are translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "For some reason someone is throwing a string literal!"']
+##teamcity[testFinished name='Thrown string literals are translated' duration="{duration}"]
+##teamcity[testStarted name='Tracker']
+##teamcity[testFinished name='Tracker' duration="{duration}"]
+##teamcity[testStarted name='Trim strings']
+##teamcity[testFinished name='Trim strings' duration="{duration}"]
+##teamcity[testStarted name='Type conversions of RangeEquals and similar']
+##teamcity[testFinished name='Type conversions of RangeEquals and similar' duration="{duration}"]
+##teamcity[testStarted name='Unexpected exceptions can be translated']
+##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "3.14000000000000012"']
+##teamcity[testFinished name='Unexpected exceptions can be translated' duration="{duration}"]
+##teamcity[testStarted name='Upcasting special member functions']
+##teamcity[testFinished name='Upcasting special member functions' duration="{duration}"]
+##teamcity[testStarted name='Usage of AllMatch range matcher']
+##teamcity[testFinished name='Usage of AllMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AllTrue range matcher']
+##teamcity[testFinished name='Usage of AllTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AnyMatch range matcher']
+##teamcity[testFinished name='Usage of AnyMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of AnyTrue range matcher']
+##teamcity[testFinished name='Usage of AnyTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of NoneMatch range matcher']
+##teamcity[testFinished name='Usage of NoneMatch range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of NoneTrue range matcher']
+##teamcity[testFinished name='Usage of NoneTrue range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of RangeEquals range matcher']
+##teamcity[testFinished name='Usage of RangeEquals range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of UnorderedRangeEquals range matcher']
+##teamcity[testFinished name='Usage of UnorderedRangeEquals range matcher' duration="{duration}"]
+##teamcity[testStarted name='Usage of the SizeIs range matcher']
+##teamcity[testFinished name='Usage of the SizeIs range matcher' duration="{duration}"]
+##teamcity[testStarted name='Use a custom approx']
+##teamcity[testFinished name='Use a custom approx' duration="{duration}"]
+##teamcity[testStarted name='Variadic macros']
+##teamcity[testFinished name='Variadic macros' duration="{duration}"]
+##teamcity[testStarted name='Vector Approx matcher']
+##teamcity[testFinished name='Vector Approx matcher' duration="{duration}"]
+##teamcity[testStarted name='Vector Approx matcher -- failing']
+##teamcity[testFailed name='Vector Approx matcher -- failing' message='-------------------------------------------------------------------------------|nEmpty and non empty vectors are not approx equal|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Approx( t1 ) )|nwith expansion:|n { } is approx: { 1.0, 2.0 }|n']
+##teamcity[testFailed name='Vector Approx matcher -- failing' message='-------------------------------------------------------------------------------|nJust different vectors|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v1, Approx( v2 ) )|nwith expansion:|n { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }|n']
+##teamcity[testFinished name='Vector Approx matcher -- failing' duration="{duration}"]
+##teamcity[testStarted name='Vector matchers']
+##teamcity[testFinished name='Vector matchers' duration="{duration}"]
+##teamcity[testStarted name='Vector matchers that fail']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nContains (element)|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, VectorContains( -1 ) )|nwith expansion:|n { 1, 2, 3 } Contains: -1|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, VectorContains( 1 ) )|nwith expansion:|n { } Contains: 1|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nContains (vector)|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Contains( v ) )|nwith expansion:|n { } Contains: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Contains( v2 ) )|nwith expansion:|n { 1, 2, 3 } Contains: { 1, 2, 4 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nEquals|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Equals( v2 ) )|nwith expansion:|n { 1, 2, 3 } Equals: { 1, 2 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v2, Equals( v ) )|nwith expansion:|n { 1, 2 } Equals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, Equals( v ) )|nwith expansion:|n { } Equals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, Equals( empty ) )|nwith expansion:|n { 1, 2, 3 } Equals: { }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='-------------------------------------------------------------------------------|nUnorderedEquals|n-------------------------------------------------------------------------------|nMatchers.tests.cpp:<line number>|n...............................................................................|n|nMatchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( v, UnorderedEquals( empty ) )|nwith expansion:|n { 1, 2, 3 } UnorderedEquals: { }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( empty, UnorderedEquals( v ) )|nwith expansion:|n { } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( permuted, UnorderedEquals( v ) )|nwith expansion:|n { 1, 3 } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFailed name='Vector matchers that fail' message='Matchers.tests.cpp:<line number>|nexpression failed|n CHECK_THAT( permuted, UnorderedEquals( v ) )|nwith expansion:|n { 3, 1 } UnorderedEquals: { 1, 2, 3 }|n']
+##teamcity[testFinished name='Vector matchers that fail' duration="{duration}"]
+##teamcity[testStarted name='When checked exceptions are thrown they can be expected or unexpected']
+##teamcity[testFinished name='When checked exceptions are thrown they can be expected or unexpected' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown directly they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown directly they are always failures' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"']
+##teamcity[testFinished name='When unchecked exceptions are thrown directly they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown during a CHECK the test should continue']
+##teamcity[testFailed name='When unchecked exceptions are thrown during a CHECK the test should continue' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown during a CHECK the test should continue' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail']
+##teamcity[testFailed name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n REQUIRE( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown during a REQUIRE the test should abort fail' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown from functions they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown from functions they are always failures' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "expected exception"|n CHECK( thisThrows() == 0 )|nwith expansion:|n thisThrows() == 0|n']
+##teamcity[testFinished name='When unchecked exceptions are thrown from functions they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown from sections they are always failures']
+##teamcity[testFailed name='When unchecked exceptions are thrown from sections they are always failures' message='-------------------------------------------------------------------------------|nsection name|n-------------------------------------------------------------------------------|nException.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "unexpected exception"']
+##teamcity[testFinished name='When unchecked exceptions are thrown from sections they are always failures' duration="{duration}"]
+##teamcity[testStarted name='When unchecked exceptions are thrown, but caught, they do not affect the test']
+##teamcity[testFinished name='When unchecked exceptions are thrown, but caught, they do not affect the test' duration="{duration}"]
+##teamcity[testStarted name='X/level/0/a']
+##teamcity[testFinished name='X/level/0/a' duration="{duration}"]
+##teamcity[testStarted name='X/level/0/b']
+##teamcity[testFinished name='X/level/0/b' duration="{duration}"]
+##teamcity[testStarted name='X/level/1/a']
+##teamcity[testFinished name='X/level/1/a' duration="{duration}"]
+##teamcity[testStarted name='X/level/1/b']
+##teamcity[testFinished name='X/level/1/b' duration="{duration}"]
+##teamcity[testStarted name='XmlEncode']
+##teamcity[testFinished name='XmlEncode' duration="{duration}"]
+##teamcity[testStarted name='XmlWriter writes boolean attributes as true/false']
+##teamcity[testFinished name='XmlWriter writes boolean attributes as true/false' duration="{duration}"]
+##teamcity[testStarted name='a succeeding test can still be skipped']
+##teamcity[testIgnored name='a succeeding test can still be skipped' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='a succeeding test can still be skipped' duration="{duration}"]
+##teamcity[testStarted name='analyse no analysis']
+##teamcity[testFinished name='analyse no analysis' duration="{duration}"]
+##teamcity[testStarted name='array<int, N> -> toString']
+##teamcity[testFinished name='array<int, N> -> toString' duration="{duration}"]
+##teamcity[testStarted name='benchmark function call']
+##teamcity[testFinished name='benchmark function call' duration="{duration}"]
+##teamcity[testStarted name='boolean member']
+##teamcity[testFinished name='boolean member' duration="{duration}"]
+##teamcity[testStarted name='checkedElse']
+##teamcity[testFinished name='checkedElse' duration="{duration}"]
+##teamcity[testStarted name='checkedElse, failing']
+##teamcity[testFailed name='checkedElse, failing' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( testCheckedElse( false ) )|nwith expansion:|n false|n']
+##teamcity[testFinished name='checkedElse, failing' duration="{duration}"]
+##teamcity[testStarted name='checkedIf']
+##teamcity[testFinished name='checkedIf' duration="{duration}"]
+##teamcity[testStarted name='checkedIf, failing']
+##teamcity[testFailed name='checkedIf, failing' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( testCheckedIf( false ) )|nwith expansion:|n false|n']
+##teamcity[testFinished name='checkedIf, failing' duration="{duration}"]
+##teamcity[testStarted name='classify_outliers']
+##teamcity[testFinished name='classify_outliers' duration="{duration}"]
+##teamcity[testStarted name='comparisons between const int variables']
+##teamcity[testFinished name='comparisons between const int variables' duration="{duration}"]
+##teamcity[testStarted name='comparisons between int variables']
+##teamcity[testFinished name='comparisons between int variables' duration="{duration}"]
+##teamcity[testStarted name='convertToBits']
+##teamcity[testFinished name='convertToBits' duration="{duration}"]
+##teamcity[testStarted name='dynamic skipping works with generators']
+##teamcity[testIgnored name='dynamic skipping works with generators' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 41"']
+##teamcity[testIgnored name='dynamic skipping works with generators' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 43"']
+##teamcity[testFinished name='dynamic skipping works with generators' duration="{duration}"]
+##teamcity[testStarted name='empty tags are not allowed']
+##teamcity[testFinished name='empty tags are not allowed' duration="{duration}"]
+##teamcity[testStarted name='erfc_inv']
+##teamcity[testFinished name='erfc_inv' duration="{duration}"]
+##teamcity[testStarted name='estimate_clock_resolution']
+##teamcity[testFinished name='estimate_clock_resolution' duration="{duration}"]
+##teamcity[testStarted name='even more nested SECTION tests']
+##teamcity[testFinished name='even more nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='failed assertions before SKIP cause test case to fail']
+##teamcity[testIgnored name='failed assertions before SKIP cause test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexpression failed|n CHECK( 3 == 4 )|nwith expansion:|n 3 == 4|n- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failed assertions before SKIP cause test case to fail' message='Skip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='failed assertions before SKIP cause test case to fail' duration="{duration}"]
+##teamcity[testStarted name='failing for some generator values causes entire test case to fail']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testIgnored name='failing for some generator values causes entire test case to fail' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='failing for some generator values causes entire test case to fail' duration="{duration}"]
+##teamcity[testStarted name='failing in some unskipped sections causes entire test case to fail']
+##teamcity[testIgnored name='failing in some unskipped sections causes entire test case to fail' message='-------------------------------------------------------------------------------|nskipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testIgnored name='failing in some unskipped sections causes entire test case to fail' message='-------------------------------------------------------------------------------|nnot skipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit failure- failure ignore as test marked as |'ok to fail|'|n']
+##teamcity[testFinished name='failing in some unskipped sections causes entire test case to fail' duration="{duration}"]
+##teamcity[testStarted name='first tag']
+##teamcity[testFinished name='first tag' duration="{duration}"]
+##teamcity[testStarted name='has printf']
+##teamcity[testFinished name='has printf' duration="{duration}"]
+##teamcity[testStarted name='is_unary_function']
+##teamcity[testFinished name='is_unary_function' duration="{duration}"]
+##teamcity[testStarted name='just failure']
+##teamcity[testFailed name='just failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "Previous info should not be seen"']
+##teamcity[testFinished name='just failure' duration="{duration}"]
+##teamcity[testStarted name='just failure after unscoped info']
+##teamcity[testFailed name='just failure after unscoped info' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "previous unscoped info SHOULD not be seen"']
+##teamcity[testFinished name='just failure after unscoped info' duration="{duration}"]
+##teamcity[testStarted name='just info']
+##teamcity[testFinished name='just info' duration="{duration}"]
+##teamcity[testStarted name='just unscoped info']
+##teamcity[testFinished name='just unscoped info' duration="{duration}"]
+##teamcity[testStarted name='long long']
+##teamcity[testFinished name='long long' duration="{duration}"]
+##teamcity[testStarted name='looped SECTION tests']
+##teamcity[testFailed name='looped SECTION tests' message='-------------------------------------------------------------------------------|nb is currently: 0|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( b > a )|nwith expansion:|n 0 > 1|n']
+##teamcity[testFailed name='looped SECTION tests' message='-------------------------------------------------------------------------------|nb is currently: 1|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n CHECK( b > a )|nwith expansion:|n 1 > 1|n']
+##teamcity[testFinished name='looped SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='looped tests']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[0|] (1) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[1|] (1) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[3|] (3) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[4|] (5) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[6|] (13) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFailed name='looped tests' message='Misc.tests.cpp:<line number>|nexpression failed with message:|n "Testing if fib|[7|] (21) is even"|n CHECK( ( fib|[i|] % 2 ) == 0 )|nwith expansion:|n 1 == 0|n']
+##teamcity[testFinished name='looped tests' duration="{duration}"]
+##teamcity[testStarted name='makeStream recognizes %debug stream name']
+##teamcity[testFinished name='makeStream recognizes %debug stream name' duration="{duration}"]
+##teamcity[testStarted name='make_unique reimplementation']
+##teamcity[testFinished name='make_unique reimplementation' duration="{duration}"]
+##teamcity[testStarted name='mean']
+##teamcity[testFinished name='mean' duration="{duration}"]
+##teamcity[testStarted name='measure']
+##teamcity[testFinished name='measure' duration="{duration}"]
+##teamcity[testStarted name='mix info, unscoped info and warning']
+##teamcity[testFinished name='mix info, unscoped info and warning' duration="{duration}"]
+##teamcity[testStarted name='more nested SECTION tests']
+##teamcity[testFailed name='more nested SECTION tests' message='-------------------------------------------------------------------------------|ndoesn|'t equal|nequal|n-------------------------------------------------------------------------------|nMisc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed|n REQUIRE( a == b )|nwith expansion:|n 1 == 2|n']
+##teamcity[testFinished name='more nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='nested SECTION tests']
+##teamcity[testFinished name='nested SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='nested sections can be skipped dynamically at runtime']
+##teamcity[testIgnored name='nested sections can be skipped dynamically at runtime' message='-------------------------------------------------------------------------------|nB|nB2|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testStdOut name='nested sections can be skipped dynamically at runtime' out='a!|nb1!|n!|n']
+##teamcity[testFinished name='nested sections can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='non streamable - with conv. op']
+##teamcity[testFinished name='non streamable - with conv. op' duration="{duration}"]
+##teamcity[testStarted name='non-copyable objects']
+##teamcity[testFinished name='non-copyable objects' duration="{duration}"]
+##teamcity[testStarted name='normal_quantile']
+##teamcity[testFinished name='normal_quantile' duration="{duration}"]
+##teamcity[testStarted name='not allowed']
+##teamcity[testFinished name='not allowed' duration="{duration}"]
+##teamcity[testStarted name='not prints unscoped info from previous failures']
+##teamcity[testFailed name='not prints unscoped info from previous failures' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with message:|n "this SHOULD be seen"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='not prints unscoped info from previous failures' duration="{duration}"]
+##teamcity[testStarted name='null strings']
+##teamcity[testFinished name='null strings' duration="{duration}"]
+##teamcity[testStarted name='null_ptr']
+##teamcity[testFinished name='null_ptr' duration="{duration}"]
+##teamcity[testStarted name='pair<pair<int,const char *,pair<std::string,int> > -> toString']
+##teamcity[testFinished name='pair<pair<int,const char *,pair<std::string,int> > -> toString' duration="{duration}"]
+##teamcity[testStarted name='parseEnums']
+##teamcity[testFinished name='parseEnums' duration="{duration}"]
+##teamcity[testStarted name='pointer to class']
+##teamcity[testFinished name='pointer to class' duration="{duration}"]
+##teamcity[testStarted name='print unscoped info if passing unscoped info is printed']
+##teamcity[testFinished name='print unscoped info if passing unscoped info is printed' duration="{duration}"]
+##teamcity[testStarted name='prints unscoped info on failure']
+##teamcity[testFailed name='prints unscoped info on failure' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "this SHOULD be seen"|n "this SHOULD also be seen"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='prints unscoped info on failure' duration="{duration}"]
+##teamcity[testStarted name='prints unscoped info only for the first assertion']
+##teamcity[testFailed name='prints unscoped info only for the first assertion' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with message:|n "this SHOULD be seen only ONCE"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='prints unscoped info only for the first assertion' duration="{duration}"]
+##teamcity[testStarted name='random SECTION tests']
+##teamcity[testFinished name='random SECTION tests' duration="{duration}"]
+##teamcity[testStarted name='replaceInPlace']
+##teamcity[testFinished name='replaceInPlace' duration="{duration}"]
+##teamcity[testStarted name='request an unknown %-starting stream fails']
+##teamcity[testFinished name='request an unknown %-starting stream fails' duration="{duration}"]
+##teamcity[testStarted name='resolution']
+##teamcity[testFinished name='resolution' duration="{duration}"]
+##teamcity[testStarted name='run_for_at_least, chronometer']
+##teamcity[testFinished name='run_for_at_least, chronometer' duration="{duration}"]
+##teamcity[testStarted name='run_for_at_least, int']
+##teamcity[testFinished name='run_for_at_least, int' duration="{duration}"]
+##teamcity[testStarted name='second tag']
+##teamcity[testFinished name='second tag' duration="{duration}"]
+##teamcity[testStarted name='sections can be skipped dynamically at runtime']
+##teamcity[testIgnored name='sections can be skipped dynamically at runtime' message='-------------------------------------------------------------------------------|nskipped|n-------------------------------------------------------------------------------|nSkip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='sections can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='send a single char to INFO']
+##teamcity[testFailed name='send a single char to INFO' message='Misc.tests.cpp:<line number>|n...............................................................................|n|nMisc.tests.cpp:<line number>|nexpression failed with message:|n "3"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='send a single char to INFO' duration="{duration}"]
+##teamcity[testStarted name='sends information to INFO']
+##teamcity[testFailed name='sends information to INFO' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "hi"|n "i := 7"|n REQUIRE( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='sends information to INFO' duration="{duration}"]
+##teamcity[testStarted name='shortened hide tags are split apart']
+##teamcity[testFinished name='shortened hide tags are split apart' duration="{duration}"]
+##teamcity[testStarted name='skipped tests can optionally provide a reason']
+##teamcity[testIgnored name='skipped tests can optionally provide a reason' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip with message:|n "skipping because answer = 43"']
+##teamcity[testFinished name='skipped tests can optionally provide a reason' duration="{duration}"]
+##teamcity[testStarted name='splitString']
+##teamcity[testFinished name='splitString' duration="{duration}"]
+##teamcity[testStarted name='stacks unscoped info in loops']
+##teamcity[testFailed name='stacks unscoped info in loops' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexpression failed with messages:|n "Count 1 to 3..."|n "1"|n "2"|n "3"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFailed name='stacks unscoped info in loops' message='Message.tests.cpp:<line number>|nexpression failed with messages:|n "Count 4 to 6..."|n "4"|n "5"|n "6"|n CHECK( false )|nwith expansion:|n false|n']
+##teamcity[testFinished name='stacks unscoped info in loops' duration="{duration}"]
+##teamcity[testStarted name='startsWith']
+##teamcity[testFinished name='startsWith' duration="{duration}"]
+##teamcity[testStarted name='std::map is convertible string']
+##teamcity[testFinished name='std::map is convertible string' duration="{duration}"]
+##teamcity[testStarted name='std::pair<int,const std::string> -> toString']
+##teamcity[testFinished name='std::pair<int,const std::string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='std::pair<int,std::string> -> toString']
+##teamcity[testFinished name='std::pair<int,std::string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='std::set is convertible string']
+##teamcity[testFinished name='std::set is convertible string' duration="{duration}"]
+##teamcity[testStarted name='std::vector<std::pair<std::string,int> > -> toString']
+##teamcity[testFinished name='std::vector<std::pair<std::string,int> > -> toString' duration="{duration}"]
+##teamcity[testStarted name='stdout and stderr streams have %-starting name']
+##teamcity[testFinished name='stdout and stderr streams have %-starting name' duration="{duration}"]
+##teamcity[testStarted name='stringify ranges']
+##teamcity[testFinished name='stringify ranges' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_maker )']
+##teamcity[testFinished name='stringify( has_maker )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_maker_and_operator )']
+##teamcity[testFinished name='stringify( has_maker_and_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_neither )']
+##teamcity[testFinished name='stringify( has_neither )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_operator )']
+##teamcity[testFinished name='stringify( has_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( has_template_operator )']
+##teamcity[testFinished name='stringify( has_template_operator )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_maker> )']
+##teamcity[testFinished name='stringify( vectors<has_maker> )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_maker_and_operator> )']
+##teamcity[testFinished name='stringify( vectors<has_maker_and_operator> )' duration="{duration}"]
+##teamcity[testStarted name='stringify( vectors<has_operator> )']
+##teamcity[testFinished name='stringify( vectors<has_operator> )' duration="{duration}"]
+##teamcity[testStarted name='strlen3']
+##teamcity[testFinished name='strlen3' duration="{duration}"]
+##teamcity[testStarted name='tables']
+##teamcity[testFinished name='tables' duration="{duration}"]
+##teamcity[testStarted name='tags with dots in later positions are not parsed as hidden']
+##teamcity[testFinished name='tags with dots in later positions are not parsed as hidden' duration="{duration}"]
+##teamcity[testStarted name='tests can be skipped dynamically at runtime']
+##teamcity[testIgnored name='tests can be skipped dynamically at runtime' message='Skip.tests.cpp:<line number>|n...............................................................................|n|nSkip.tests.cpp:<line number>|nexplicit skip']
+##teamcity[testFinished name='tests can be skipped dynamically at runtime' duration="{duration}"]
+##teamcity[testStarted name='thrown std::strings are translated']
+##teamcity[testFailed name='thrown std::strings are translated' message='Exception.tests.cpp:<line number>|n...............................................................................|n|nException.tests.cpp:<line number>|nunexpected exception with message:|n "Why would you throw a std::string?"']
+##teamcity[testFinished name='thrown std::strings are translated' duration="{duration}"]
+##teamcity[testStarted name='toString on const wchar_t const pointer returns the string contents']
+##teamcity[testFinished name='toString on const wchar_t const pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on const wchar_t pointer returns the string contents']
+##teamcity[testFinished name='toString on const wchar_t pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on wchar_t const pointer returns the string contents']
+##teamcity[testFinished name='toString on wchar_t const pointer returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString on wchar_t returns the string contents']
+##teamcity[testFinished name='toString on wchar_t returns the string contents' duration="{duration}"]
+##teamcity[testStarted name='toString(enum class w/operator<<)']
+##teamcity[testFinished name='toString(enum class w/operator<<)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum class)']
+##teamcity[testFinished name='toString(enum class)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum w/operator<<)']
+##teamcity[testFinished name='toString(enum w/operator<<)' duration="{duration}"]
+##teamcity[testStarted name='toString(enum)']
+##teamcity[testFinished name='toString(enum)' duration="{duration}"]
+##teamcity[testStarted name='tuple<>']
+##teamcity[testFinished name='tuple<>' duration="{duration}"]
+##teamcity[testStarted name='tuple<float,int>']
+##teamcity[testFinished name='tuple<float,int>' duration="{duration}"]
+##teamcity[testStarted name='tuple<int>']
+##teamcity[testFinished name='tuple<int>' duration="{duration}"]
+##teamcity[testStarted name='tuple<string,string>']
+##teamcity[testFinished name='tuple<string,string>' duration="{duration}"]
+##teamcity[testStarted name='tuple<tuple<int>,tuple<>,float>']
+##teamcity[testFinished name='tuple<tuple<int>,tuple<>,float>' duration="{duration}"]
+##teamcity[testStarted name='uniform samples']
+##teamcity[testFinished name='uniform samples' duration="{duration}"]
+##teamcity[testStarted name='uniform_integer_distribution can return the bounds']
+##teamcity[testFinished name='uniform_integer_distribution can return the bounds' duration="{duration}"]
+##teamcity[testStarted name='unique_ptr reimplementation: basic functionality']
+##teamcity[testFinished name='unique_ptr reimplementation: basic functionality' duration="{duration}"]
+##teamcity[testStarted name='vec<vec<string,alloc>> -> toString']
+##teamcity[testFinished name='vec<vec<string,alloc>> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<bool> -> toString']
+##teamcity[testFinished name='vector<bool> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<int,allocator> -> toString']
+##teamcity[testFinished name='vector<int,allocator> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<int> -> toString']
+##teamcity[testFinished name='vector<int> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vector<string> -> toString']
+##teamcity[testFinished name='vector<string> -> toString' duration="{duration}"]
+##teamcity[testStarted name='vectors can be sized and resized']
+##teamcity[testFinished name='vectors can be sized and resized' duration="{duration}"]
+##teamcity[testStarted name='warmup']
+##teamcity[testFinished name='warmup' duration="{duration}"]
+##teamcity[testStarted name='weighted_average_quantile']
+##teamcity[testFinished name='weighted_average_quantile' duration="{duration}"]
+##teamcity[testStarted name='xmlentitycheck']
+##teamcity[testFinished name='xmlentitycheck' duration="{duration}"]
+##teamcity[testSuiteFinished name='<exe-name>']
diff --git a/tests/SelfTest/Baselines/xml.sw.approved.txt b/tests/SelfTest/Baselines/xml.sw.approved.txt
new file mode 100644
index 0000000..aa6bd6a
--- /dev/null
+++ b/tests/SelfTest/Baselines/xml.sw.approved.txt
@@ -0,0 +1,21976 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Catch2TestRun name="<exe-name>" rng-seed="1" xml-format-version="3" catch2-version="<version>" filters="&quot;*&quot; ~[!nonportable] ~[!benchmark] ~[approvals]">
+ <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1027: Bitfields can be captured" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ y.v == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ 0 == y.v
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1147" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 == t2
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 != t2
+ </Original>
+ <Expanded>
+ {?} != {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 &lt; t2
+ </Original>
+ <Expanded>
+ {?} &lt; {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 > t2
+ </Original>
+ <Expanded>
+ {?} > {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 &lt;= t2
+ </Original>
+ <Expanded>
+ {?} &lt;= {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 >= t2
+ </Original>
+ <Expanded>
+ {?} >= {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1175 - Hidden Test" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1238" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ uarr := "123"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ sarr := "456"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::memcmp(uarr, "123", sizeof(uarr)) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ uarr := "123"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ sarr := "456"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::memcmp(sarr, "456", sizeof(sarr)) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1245" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1319: Sections can have description (even if it is not saved" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Section name="SectionName" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1403" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ h1 == h2
+ </Original>
+ <Expanded>
+ [1403 helper] == [1403 helper]
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1455 - INFO and WARN can start with a linebreak" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+
+This info message starts with a linebreak
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+
+This warning message starts with a linebreak
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="#1514: stderr/stdout is not captured in tests aborted by an exception" tags="[.][output-capture][regression]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ 1514
+ </Failure>
+ <OverallResult success="false" skips="0">
+ <StdOut>
+This would not be caught previously
+ </StdOut>
+ <StdErr>
+Nor would this
+ </StdErr>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="#1548" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::is_same&lt;TypeList&lt;int>, TypeList&lt;int>>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1905 -- test spec parser properly clears internal state between compound tests" tags="[command-line][test-spec]" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase("spec . char"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase("spec , char"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ !(spec.matches(*fakeTestCase(R"(spec \, char)")))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1912 -- test spec parser handles escaping" tags="[command-line][test-spec]" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Section name="Various parentheses" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec {a} char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec [a] char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]")))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="backslash in test name" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec \ char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" tags="[generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ counter &lt; 7
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ counter &lt; 7
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1913 - GENERATEs can share a line" tags="[generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 1 != 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 1 != 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 2 != 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 2 != 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - GENERATE after a section" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - Section followed by flat generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ 1
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - flat generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - mixed sections and generates" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - nested generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2152 - ULP checks between differently signed values were wrong - double" tags="[floating-point][matchers][ulp]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
+ </Original>
+ <Expanded>
+ 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2152 - ULP checks between differently signed values were wrong - float" tags="[floating-point][matchers][ulp]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
+ </Original>
+ <Expanded>
+ 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
+ </Original>
+ <Expanded>
+ 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2615 - Throwing in constructor generator fails test case but does not abort" tags="[!shouldfail][generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ failure to init
+ </Exception>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#748 - captures with unexpected exceptions" tags="[!shouldfail][!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="outside assertions" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="inside REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Expression success="false" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="inside REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#809" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ 42 == f
+ </Original>
+ <Expanded>
+ 42 == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#833" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ a == t
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ a == t
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(true)
+ </Original>
+ <Expanded>
+ throws_int(true)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(true), int
+ </Original>
+ <Expanded>
+ throws_int(true), int
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(false)
+ </Original>
+ <Expanded>
+ throws_int(false)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ "aaa", Catch::Matchers::EndsWith("aaa")
+ </Original>
+ <Expanded>
+ "aaa" ends with: "aaa"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ templated_tests&lt;int>(3)
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#835 -- errno should not be touched by Catch2" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ f() == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ errno_after == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#872" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ dummy := 0
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ x == 4
+ </Original>
+ <Expanded>
+ {?} == 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#961 -- Dynamically created sections should all be reported" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Looped section 0" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 1" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 2" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 3" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 4" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="'Not' checks that should fail" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ false != false
+ </Original>
+ <Expanded>
+ false != false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ true != true
+ </Original>
+ <Expanded>
+ true != true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !true
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(true)
+ </Original>
+ <Expanded>
+ !true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !trueValue
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(trueValue)
+ </Original>
+ <Expanded>
+ !true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 1)
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 1)
+ </Original>
+ <Expanded>
+ !(1 == 1)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="'Not' checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ false == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ true == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !false
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(false)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !falseValue
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(falseValue)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 2)
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 2)
+ </Original>
+ <Expanded>
+ !(1 == 2)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="(unimplemented) static bools can be evaluated" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Section name="compare to true" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;true>::value == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true == is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="compare to false" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;false>::value == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ false == is_true&lt;false>::value
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="negation" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !is_true&lt;false>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="double negation" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !!is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="direct" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(is_true&lt;false>::value)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="3x3x3 ints" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A METHOD_AS_TEST_CASE based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ s == "world"
+ </Original>
+ <Expanded>
+ "hello" == "world"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A METHOD_AS_TEST_CASE based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ s == "hello"
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 6 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 6 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 6 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 2 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 6 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 2 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1.0 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1.0f == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0f == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 3 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 6 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 6 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_METHOD based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_METHOD based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Section name="First partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a++ == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Second partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Section name="First partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a++ == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Second partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - Foo&lt;float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - Foo&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - std::vector&lt;float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - std::vector&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - Bar&lt;float, 42>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 42 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - Bar&lt;int, 9>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 9 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - std::array&lt;float, 42>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 42 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - std::array&lt;int, 9>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 9 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A comparison that uses literals instead of the normal constructor" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.23_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.22_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ -d == -1.23_a
+ </Original>
+ <Expanded>
+ -1.22999999999999998
+==
+Approx( -1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.2_a .epsilon(.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.19999999999999996 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.2_a .epsilon(.001)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.19999999999999996 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1_a .epsilon(.3)
+ </Original>
+ <Expanded>
+ 1.22999999999999998 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A couple of nested sections followed by a failure" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Outer" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Inner" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ to infinity and beyond
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A failing expression with a non streamable type is still captured" tags="[.][failing][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ &amp;o1 == &amp;o2
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ o1 == o2
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Absolute margin" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 != Approx(100.0)
+ </Original>
+ <Expanded>
+ 104.0 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 == Approx(100.0).margin(5)
+ </Original>
+ <Expanded>
+ 104.0 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 == Approx(100.0).margin(4)
+ </Original>
+ <Expanded>
+ 104.0 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 != Approx(100.0).margin(3)
+ </Original>
+ <Expanded>
+ 104.0 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 100.3 != Approx(100.0)
+ </Original>
+ <Expanded>
+ 100.29999999999999716 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 100.3 == Approx(100.0).margin(0.5)
+ </Original>
+ <Expanded>
+ 100.29999999999999716 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="An empty test with no assertions" tags="[empty]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="An expression with side-effects should only be evaluated once" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ i++ == 7
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ i++ == 8
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="An unchecked exception reports the line of the last assertion" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ 1 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Anonymous test case 1" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approx setters validate their arguments" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(0)
+ </Original>
+ <Expanded>
+ Approx(0).margin(0)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(1234656)
+ </Original>
+ <Expanded>
+ Approx(0).margin(1234656)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(-2), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).margin(-2), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(0)
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(0)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(1)
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(1)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(-0.001), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(-0.001), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(1.0001), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(1.0001), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approx with exactly-representable margin" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.25f == Approx(0.0f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.25f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.0f == Approx(0.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.0f == Approx( 0.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.5f == Approx(0.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.5f == Approx( 0.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 245.0f == Approx(245.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 245.0f == Approx( 245.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 245.5f == Approx(245.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 245.5f == Approx( 245.25 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate PI" tags="[Approx][PI]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 )
+ </Original>
+ <Expanded>
+ 3.14285714285714279
+==
+Approx( 3.14100000000000001 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 )
+ </Original>
+ <Expanded>
+ 3.14285714285714279
+!=
+Approx( 3.14100000000000001 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.231 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.23100000000000009 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == Approx( 1.231 ).epsilon( 0.1 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.23100000000000009 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with floats" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.23f == Approx( 1.23f )
+ </Original>
+ <Expanded>
+ 1.230000019f
+==
+Approx( 1.23000001907348633 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.0f == Approx( 0.0f )
+ </Original>
+ <Expanded>
+ 0.0f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with ints" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1 == Approx( 1 )
+ </Original>
+ <Expanded>
+ 1 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( 0 )
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with mixed numeric types" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.0f == Approx( 1 )
+ </Original>
+ <Expanded>
+ 1.0f == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( dZero)
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( dSmall ).margin( 0.001 )
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.00001 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.234f == Approx( dMedium )
+ </Original>
+ <Expanded>
+ 1.233999968f
+==
+Approx( 1.23399999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ dMedium == Approx( 1.234f )
+ </Original>
+ <Expanded>
+ 1.23399999999999999
+==
+Approx( 1.23399996757507324 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Arbitrary predicate matcher" tags="[generic][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Function pointer" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, Predicate&lt;int>( alwaysTrue, "always true" )
+ </Original>
+ <Expanded>
+ 1 matches predicate: "always true"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !Predicate&lt;int>( alwaysFalse, "always false" )
+ </Original>
+ <Expanded>
+ 1 not matches predicate: "always false"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Lambdas + different type" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "Hello olleH", Predicate&lt;std::string>( []( std::string const&amp; str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" )
+ </Original>
+ <Expanded>
+ "Hello olleH" matches predicate: "First and last character should be equal"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "This wouldn't pass", !Predicate&lt;std::string>( []( std::string const&amp; str ) -> bool { return str.front() == str.back(); } )
+ </Original>
+ <Expanded>
+ "This wouldn't pass" not matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Assertion macros support bit operators and bool conversions" tags="[bitops][compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ lhs | rhs
+ </Original>
+ <Expanded>
+ Val: 1 | Val: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ !(lhs &amp; rhs)
+ </Original>
+ <Expanded>
+ !(Val: 1 &amp; Val: 2)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ HasBitOperators{ 1 } &amp; HasBitOperators{ 1 }
+ </Original>
+ <Expanded>
+ Val: 1 &amp; Val: 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ lhs ^ rhs
+ </Original>
+ <Expanded>
+ Val: 1 ^ Val: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ !(lhs ^ lhs)
+ </Original>
+ <Expanded>
+ !(Val: 1 ^ Val: 1)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="A section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="Another section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="A section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="Another other section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Basic use of the Contains range matcher" tags="[contains][matchers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Different argument ranges, same element type, default comparison" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(1)
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ b, Contains(1)
+ </Original>
+ <Expanded>
+ { 0, 1, 2 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ c, !Contains(1)
+ </Original>
+ <Expanded>
+ { 4, 5, 6 } not contains element 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different argument ranges, same element type, custom comparison" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ b, Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 0, 1, 2 } contains element 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ c, !Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 4, 5, 6 } not contains element 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different element type, custom comparisons" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(4, [](auto&amp;&amp; lhs, size_t sz) { return lhs.size() == sz; })
+ </Original>
+ <Expanded>
+ { "abc", "abcd", "abcde" } contains element 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Can handle type that requires ADL-found free function begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(1)
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, !Contains(8)
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not contains element 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Initialization with move only types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(MoveOnlyTestElement{ 2 })
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, !Contains(MoveOnlyTestElement{ 9 })
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not contains element 9
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Matching using matcher" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5))
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Basic use of the Empty range matcher" tags="[empty][matchers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Simple, std-provided containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_array, IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, !IsEmpty()
+ </Original>
+ <Expanded>
+ { 0.0 } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vec, !IsEmpty()
+ </Original>
+ <Expanded>
+ { 'a', 'b', 'c' } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ inner_lists_are_empty, !IsEmpty()
+ </Original>
+ <Expanded>
+ { { } } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ inner_lists_are_empty.front(), IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type with empty" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ has_empty{}, !IsEmpty()
+ </Original>
+ <Expanded>
+ {?} not is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found empty free function" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ unrelated::ADL_empty{}, IsEmpty()
+ </Original>
+ <Expanded>
+ {?} is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE can deal with complex expressions" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a := 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ b := 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ c := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a + b := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a+b := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ c > b := true
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a == 1 := true
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE can deal with complex expressions involving commas" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[0, 1, 2] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[(0, 1)] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[0] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (helper_1436&lt;int, int>{12, -12}) := { 12, -12 }
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (helper_1436&lt;int, int>(-12, 12)) := { -12, 12 }
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (1, 2) := 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (2, 3) := 3
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE parses string and character constants" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ("comma, in string", "escaped, \", ") := "escaped, ", "
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "single quote in string,'," := "single quote in string,',"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "some escapes, \\,\\\\" := "some escapes, \,\\"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "some, ), unmatched, } prenheses {[&lt;" := "some, ), unmatched, } prenheses {[&lt;"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '"' := '"'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '\'' := '''
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ',' := ','
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '}' := '}'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ')' := ')'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '(' := '('
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '{' := '{'
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Capture and info messages" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Capture should stringify like assertions" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ i := 2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Info should NOT stringify the way assertions do" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CaseInsensitiveEqualsTo is case insensitive" tags="[comparisons][string-case]" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Section name="Degenerate cases" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "", "" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "", "a" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Plain comparisons" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "a", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "a", "A" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "A", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "A", "A" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "a", "b" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "a", "B" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CaseInsensitiveLess is case insensitive" tags="[comparisons][string-case]" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Section name="Degenerate cases" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(lt( "a", "a" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(lt( "", "" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Plain comparisons" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "a", "b" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "a", "B" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "A", "b" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "A", "B" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Character pretty printing" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Specifically escaped" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\t') == "'\\t'"
+ </Original>
+ <Expanded>
+ "'\t'" == "'\t'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\n') == "'\\n'"
+ </Original>
+ <Expanded>
+ "'\n'" == "'\n'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\r') == "'\\r'"
+ </Original>
+ <Expanded>
+ "'\r'" == "'\r'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\f') == "'\\f'"
+ </Original>
+ <Expanded>
+ "'\f'" == "'\f'"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="General chars" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( ' ' ) == "' '"
+ </Original>
+ <Expanded>
+ "' '" == "' '"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( 'A' ) == "'A'"
+ </Original>
+ <Expanded>
+ "'A'" == "'A'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( 'z' ) == "'z'"
+ </Original>
+ <Expanded>
+ "'z'" == "'z'"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Low ASCII" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( '\0' ) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( static_cast&lt;char>(2) ) == "2"
+ </Original>
+ <Expanded>
+ "2" == "2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( static_cast&lt;char>(5) ) == "5"
+ </Original>
+ <Expanded>
+ "5" == "5"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Arg does not crash on incomplete input" tags="[arg][clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ result.type() == Catch::Clara::Detail::ResultType::Ok
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parsed.type() == Catch::Clara::ParseResultType::NoMatch
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parsed.remainingTokens().count() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Arg supports single-arg parse the way Opt does" tags="[arg][clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name == "foo"
+ </Original>
+ <Expanded>
+ "foo" == "foo"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Opt supports accept-many lambdas" tags="[clara][opt]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Section name="Parsing fails on multiple options without accept_many" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ !(parse_result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Parsing succeeds on multiple options with accept_many" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parse_result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ res == std::vector&lt;std::string>{ "aaa", "bbb" }
+ </Original>
+ <Expanded>
+ { "aaa", "bbb" } == { "aaa", "bbb" }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="ColourGuard behaviour" tags="[console-colours]" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Section name="ColourGuard is disengaged by default" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ColourGuard is engaged by op&lt;&lt;" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n"
+ </Original>
+ <Expanded>
+ "1
+Using code: 2
+2
+Using code: 0
+3
+"
+==
+"1
+Using code: 2
+2
+Using code: 0
+3
+"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ColourGuard can be engaged explicitly" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n"
+ </Original>
+ <Expanded>
+ "Using code: 2
+A
+B
+Using code: 0
+C
+"
+==
+"Using code: 2
+A
+B
+Using code: 0
+C
+"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchAllOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() &amp;&amp; MatcherB() ) &amp;&amp; MatcherC()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() &amp;&amp; ( MatcherB() &amp;&amp; MatcherC() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() &amp;&amp; MatcherB() ) &amp;&amp; ( MatcherC() &amp;&amp; MatcherD() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchAnyOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() || MatcherB() ) || MatcherC()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || ( MatcherB() || MatcherC() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchNotOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0, !MatcherA()
+ </Original>
+ <Expanded>
+ 0 not equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !!MatcherA()
+ </Original>
+ <Expanded>
+ 1 equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0, !!!MatcherA()
+ </Original>
+ <Expanded>
+ 0 not equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !!!!MatcherA()
+ </Original>
+ <Expanded>
+ 1 equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining concrete matchers does not use templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining only templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() &amp;&amp; MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || !MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining templated and concrete matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ vec, Predicate&lt;std::vector&lt;int>>( []( auto const&amp; v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) &amp;&amp; !EqualsRange( a )
+ </Original>
+ <Expanded>
+ { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, StartsWith( "foo" ) &amp;&amp; EqualsRange( arr ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, StartsWith( "foo" ) &amp;&amp; !EqualsRange( bad_arr ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, EqualsRange( arr ) &amp;&amp; StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, !EqualsRange( bad_arr ) &amp;&amp; StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" ) )
+ </Original>
+ <Expanded>
+ "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, ( StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" ) ) || EqualsRange( bad_arr )
+ </Original>
+ <Expanded>
+ "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Commas in various macros are allowed" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Original>
+ <Expanded>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Original>
+ <Expanded>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Original>
+ <Expanded>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_NOTHROW" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Original>
+ <Expanded>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2, 3})
+ </Original>
+ <Expanded>
+ !({ 1, 2 } == { 1, 2, 3 })
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2, 3})
+ </Original>
+ <Expanded>
+ !({ 1, 2 } == { 1, 2, 3 })
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_NOFAIL" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparing function pointers" tags="[function pointer][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ a
+ </Original>
+ <Expanded>
+ 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ a == &amp;foo
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparison ops" tags="[rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ SimplePcg32{} == SimplePcg32{}
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ SimplePcg32{ 0 } != SimplePcg32{}
+ </Original>
+ <Expanded>
+ {?} != {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ !(SimplePcg32{ 1 } == SimplePcg32{ 2 })
+ </Original>
+ <Expanded>
+ !({?} == {?})
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ !(SimplePcg32{ 1 } != SimplePcg32{ 1 })
+ </Original>
+ <Expanded>
+ !({?} != {?})
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparison with explicitly convertible types" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td == Approx(10.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) == Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(10.0) == td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) == StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td != Approx(11.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) != Approx( 11.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(11.0) != td
+ </Original>
+ <Expanded>
+ Approx( 11.0 ) != StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td &lt;= Approx(10.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) &lt;= Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td &lt;= Approx(11.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) &lt;= Approx( 11.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(10.0) &lt;= td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) &lt;= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(9.0) &lt;= td
+ </Original>
+ <Expanded>
+ Approx( 9.0 ) &lt;= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td >= Approx(9.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) >= Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td >= Approx(td)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) >= Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(td) >= td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) >= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(11.0) >= td
+ </Original>
+ <Expanded>
+ Approx( 11.0 ) >= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons between ints where one side is computed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 54 == 6*9
+ </Original>
+ <Expanded>
+ 54 == 54
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( -1 > 2u )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ -1 > 2u
+ </Original>
+ <Expanded>
+ -1 > 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( 2u &lt; -1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 2u &lt; -1
+ </Original>
+ <Expanded>
+ 2 &lt; -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( minInt > 2u )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ minInt > 2u
+ </Original>
+ <Expanded>
+ -2147483648 > 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons with int literals don't warn when mixing signed/ unsigned" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ i == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ui == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ l == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ul == 4
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ c == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ uc == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 1 == i
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 2 == ui
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 3 == l
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 4 == ul
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 5 == c
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 6 == uc
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ (std::numeric_limits&lt;uint32_t>::max)() > ul
+ </Original>
+ <Expanded>
+ 4294967295 (0x<hex digits>) > 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Composed generic matchers shortcircuit" tags="[composed][generic][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="MatchAllOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !(matcher.match( 1 ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="MatchAnyOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ matcher.match( 1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Composed matchers shortcircuit" tags="[composed][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="MatchAllOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !(matcher.match( 1 ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="MatchAnyOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ matcher.match( 1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Contains string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "STRING" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "STRING"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Copy and then generate a range" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Final validation" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ call_count == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ make_data().size() == test_count
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Cout stream properly declares it writes to stdout" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "-" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom exceptions can be translated when testing for nothrow" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ throwCustom()
+ </Original>
+ <Expanded>
+ throwCustom()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception - not std
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom exceptions can be translated when testing for throwing as something else" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ throwCustom(), std::exception
+ </Original>
+ <Expanded>
+ throwCustom(), std::exception
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception - not std
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom std-exceptions can be custom translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom std exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Default scale is invisible to comparison" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 101.000001 != Approx(100).epsilon(0.01)
+ </Original>
+ <Expanded>
+ 101.00000099999999748 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ std::pow(10, -5) != Approx(std::pow(10, -7))
+ </Original>
+ <Expanded>
+ 0.00001 != Approx( 0.0000001 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Directly creating an EnumInfo" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(0) == "Value1"
+ </Original>
+ <Expanded>
+ Value1 == "Value1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(1) == "Value2"
+ </Original>
+ <Expanded>
+ Value2 == "Value2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(3) == "{** unexpected enum value **}"
+ </Original>
+ <Expanded>
+ {** unexpected enum value **}
+==
+"{** unexpected enum value **}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Empty generators can SKIP in constructor" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ This generator is empty
+ </Skip>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="Empty stream name opens cout stream" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="EndsWith string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "Substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "Substring"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value1 ) == "Value1"
+ </Original>
+ <Expanded>
+ "Value1" == "Value1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value2 ) == "Value2"
+ </Original>
+ <Expanded>
+ "Value2" == "Value2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value3 ) == "Value3"
+ </Original>
+ <Expanded>
+ "Value3" == "Value3"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}"
+ </Original>
+ <Expanded>
+ "{** unexpected enum value **}"
+==
+"{** unexpected enum value **}"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( ec3 ) == "Value2"
+ </Original>
+ <Expanded>
+ "Value2" == "Value2"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( Bikeshed::Colours::Red ) == "Red"
+ </Original>
+ <Expanded>
+ "Red" == "Red"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( Bikeshed::Colours::Blue ) == "Blue"
+ </Original>
+ <Expanded>
+ "Blue" == "Blue"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Epsilon only applies to Approx's value" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 101.01 != Approx(100).epsilon(0.01)
+ </Original>
+ <Expanded>
+ 101.01000000000000512 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equality checks that should fail" tags="[!mayfail][.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 6
+ </Original>
+ <Expanded>
+ 7 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 8
+ </Original>
+ <Expanded>
+ 7 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 0
+ </Original>
+ <Expanded>
+ 7 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.11f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+==
+Approx( 9.10999965667724609 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.0f )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 1 )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 0 )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi == Approx( 3.1415 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "goodbye"
+ </Original>
+ <Expanded>
+ "hello" == "goodbye"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hell"
+ </Original>
+ <Expanded>
+ "hello" == "hell"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hello1"
+ </Original>
+ <Expanded>
+ "hello" == "hello1"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() == 6
+ </Original>
+ <Expanded>
+ 5 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ x == Approx( 1.301 )
+ </Original>
+ <Expanded>
+ 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equality checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 7
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.1f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+==
+Approx( 9.10000038146972656 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi == Approx( 3.1415926535 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+==
+Approx( 3.14159265350000005 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hello"
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ "hello" == data.str_hello
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ x == Approx( 1.3 )
+ </Original>
+ <Expanded>
+ 1.30000000000000027
+==
+Approx( 1.30000000000000004 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equals" tags="[matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equals string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'ABC' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" tags="[exception][toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method"
+ </Original>
+ <Expanded>
+ "This exception has overridden what() method"
+==
+"This exception has overridden what() method"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(OperatorException{}) == "OperatorException"
+ </Original>
+ <Expanded>
+ "OperatorException" == "OperatorException"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException"
+ </Original>
+ <Expanded>
+ "StringMakerException"
+==
+"StringMakerException"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception matchers that fail" tags="[!throws][.][exceptions][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="No exception" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type mismatch" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ Unknown exception
+ </Exception>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ Unknown exception
+ </Exception>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contents are wrong" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception matchers that succeed" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception message can be matched" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "starts with: "Derived""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "ends with: "::what""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "not starts with: "::what""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) )
+ </Original>
+ <Expanded>
+ SpecialException::what matches "starts with: "Special""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception messages can be tested for" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="exact match" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "expected exception"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="different case" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="wildcarded" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), StartsWith( "expected" )
+ </Original>
+ <Expanded>
+ "expected exception" starts with: "expected"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), EndsWith( "exception" )
+ </Original>
+ <Expanded>
+ "expected exception" ends with: "exception"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), ContainsSubstring( "except" )
+ </Original>
+ <Expanded>
+ "expected exception" contains: "except"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "expected exception" contains: "except" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exceptions matchers" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, Message( "DerivedException::what" )
+ </Original>
+ <Expanded>
+ DerivedException::what exception message matches "DerivedException::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, !Message( "derivedexception::what" )
+ </Original>
+ <Expanded>
+ DerivedException::what not exception message matches "derivedexception::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" )
+ </Original>
+ <Expanded>
+ SpecialException::what not exception message matches "DerivedException::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" )
+ </Original>
+ <Expanded>
+ SpecialException::what exception message matches "SpecialException::what"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Expected exceptions that don't throw or unexpected exceptions fail the test" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), std::string
+ </Original>
+ <Expanded>
+ thisThrows(), std::string
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <Expression success="false" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisDoesntThrow(), std::domain_error
+ </Original>
+ <Expanded>
+ thisDoesntThrow(), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL aborts the test" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This is a failure
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL_CHECK does not abort the test" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This is a failure
+ </Failure>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This message appears in the output
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Factorials are computed" tags="[factorial]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(0) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(1) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(2) == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(3) == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(10) == 3628800
+ </Original>
+ <Expanded>
+ 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Filter generator throws exception for empty generator" tags="[generators]" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Floating point matchers: double" tags="[floating-point][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Relative" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., WithinRel( 11.1, 0.1 )
+ </Original>
+ <Expanded>
+ 10.0 and 11.09999999999999964 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., !WithinRel( 11.2, 0.1 )
+ </Original>
+ <Expanded>
+ 10.0 not and 11.19999999999999929 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !WithinRel( 0., 0.99 )
+ </Original>
+ <Expanded>
+ 1.0 not and 0.0 are within 99% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0., WithinRel( 0. )
+ </Original>
+ <Expanded>
+ -0.0 and 0.0 are within 2.22045e-12% of each other
+ </Expanded>
+ </Expression>
+ <Section name="Some subnormal values" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, WithinRel( v2 )
+ </Original>
+ <Expanded>
+ 0.0 and 0.0 are within 2.22045e-12% of each other
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Margin" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., WithinAbs( 1., 1 )
+ </Original>
+ <Expanded>
+ 0.0 is within 1.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., !WithinAbs( 1., 0.99 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 0.98999999999999999 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., !WithinAbs( 1., 0.99 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 0.98999999999999999 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 11., !WithinAbs( 10., 0.5 )
+ </Original>
+ <Expanded>
+ 11.0 not is within 0.5 of 10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., !WithinAbs( 11., 0.5 )
+ </Original>
+ <Expanded>
+ 10.0 not is within 0.5 of 11.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10., WithinAbs( -10., 0.5 )
+ </Original>
+ <Expanded>
+ -10.0 is within 0.5 of -10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10., WithinAbs( -9.6, 0.5 )
+ </Original>
+ <Expanded>
+ -10.0 is within 0.5 of -9.59999999999999964
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ULPs" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ nextafter( 1., 2. ), WithinULP( 1., 1 )
+ </Original>
+ <Expanded>
+ 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., WithinULP( nextafter( 0., 1. ), 1 )
+ </Original>
+ <Expanded>
+ 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( nextafter( 1., 0. ), 1 )
+ </Original>
+ <Expanded>
+ 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !WithinULP( nextafter( 1., 2. ), 0 )
+ </Original>
+ <Expanded>
+ 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0., WithinULP( 0., 0 )
+ </Original>
+ <Expanded>
+ -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 )
+ </Original>
+ <Expanded>
+ 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 )
+ </Original>
+ <Expanded>
+ 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Constructor validation" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1., 0. )
+ </Original>
+ <Expanded>
+ WithinAbs( 1., 0. )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1., -1. ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinAbs( 1., -1. ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ WithinULP( 1., 0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., 0. )
+ </Original>
+ <Expanded>
+ WithinRel( 1., 0. )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., -0.2 ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1., -0.2 ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., 1. ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1., 1. ), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="IsNaN" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !IsNaN()
+ </Original>
+ <Expanded>
+ 1.0 not is NaN
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Floating point matchers: float" tags="[floating-point][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Relative" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, WithinRel( 11.1f, 0.1f )
+ </Original>
+ <Expanded>
+ 10.0f and 11.10000038146972656 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, !WithinRel( 11.2f, 0.1f )
+ </Original>
+ <Expanded>
+ 10.0f not and 11.19999980926513672 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, !WithinRel( 0.f, 0.99f )
+ </Original>
+ <Expanded>
+ 1.0f not and 0.0 are within 99% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0.f, WithinRel( 0.f )
+ </Original>
+ <Expanded>
+ -0.0f and 0.0 are within 0.00119209% of each other
+ </Expanded>
+ </Expression>
+ <Section name="Some subnormal values" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, WithinRel( v2 )
+ </Original>
+ <Expanded>
+ 0.0f and 0.0 are within 0.00119209% of each other
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Margin" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinAbs( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 0.0f is within 1.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, !WithinAbs( 1.f, 0.99f )
+ </Original>
+ <Expanded>
+ 0.0f not is within 0.99000000953674316 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, !WithinAbs( 1.f, 0.99f )
+ </Original>
+ <Expanded>
+ 0.0f not is within 0.99000000953674316 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinAbs( -0.f, 0 )
+ </Original>
+ <Expanded>
+ 0.0f is within 0.0 of -0.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 11.f, !WithinAbs( 10.f, 0.5f )
+ </Original>
+ <Expanded>
+ 11.0f not is within 0.5 of 10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, !WithinAbs( 11.f, 0.5f )
+ </Original>
+ <Expanded>
+ 10.0f not is within 0.5 of 11.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10.f, WithinAbs( -10.f, 0.5f )
+ </Original>
+ <Expanded>
+ -10.0f is within 0.5 of -10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10.f, WithinAbs( -9.6f, 0.5f )
+ </Original>
+ <Expanded>
+ -10.0f is within 0.5 of -9.60000038146972656
+ </Expanded>
+ </Expression>
+ <OverallResults successes="9" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ULPs" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -1.f, WithinULP( -1.f, 0 )
+ </Original>
+ <Expanded>
+ -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 )
+ </Original>
+ <Expanded>
+ 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 )
+ </Original>
+ <Expanded>
+ 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 )
+ </Original>
+ <Expanded>
+ 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0.f, WithinULP( 0.f, 0 )
+ </Original>
+ <Expanded>
+ -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f )
+ </Original>
+ <Expanded>
+ 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Constructor validation" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1.f, 0.f )
+ </Original>
+ <Expanded>
+ WithinAbs( 1.f, 0.f )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1.f, -1.f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinAbs( 1.f, -1.f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ WithinULP( 1.f, 0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1.f, static_cast&lt;uint64_t>( -1 ) ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinULP( 1.f, static_cast&lt;uint64_t>( -1 ) ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, 0.f )
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, 0.f )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, -0.2f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, -0.2f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, 1.f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, 1.f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="IsNaN" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !IsNaN()
+ </Original>
+ <Expanded>
+ 1.0 not is NaN
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="GENERATE can combine literals and generators" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators -- adapters" tags="[generators][generic]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Throws if there are no matching values" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 2 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 2 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is not divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() &lt; 3
+ </Original>
+ <Expanded>
+ 1 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is not divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() &lt; 3
+ </Original>
+ <Expanded>
+ 2 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Throws on too small generators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk(2, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ chunk(2, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators -- simple" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators internals" tags="[generators][internals]" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Single value" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 123
+ </Original>
+ <Expanded>
+ 123 == 123
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Preset values" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Generator combinator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Explicitly typed generator sequence" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get().size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "aa"
+ </Original>
+ <Expanded>
+ "aa" == "aa"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "bb"
+ </Original>
+ <Expanded>
+ "bb" == "bb"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "cc"
+ </Original>
+ <Expanded>
+ "cc" == "cc"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Simple filtering" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Filter out multiple elements at the start and end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Throws on construction if it can't get initial element" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter([](int) { return false; }, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([](int) { return false; }, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Take less" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Take more" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Map with explicit return type" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2.0
+ </Original>
+ <Expanded>
+ 2.0 == 2.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4.0
+ </Original>
+ <Expanded>
+ 4.0 == 4.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 6.0
+ </Original>
+ <Expanded>
+ 6.0 == 6.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Map with deduced return type" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2.0
+ </Original>
+ <Expanded>
+ 2.0 == 2.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4.0
+ </Original>
+ <Expanded>
+ 4.0 == 4.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 6.0
+ </Original>
+ <Expanded>
+ 6.0 == 6.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Singular repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Actual repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive auto step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -2
+ </Original>
+ <Expanded>
+ -2 == -2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative auto step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.90000000000000002
+==
+Approx( -0.90000000000000002 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.80000000000000004
+==
+Approx( -0.80000000000000004 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.70000000000000007
+==
+Approx( -0.70000000000000007 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.60000000000000009
+==
+Approx( -0.60000000000000009 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.50000000000000011
+==
+Approx( -0.50000000000000011 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.40000000000000013
+==
+Approx( -0.40000000000000013 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.30000000000000016
+==
+Approx( -0.30000000000000016 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.20000000000000015
+==
+Approx( -0.20000000000000015 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.10000000000000014
+==
+Approx( -0.10000000000000014 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1.38778e-16
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.00000000000000014
+==
+Approx( -0.00000000000000014 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1.38778e-16
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.09999999999999987
+==
+Approx( 0.09999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.19999999999999987
+==
+Approx( 0.19999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.29999999999999988
+==
+Approx( 0.29999999999999988 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.39999999999999991
+==
+Approx( 0.39999999999999991 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.49999999999999989
+==
+Approx( 0.49999999999999989 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.59999999999999987
+==
+Approx( 0.59999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.69999999999999984
+==
+Approx( 0.69999999999999984 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.79999999999999982
+==
+Approx( 0.79999999999999982 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.8999999999999998
+==
+Approx( 0.8999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx( rangeEnd )
+ </Original>
+ <Expanded>
+ 0.99999999999999978 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.69999999999999996
+==
+Approx( -0.69999999999999996 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.39999999999999997
+==
+Approx( -0.39999999999999997 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.09999999999999998
+==
+Approx( -0.09999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.20000000000000001
+==
+Approx( 0.20000000000000001 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.5 == Approx( 0.5 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.69999999999999996
+==
+Approx( -0.69999999999999996 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.39999999999999997
+==
+Approx( -0.39999999999999997 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.09999999999999998
+==
+Approx( -0.09999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.20000000000000001
+==
+Approx( 0.20000000000000001 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.5 == Approx( 0.5 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Greater-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ !(d >= Approx( 1.24 ))
+ </Original>
+ <Expanded>
+ !(1.22999999999999998
+>=
+Approx( 1.23999999999999999 ))
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.24 ).epsilon(0.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashers with different seed produce different hash with same test case" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h1( dummy ) != h2( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+!=
+130711275 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashers with same seed produce same hash" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h1( dummy ) == h2( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashing different test cases produces different result" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Section name="Different test name" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2903002874 (0x<hex digits>)
+!=
+2668622104 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different classname" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2673152918 (0x<hex digits>)
+!=
+3916075712 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different tags" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2074929312 (0x<hex digits>)
+!=
+3429949824 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashing test case produces same hash across multiple calls" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy ) == h( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO and UNSCOPED_INFO can stream multiple arguments" tags="[.][failing][info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This info has multiple parts.
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This unscoped info has multiple parts.
+ </Info>
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Show infos!
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO and WARN do not abort tests" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this is a message
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this is a warning
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO gets logged on failure" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ so should this
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 1
+ </Original>
+ <Expanded>
+ 2 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO gets logged on failure, even if captured before successful assertions" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 1
+ </Original>
+ <Expanded>
+ 2 == 1
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and this, but later
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 0
+ </Original>
+ <Expanded>
+ 2 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and this, but later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ but not this
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO is reset for each loop" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 0
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 0 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 1 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 2 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 3 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 4
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 4 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 5
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 5 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 6
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 6 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 7
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 7 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 8
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 8 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 9
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 9 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 10
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 10
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 10 &lt; 10
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Incomplete AssertionHandler" tags="[!shouldfail][assertion-handler]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ <Original>
+ Dummy
+ </Original>
+ <Expanded>
+ Dummy
+ </Expanded>
+ <Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Inequality checks that should fail" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 7
+ </Original>
+ <Expanded>
+ 7 != 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.1f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi != Approx( 3.1415926535 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hello"
+ </Original>
+ <Expanded>
+ "hello" != "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() != 5
+ </Original>
+ <Expanded>
+ 5 != 5
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Inequality checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 6
+ </Original>
+ <Expanded>
+ 7 != 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 8
+ </Original>
+ <Expanded>
+ 7 != 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.11f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+!=
+Approx( 9.10999965667724609 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.0f )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 1 )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 0 )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi != Approx( 3.1415 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+!=
+Approx( 3.14150000000000018 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "goodbye"
+ </Original>
+ <Expanded>
+ "hello" != "goodbye"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hell"
+ </Original>
+ <Expanded>
+ "hello" != "hell"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hello1"
+ </Original>
+ <Expanded>
+ "hello" != "hello1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() != 6
+ </Original>
+ <Expanded>
+ 5 != 6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="JsonWriter" tags="[JSON][JsonWriter]" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Section name="Newly constructed JsonWriter does nothing" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeObject will create an empty pair of braces" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "{\n}"
+ </Original>
+ <Expanded>
+ "{
+}"
+==
+"{
+}"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeObject with key will create an object to write the value" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring( "\"int\": 1," ) &amp;&amp; ContainsSubstring( "\"double\": 1.5," ) &amp;&amp; ContainsSubstring( "\"true\": true," ) &amp;&amp; ContainsSubstring( "\"false\": false," ) &amp;&amp; ContainsSubstring( "\"string\": \"this is a string\"," ) &amp;&amp; ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" )
+ </Original>
+ <Expanded>
+ "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+}" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+}" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nesting objects" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) &amp;&amp; ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" )
+ </Original>
+ <Expanded>
+ "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+}" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeArray will create an empty pair of braces" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n]"
+ </Original>
+ <Expanded>
+ "[
+]"
+==
+"[
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeArray creates array to write the values to" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]"
+ </Original>
+ <Expanded>
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+==
+"[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Moved from JsonObjectWriter shall not insert superfluous brace" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "{\n}"
+ </Original>
+ <Expanded>
+ "{
+}"
+==
+"{
+}"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Moved from JsonArrayWriter shall not insert superfluous bracket" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n]"
+ </Original>
+ <Expanded>
+ "[
+]"
+==
+"[
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom class shall be quoted" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "\"custom\""
+ </Original>
+ <Expanded>
+ ""custom"" == ""custom""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="JsonWriter escapes charaters in strings properly" tags="[JsonWriter]" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Section name="Quote in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\"\""
+ </Original>
+ <Expanded>
+ ""\""" == ""\"""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Backslash in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\\\""
+ </Original>
+ <Expanded>
+ ""\\"" == ""\\""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Forward slash in a string is **not** escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"/\""
+ </Original>
+ <Expanded>
+ ""/"" == ""/""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Backspace in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\b\""
+ </Original>
+ <Expanded>
+ ""\b"" == ""\b""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Formfeed in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\f\""
+ </Original>
+ <Expanded>
+ ""\f"" == ""\f""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="linefeed in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\n\""
+ </Original>
+ <Expanded>
+ ""\n"" == ""\n""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="carriage return in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\r\""
+ </Original>
+ <Expanded>
+ ""\r"" == ""\r""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="tab in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\t\""
+ </Original>
+ <Expanded>
+ ""\t"" == ""\t""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="combination of characters is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\\/\\t\\r\\n\""
+ </Original>
+ <Expanded>
+ ""\\/\t\r\n"" == ""\\/\t\r\n""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Lambdas in assertions" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ []() { return true; }()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Less-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ !(d &lt;= Approx( 1.22 ))
+ </Original>
+ <Expanded>
+ !(1.22999999999999998
+&lt;=
+Approx( 1.21999999999999997 ))
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.22 ).epsilon(0.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="ManuallyRegistered" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be (AllOf) composed with the &amp;&amp; operator" tags="[matchers][operator&amp;&amp;][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" ) &amp;&amp; ContainsSubstring( "abc" ) &amp;&amp; ContainsSubstring( "substring" ) &amp;&amp; ContainsSubstring( "contains" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be (AnyOf) composed with the || operator" tags="[matchers][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be composed with both &amp;&amp; and ||" tags="[matchers][operator&amp;&amp;][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be composed with both &amp;&amp; and || - failing" tags="[.][failing][matchers][operator&amp;&amp;][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be negated (Not) with the ! operator" tags="[matchers][not][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), !ContainsSubstring( "different" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" not contains: "different"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be negated (Not) with the ! operator - failing" tags="[.][failing][matchers][not][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), !ContainsSubstring( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" not contains: "substring"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Mayfail test case with nested sections" tags="[!mayfail]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="1" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="2" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="1" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="2" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Mismatching exception messages failing the test" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "expected exception"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "should fail"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "should fail"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Multireporter calls reporters and listeners in correct order" tags="[multi-reporter][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ records == expected
+ </Original>
+ <Expanded>
+ { "Hello", "world", "Goodbye", "world" }
+==
+{ "Hello", "world", "Goodbye", "world" }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Multireporter updates ReporterPreferences properly" tags="[multi-reporter][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Adding listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Adding reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Nested generators and captured variables" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 3 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 4 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 5 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 6 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ -5 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ -4 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 90 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 91 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 92 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 93 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 94 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 95 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 96 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 97 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 98 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 99 > -6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Nice descriptive name" tags="[.][tag1][tag2][tag3]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Warning filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ This one ran
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Non-std exceptions can be translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Objects that evaluated in boolean contexts can be checked" tags="[SafeBool][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ True
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !False
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(False)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Optionally static assertions" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Ordering comparison checks that should fail" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 7
+ </Original>
+ <Expanded>
+ 7 > 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 7
+ </Original>
+ <Expanded>
+ 7 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 8
+ </Original>
+ <Expanded>
+ 7 > 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 6
+ </Original>
+ <Expanded>
+ 7 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 0
+ </Original>
+ <Expanded>
+ 7 &lt; 0
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; -1
+ </Original>
+ <Expanded>
+ 7 &lt; -1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 8
+ </Original>
+ <Expanded>
+ 7 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 6
+ </Original>
+ <Expanded>
+ 7 &lt;= 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 9
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 10
+ </Original>
+ <Expanded>
+ 9.100000381f > 10
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 9.2
+ </Original>
+ <Expanded>
+ 9.100000381f > 9.19999999999999929
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hello"
+ </Original>
+ <Expanded>
+ "hello" > "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hello"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hellp"
+ </Original>
+ <Expanded>
+ "hello" > "hellp"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "z"
+ </Original>
+ <Expanded>
+ "hello" > "z"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hellm"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hellm"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "a"
+ </Original>
+ <Expanded>
+ "hello" &lt; "a"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello >= "z"
+ </Original>
+ <Expanded>
+ "hello" >= "z"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt;= "a"
+ </Original>
+ <Expanded>
+ "hello" &lt;= "a"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Ordering comparison checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 8
+ </Original>
+ <Expanded>
+ 7 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 6
+ </Original>
+ <Expanded>
+ 7 > 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 0
+ </Original>
+ <Expanded>
+ 7 > 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > -1
+ </Original>
+ <Expanded>
+ 7 > -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 7
+ </Original>
+ <Expanded>
+ 7 >= 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 6
+ </Original>
+ <Expanded>
+ 7 >= 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 7
+ </Original>
+ <Expanded>
+ 7 &lt;= 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 8
+ </Original>
+ <Expanded>
+ 7 &lt;= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 9
+ </Original>
+ <Expanded>
+ 9.100000381f > 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 10
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 9.2
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 9.19999999999999929
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt;= "hello"
+ </Original>
+ <Expanded>
+ "hello" &lt;= "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello >= "hello"
+ </Original>
+ <Expanded>
+ "hello" >= "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hellp"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hellp"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "zebra"
+ </Original>
+ <Expanded>
+ "hello" &lt; "zebra"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hellm"
+ </Original>
+ <Expanded>
+ "hello" > "hellm"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "a"
+ </Original>
+ <Expanded>
+ "hello" > "a"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Our PCG implementation provides expected results for known seeds" tags="[rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Section name="Default seeded" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4242248763 (0x<hex digits>)
+==
+4242248763 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1867888929 (0x<hex digits>)
+==
+1867888929 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1276619030 (0x<hex digits>)
+==
+1276619030 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1911218783 (0x<hex digits>)
+==
+1911218783 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1827115164 (0x<hex digits>)
+==
+1827115164 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Specific seed" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Output from all sections is reported" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Message from section one
+ </Failure>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Message from section two
+ </Failure>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Overloaded comma or address-of operators are not used" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+ </Original>
+ <Expanded>
+ ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ &amp;EvilMatcher(), EvilAddressOfOperatorUsed
+ </Original>
+ <Expanded>
+ &amp;EvilMatcher(), EvilAddressOfOperatorUsed
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ EvilMatcher() || ( EvilMatcher() &amp;&amp; !EvilMatcher() )
+ </Original>
+ <Expanded>
+ EvilMatcher() || ( EvilMatcher() &amp;&amp; !EvilMatcher() )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ ( EvilMatcher() &amp;&amp; EvilMatcher() ) || !EvilMatcher()
+ </Original>
+ <Expanded>
+ ( EvilMatcher() &amp;&amp; EvilMatcher() ) || !EvilMatcher()
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parse uints" tags="[parse-numbers]" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Section name="proper inputs" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "0" ) == Optional&lt;unsigned int>{ 0 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "100" ) == Optional&lt;unsigned int>{ 100 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "4294967295" ) == Optional&lt;unsigned int>{ 4294967295 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "0x<hex digits>", 16 ) == Optional&lt;unsigned int>{ 255 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Bad inputs" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "!!KJHF*#" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "-1" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "4294967296" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "42949672964294967296429496729642949672964294967296" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "2 4" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "0x<hex digits>", 10 ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsed tags are matched case insensitive" tags="[test-spec][test-spec-parser]" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing sharding-related cli flags" tags="[sharding]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="shard-count" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-count=8" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardCount == 8
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Negative shard count reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" )
+ </Original>
+ <Expanded>
+ "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Zero shard count reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Shard count must be positive" )
+ </Original>
+ <Expanded>
+ "Shard count must be positive" contains: "Shard count must be positive"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="shard-index" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-index=2" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardIndex == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Negative shard index reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" )
+ </Original>
+ <Expanded>
+ "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shard index 0 is accepted" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-index=0" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardIndex == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing tags with non-alphabetical characters is pass-through" tags="[test-spec][test-spec-parser]" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing warnings" tags="[cli][warnings]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="NoAssertions" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "-w", "NoAssertions" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.warnings == WarnAbout::NoAssertions
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="NoTests is no longer supported" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(cli.parse( { "test", "-w", "NoTests" } ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Combining multiple warnings" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec )
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Pointers can be compared to null" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p == pNULL
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ cp != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ cpc != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ returnsNull() == 0
+ </Original>
+ <Expanded>
+ {null string} == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ returnsConstNull() == 0
+ </Original>
+ <Expanded>
+ {null string} == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 0 != p
+ </Original>
+ <Expanded>
+ 0 != 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Precision of floating point stringification can be set" tags="[floatingPoint][toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Floats" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str1.size() == 3 + 5
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str2.size() == 3 + 10
+ </Original>
+ <Expanded>
+ 13 == 13
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Double" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str1.size() == 2 + 5
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str2.size() == 2 + 15
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Predicate matcher can accept const char*" tags="[compilation][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "foo", Predicate&lt;const char*>( []( const char* const&amp; ) { return true; } )
+ </Original>
+ <Expanded>
+ "foo" matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Process can be configured on command line" tags="[command-line][config]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="empty args don't cause a crash" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.processName == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="default - no arguments" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.processName == "test"
+ </Original>
+ <Expanded>
+ "test" == "test"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(cfg.hasTestFilters())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getReporterSpecs().size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getProcessedReporterSpecs().size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="11" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case using" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case exclusion using exclude:" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case exclusion using ~" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-r/console" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-r/xml" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--reporter/junit" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="must match one of the available ones" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("Unrecognized reporter")
+ </Original>
+ <Expanded>
+ "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="With output file" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="With Windows-like absolute path as output file" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="All with output files" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?}, {?} } == { {?}, {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Mixed output files and default output" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?}, {?} } == { {?}, {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="cannot have multiple reporters with default output" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.")
+ </Original>
+ <Expanded>
+ "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="debugger" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-b" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-b"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="debugger" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--break" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--break"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-a aborts after first failure" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-a"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-x 2 aborts after two failures" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-x", "2"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-x must be numeric" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("convert") &amp;&amp; ContainsSubstring("oops")
+ </Original>
+ <Expanded>
+ "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="invalid options are reported" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("never") &amp;&amp; ContainsSubstring("both")
+ </Original>
+ <Expanded>
+ "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-e" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-e"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--nothrow"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="output filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-o filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-o", "filename.ext"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultOutputFilename == "filename.ext"
+ </Original>
+ <Expanded>
+ "filename.ext" == "filename.ext"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="output filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--out" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--out", "filename.ext"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultOutputFilename == "filename.ext"
+ </Original>
+ <Expanded>
+ "filename.ext" == "filename.ext"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="combinations" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Single character flags can be combined" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-abe"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="without option" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::PlatformDefault
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="auto" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "--colour-mode", "default" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::PlatformDefault
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="yes" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--colour-mode", "ansi"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::ANSI
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="no" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--colour-mode", "none"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::None
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "colour mode must be one of" )
+ </Original>
+ <Expanded>
+ "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="samples" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-samples=200" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkSamples == 200
+ </Original>
+ <Expanded>
+ 200 == 200
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="resamples" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-resamples=20000" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkResamples == 20000
+ </Original>
+ <Expanded>
+ 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="confidence-interval" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-confidence-interval=0.99" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkConfidenceInterval == Catch::Approx(0.99)
+ </Original>
+ <Expanded>
+ 0.98999999999999999
+==
+Approx( 0.98999999999999999 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="no-analysis" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-no-analysis" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkNoAnalysis
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="warmup-time" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-warmup-time=10" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkWarmupTime == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int, double, float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 3 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int, double>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Random seed generation accepts known methods" tags="[rng][seed]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Random seed generation reports unknown methods" tags="[rng][seed]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(static_cast&lt;Catch::GenerateFrom>(77))
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(static_cast&lt;Catch::GenerateFrom>(77))
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Range type with sentinel" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(UsesSentinel{}) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reconstruction should be based on stringification: #914" tags="[.][Decomposition][failing]" filename="tests/<exe-name>/UsageTests/Decomposition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Decomposition.tests.cpp" >
+ <Original>
+ truthy(false)
+ </Original>
+ <Expanded>
+ Hey, its truthy!
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Regex string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "this string contains 'abc' as a" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Registering reporter with '::' in name fails" tags="[registration][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique&lt;TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'"
+ </Original>
+ <Expanded>
+ "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Regression test #1" tags="[matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ actual, !UnorderedEquals( expected )
+ </Original>
+ <Expanded>
+ { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reporter's write listings to provided stream" tags="[reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;TagsFromMatchingTests>
+ &lt;Tag>
+ &lt;Count>1&lt;/Count>
+ &lt;Aliases>
+ &lt;Alias>fakeTag&lt;/Alias>
+ &lt;/Aliases>
+ &lt;/Tag>
+&lt;/TagsFromMatchingTests>" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;AvailableReporters>
+ &lt;Reporter>
+ &lt;Name>fake reporter&lt;/Name>
+ &lt;Description>fake description&lt;/Description>
+ &lt;/Reporter>
+&lt;/AvailableReporters>" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;MatchingTests>
+ &lt;TestCase>
+ &lt;Name>fake test name&lt;/Name>
+ &lt;ClassName/>
+ &lt;Tags>[fakeTestTag]&lt;/Tags>
+ &lt;SourceInfo>
+ &lt;File>fake-file.cpp&lt;/File>
+ &lt;Line>123456789&lt;/Line>
+ &lt;/SourceInfo>
+ &lt;/TestCase>
+&lt;/MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" tags="[console-reporter]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="SUCCEED counts as a test pass" tags="[messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="SUCCEED does not require an argument" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" tags="[bdd][fixtures]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: No operations precede me" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ before == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: We get the count" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: Subsequently values are higher" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ after > before
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: Do that thing with the thing" tags="[Tags]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: This stuff exists" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="And given: And some assumption" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="When: I do this" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: it should do this" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ itDoesThis()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="And: do that" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ itDoesThat()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" tags="[anotherReallyLongTagNameButThisOneHasNoObviousWrapPointsSoShouldSplitWithinAWordUsingADashCharacter][long][lots][one very long tag name that should cause line wrapping writing out using the list command][tags][verbose][very long tags]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: A section name that is so long that it cannot fit in a single console width" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="When: The test headers are printed as part of the normal running of the scenario" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: The, deliberately very long and overly verbose (you see what I did there?) section names must wrap, along with an indent" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: Vector resizing affects size and capacity" tags="[bdd][capacity][size][vector]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: an empty vector" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: it is made larger" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: the size and capacity go up" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <Section name="And when: it is made smaller again" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: the size goes down but the capacity stays the same" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Given: an empty vector" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: we reserve more space" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: The capacity is increased but the size remains the same" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Sends stuff to stdout and stderr" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0">
+ <StdOut>
+A string sent directly to stdout
+ </StdOut>
+ <StdErr>
+A string sent directly to stderr
+A string sent to stderr via clog
+ </StdErr>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="Some simple comparisons between doubles" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.23_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.22_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) == 1.23
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) != 1.22
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+!=
+1.21999999999999997
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) != 1.24
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+!=
+1.23999999999999999
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Standard output from all sections is reported" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0">
+ <StdOut>
+Message from section one
+Message from section two
+ </StdOut>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="StartsWith string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "This String" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "This String"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Static arrays are convertible to string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(singular) == "{ 1 }"
+ </Original>
+ <Expanded>
+ "{ 1 }" == "{ 1 }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Multiple" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(arr) == "{ 3, 2, 1 }"
+ </Original>
+ <Expanded>
+ "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Non-trivial inner items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })"
+ </Original>
+ <Expanded>
+ "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+==
+"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="String matchers" tags="[matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "abc" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "abc"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "this" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "this"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "substring"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="StringRef" tags="[StringRef][Strings]" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Empty string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ empty.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ empty.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( empty.data(), "" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From string literal" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.empty() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( rawChars, "hello" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == rawChars
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From sub-string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original == "original"
+ </Original>
+ <Expanded>
+ original == "original"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.data()
+ </Original>
+ <Expanded>
+ original.data()
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Copy construction is shallow" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.begin() == copy.begin()
+ </Original>
+ <Expanded>
+ "original string" == "original string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Copy assignment is shallow" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.begin() == copy.begin()
+ </Original>
+ <Expanded>
+ "original string" == "original string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="zero-based substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.empty() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strncmp( ss.data(), "hello", 5 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss == "hello"
+ </Original>
+ <Expanded>
+ hello == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="non-zero-based substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.size() == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( ss.data(), "world!" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Pointer values of full refs should match" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == s2.data()
+ </Original>
+ <Expanded>
+ "hello world!" == "hello world!"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Pointer values of substring refs should also match" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == ss.data()
+ </Original>
+ <Expanded>
+ "hello world!" == "hello world!"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Past the end substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.substr(s.size() + 1, 123).empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Substring off the end are trimmed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp(ss.data(), "world!") == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="substring start after the end is empty" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.substr(1'000'000, 1).empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Comparisons are deep" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ reinterpret_cast&lt;char*>(buffer1) != reinterpret_cast&lt;char*>(buffer2)
+ </Original>
+ <Expanded>
+ "Hello" != "Hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ left == right
+ </Original>
+ <Expanded>
+ Hello == Hello
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ left != left.substr(0, 3)
+ </Original>
+ <Expanded>
+ Hello != Hel
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="implicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="explicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="assigned" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="to std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="explicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr == "a stringref"
+ </Original>
+ <Expanded>
+ "a stringref" == "a stringref"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr.size() == sr.size()
+ </Original>
+ <Expanded>
+ 11 == 11
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="to std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="assigned" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr == "a stringref"
+ </Original>
+ <Expanded>
+ "a stringref" == "a stringref"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr.size() == sr.size()
+ </Original>
+ <Expanded>
+ 11 == 11
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="std::string += StringRef" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ lhs == "some string += the stringref contents"
+ </Original>
+ <Expanded>
+ "some string += the stringref contents"
+==
+"some string += the stringref contents"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="StringRef + StringRef" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ together == "abrakadabra"
+ </Original>
+ <Expanded>
+ "abrakadabra" == "abrakadabra"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="StringRef at compilation time" tags="[constexpr][StringRef][Strings]" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Simple constructors" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UDL construction" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - signed char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - unsigned char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::duration helpers" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ minute == seconds
+ </Original>
+ <Expanded>
+ 1 m == 60 s
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ hour != seconds
+ </Original>
+ <Expanded>
+ 1 h != 60 s
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ micro != milli
+ </Original>
+ <Expanded>
+ 1 us != 1 ms
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ nano != micro
+ </Original>
+ <Expanded>
+ 1 ns != 1 us
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::duration with weird ratios" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ half_minute != femto_second
+ </Original>
+ <Expanded>
+ 1 [30/1]s != 1 fs
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ pico_second != atto_second
+ </Original>
+ <Expanded>
+ 1 ps != 1 as
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::time_point&lt;system_clock>" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ now != later
+ </Original>
+ <Expanded>
+ {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Tabs and newlines show in output" tags="[.][failing][whitespace]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ s1 == s2
+ </Original>
+ <Expanded>
+ "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Tag alias can be registered against tag patterns" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Section name="The same tag alias can only be registered once" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "[@zzz]" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "[@zzz]"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "file" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "file"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "2" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "10" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Tag aliases must be of the form [@name]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Tags with spaces and non-alphanumerical characters are accepted" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags, VectorContains( Tag( "tag with spaces" ) ) &amp;&amp; VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) )
+ </Original>
+ <Expanded>
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 0" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 1" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 2" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_default_constructible&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_default_constructible&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_trivially_copyable&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_trivially_copyable&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 2" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - float" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - int" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - std::string" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 12 == 12
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 12 >= 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 12 >= 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - float,4" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 8 >= 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 8 >= 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - int,5" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - std::string,15" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 30 == 30
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 30 >= 30
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 30 >= 30
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test case with identical tags keeps just one" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags[0] == Tag( "tag1" )
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test case with one argument" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test enum bit values" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ 0x<hex digits> == bit30and31
+ </Original>
+ <Expanded>
+ 3221225472 (0x<hex digits>) == 3221225472
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test with special, characters &quot;in name" tags="[cli][regression]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if" tags="[checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 2" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" />
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 3" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" />
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 4" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Uncaught exception should fail!
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 5" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Uncaught exception should fail!
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="The NO_FAIL macro reports a failure but does not fail the test" tags="[messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Expression success="false" type="CHECK_NOFAIL" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ 1 == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="The default listing implementation write to provided stream" tags="[reporter-helpers][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Section name="Listing tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("[fakeTag]"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "[fakeTag]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake reporter"s ) &amp;&amp; ContainsSubstring( "fake description"s )
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fakeListener"s ) &amp;&amp; ContainsSubstring( "fake description"s )
+ </Original>
+ <Expanded>
+ "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="This test 'should' fail but doesn't" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Thrown string literals are translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ For some reason someone is throwing a string literal!
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Tracker" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="fail one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="re-enter after failed section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="fail one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="re-enter after failed section and find next section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="11" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section, then find another" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Re-enter - skips S1 and enters S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Successfully close S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section, then find another" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Re-enter - skips S1 and enters S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="fail S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase3.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1c.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2c.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase3.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="14" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="open a nested section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Trim strings" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(no_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(leading_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(trailing_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(whitespace_at_both_ends)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(no_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(leading_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Type conversions of RangeEquals and similar" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( c_array )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( c_array )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types (differ in array N)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_3, !RangeEquals( array_int_4 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_3, !UnorderedRangeEquals( array_int_4 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types and value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers, one random access, one not" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( list_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( list_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Value type" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, RangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, UnorderedRangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Value type" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal containers of different value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, !RangeEquals( vector_char_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, !UnorderedRangeEquals( vector_char_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges with begin that needs ADL" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, !RangeEquals( b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, UnorderedRangeEquals( b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, RangeEquals( array_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Unexpected exceptions can be translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ 3.14000000000000012
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Upcasting special member functions" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="Move constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ bptr->i == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="move assignment" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ bptr->i == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AllMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllMatch(SizeIs(5))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllMatch(Contains(0) &amp;&amp; Contains(1))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, AllMatch( Predicate&lt;int>( []( int elem ) { return elem &lt; 6; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, allMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !allMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AllTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AnyMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyMatch(SizeIs(5))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyMatch(Contains(0) &amp;&amp; Contains(10))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, AnyMatch( Predicate&lt;int>( []( int elem ) { return elem &lt; 3; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !anyMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, anyMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[1])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[2])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AnyTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of NoneMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneMatch(SizeIs(6))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneMatch(Contains(0) &amp;&amp; Contains(1))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, NoneMatch( Predicate&lt;int>( []( int elem ) { return elem > 6; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, noneMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !noneMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[1])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[2])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of NoneTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of RangeEquals range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container matches empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, RangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { } elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container does not match non-empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, !RangeEquals( non_empty_vector )
+ </Original>
+ <Expanded>
+ { } not elements are { 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vector, !RangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { 1 } not elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal 1-length non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, RangeEquals( non_empty_array )
+ </Original>
+ <Expanded>
+ { 1 } elements are { 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( array_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, non-equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !RangeEquals( array_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 2, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !RangeEquals( array_c )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal-sized, non-empty containers (with same first elements)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !RangeEquals( vector_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, RangeEquals( vector_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !RangeEquals( vector_b, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 3, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges that need ADL begin/end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, RangeEquals( needs_adl2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Compare against std::initializer_list" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( { 1, 2, 3 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 4, 6 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Check short-circuiting behaviour" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Check short-circuits on failure" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1, !RangeEquals( arr )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked1.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Check short-circuiting behaviour" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All elements are checked on success" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1, RangeEquals( arr )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of UnorderedRangeEquals range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container matches empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, UnorderedRangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { } unordered elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container does not match non-empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, !UnorderedRangeEquals( non_empty_vector )
+ </Original>
+ <Expanded>
+ { } not unordered elements are { 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vector, !UnorderedRangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { 1 } not unordered elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal 1-length non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, UnorderedRangeEquals( non_empty_array )
+ </Original>
+ <Expanded>
+ { 1 } unordered elements are { 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( array_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, non-equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !UnorderedRangeEquals( array_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal-sized, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !UnorderedRangeEquals( vector_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !UnorderedRangeEquals( vector_b, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges that need ADL begin/end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, UnorderedRangeEquals( needs_adl2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Compare against std::initializer_list" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( { 10, 20, 1 } )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) &lt;= 1; } )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of the SizeIs range matcher" tags="[matchers][size][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Some with stdlib containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, SizeIs(0)
+ </Original>
+ <Expanded>
+ { } has size == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, !SizeIs(2)
+ </Original>
+ <Expanded>
+ { } not has size == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, SizeIs(Lt(2))
+ </Original>
+ <Expanded>
+ { } size matches is less than 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, SizeIs(2)
+ </Original>
+ <Expanded>
+ { 0, 0 } has size == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, SizeIs( Lt(3))
+ </Original>
+ <Expanded>
+ { 0, 0 } size matches is less than 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, !SizeIs(!Lt(3))
+ </Original>
+ <Expanded>
+ { 0, 0 } not size matches not is less than 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ map, SizeIs(3)
+ </Original>
+ <Expanded>
+ { {?}, {?}, {?} } has size == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found size free function" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ unrelated::ADL_size{}, SizeIs(12)
+ </Original>
+ <Expanded>
+ {?} has size == 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type has size member" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ has_size{}, SizeIs(13)
+ </Original>
+ <Expanded>
+ {?} has size == 13
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Use a custom approx" tags="[Approx][custom]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != approx( 1.25 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998 != Approx( 1.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.23
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.22
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.21999999999999997
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.24
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.23999999999999999
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) != 1.25
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 ) != 1.25
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Variadic macros" tags="[sections][variadic]" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <Section name="Section with one argument" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector Approx matcher" tags="[approx][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Empty vector is roughly equal to an empty vector" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Approx( empty )
+ </Original>
+ <Expanded>
+ { } is approx: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="A vector is approx equal to itself" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v1 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx&lt;double>( { 1., 2., 3. } )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Different length" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, !Approx( temp )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Same length, different elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, !Approx( v2 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).margin( 0.5 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).epsilon( 0.5 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector Approx matcher -- failing" tags="[.][approx][failing][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Empty and non empty vectors are not approx equal" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Approx( t1 )
+ </Original>
+ <Expanded>
+ { } is approx: { 1.0, 2.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Just different vectors" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 )
+ </Original>
+ <Expanded>
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector matchers" tags="[matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Contains (element)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 1 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( VectorContains&lt;int, CustomAllocator&lt;int>>( 2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (vector)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains&lt;int>( { 1, 2 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Contains&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Contains( empty )
+ </Original>
+ <Expanded>
+ { } Contains: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Contains&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, Contains( v6 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (element), composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 1 ) &amp;&amp; VectorContains( 2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Equals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Equals( empty )
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals&lt;int>( { 1, 2, 3 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Equals&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, Equals( v6 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UnorderedEquals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals&lt;int>( { 3, 2, 1 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, UnorderedEquals( empty )
+ </Original>
+ <Expanded>
+ { } UnorderedEquals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( UnorderedEquals&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( permuted ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5_permuted, UnorderedEquals( v5 )
+ </Original>
+ <Expanded>
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector matchers that fail" tags="[.][failing][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Contains (element)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( -1 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: -1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, VectorContains( 1 )
+ </Original>
+ <Expanded>
+ { } Contains: 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (vector)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Contains( v )
+ </Original>
+ <Expanded>
+ { } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Equals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v2, Equals( v )
+ </Original>
+ <Expanded>
+ { 1, 2 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Equals( v )
+ </Original>
+ <Expanded>
+ { } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="4" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UnorderedEquals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="4" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When checked exceptions are thrown they can be expected or unexpected" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), std::domain_error
+ </Original>
+ <Expanded>
+ thisThrows(), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisDoesntThrow()
+ </Original>
+ <Expanded>
+ thisDoesntThrow()
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown directly they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown during a CHECK the test should continue" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown from functions they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown from sections they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="section name" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/0/a" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/0/b" tags="[fizz][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/1/a" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/1/b" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="XmlEncode" tags="[XML]" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Section name="normal string" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "normal string" ) == "normal string"
+ </Original>
+ <Expanded>
+ "normal string" == "normal string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="empty string" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "" ) == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with ampersand" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith &amp; jones" ) == "smith &amp;amp; jones"
+ </Original>
+ <Expanded>
+ "smith &amp;amp; jones" == "smith &amp;amp; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with less-than" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith &lt; jones" ) == "smith &amp;lt; jones"
+ </Original>
+ <Expanded>
+ "smith &amp;lt; jones" == "smith &amp;lt; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with greater-than" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith > jones" ) == "smith > jones"
+ </Original>
+ <Expanded>
+ "smith > jones" == "smith > jones"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith ]]&gt; jones" ) == "smith ]]&amp;gt; jones"
+ </Original>
+ <Expanded>
+ "smith ]]&amp;gt; jones"
+==
+"smith ]]&amp;gt; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with quotes" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( stringWithQuotes ) == stringWithQuotes
+ </Original>
+ <Expanded>
+ "don't "quote" me on that"
+==
+"don't "quote" me on that"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &amp;quot;quote&amp;quot; me on that"
+ </Original>
+ <Expanded>
+ "don't &amp;quot;quote&amp;quot; me on that"
+==
+"don't &amp;quot;quote&amp;quot; me on that"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with control char (1)" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "[\x01]" ) == "[\\x01]"
+ </Original>
+ <Expanded>
+ "[\x01]" == "[\x01]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with control char (x7F)" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "[\x7F]" ) == "[\\x7F]"
+ </Original>
+ <Expanded>
+ "[\x7F]" == "[\x7F]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="XmlWriter writes boolean attributes as true/false" tags="[XML][XmlWriter]" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring(R"(attr1="true")") &amp;&amp; ContainsSubstring(R"(attr2="false")")
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;Element1 attr1="true" attr2="false"/>
+" ( contains: "attr1="true"" and contains: "attr2="false"" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="a succeeding test can still be skipped" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="analyse no analysis" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.point.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.lower_bound.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.upper_bound.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.point.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.lower_bound.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.upper_bound.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.total() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.low_mild == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.low_severe == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.high_mild == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.high_severe == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.samples_seen == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outlier_variance == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="array&lt;int, N> -> toString" tags="[array][containers][toString]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( empty ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( oneValue ) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( twoValues ) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="benchmark function call" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Section name="without chronometer" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ called == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="with chronometer" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ called == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="boolean member" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ obj.prop != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedElse" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedElse( true )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedElse, failing" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedElse( false )
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedIf" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedIf( true )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedIf, failing" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedIf( false )
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="classify_outliers" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Section name="none" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="low severe" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="low mild" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="high mild" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="high severe" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="mixed" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="comparisons between const int variables" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_char_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_short_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_int_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_long_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="comparisons between int variables" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_char_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_short_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_int_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_long_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="convertToBits" tags="[conversion][floating-point]" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( 0.f ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( -0.f ) == ( 1ULL &lt;&lt; 31 )
+ </Original>
+ <Expanded>
+ 2147483648 (0x<hex digits>)
+==
+2147483648 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( 0. ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( -0. ) == ( 1ULL &lt;&lt; 63 )
+ </Original>
+ <Expanded>
+ 9223372036854775808 (0x<hex digits>)
+==
+9223372036854775808 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( std::numeric_limits&lt;float>::denorm_min() ) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( std::numeric_limits&lt;double>::denorm_min() ) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="dynamic skipping works with generators" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 41
+ </Skip>
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 43
+ </Skip>
+ <OverallResult success="true" skips="2"/>
+ </TestCase>
+ <TestCase name="empty tags are not allowed" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+ </Original>
+ <Expanded>
+ Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="erfc_inv" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(1.103560) == Approx(-0.09203687623843015)
+ </Original>
+ <Expanded>
+ -0.09203687623843014
+==
+Approx( -0.09203687623843015 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(1.067400) == Approx(-0.05980291115763361)
+ </Original>
+ <Expanded>
+ -0.05980291115763361
+==
+Approx( -0.05980291115763361 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(0.050000) == Approx(1.38590382434967796)
+ </Original>
+ <Expanded>
+ 1.38590382434967774
+==
+Approx( 1.38590382434967796 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="estimate_clock_resolution" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.mean.count() == rate
+ </Original>
+ <Expanded>
+ 2000.0 == 2000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.outliers.total() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="even more nested SECTION tests" tags="[sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="c" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="d (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="c" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="e (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="f (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="failed assertions before SKIP cause test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Original>
+ 3 == 4
+ </Original>
+ <Expanded>
+ 3 == 4
+ </Expanded>
+ </Expression>
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="failing for some generator values causes entire test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="2"/>
+ </TestCase>
+ <TestCase name="failing in some unskipped sections causes entire test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="first tag" tags="[tag1]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="has printf" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+loose text artifact
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="is_unary_function" tags="[clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="just failure" tags="[.][fail][isolated info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Previous info should not be seen
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just failure after unscoped info" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ previous unscoped info SHOULD not be seen
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just info" tags="[info][isolated info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just unscoped info" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="long long" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ l == std::numeric_limits&lt;long long>::max()
+ </Original>
+ <Expanded>
+ 9223372036854775807 (0x<hex digits>)
+==
+9223372036854775807 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="looped SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="b is currently: 0" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 0 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 1" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 1 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 2" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 2 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 3" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 3 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 4" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 4 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 5" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 5 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 6" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 6 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 7" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 7 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 8" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 8 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 9" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 9 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="looped tests" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[0] (1) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[1] (1) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[2] (2) is even
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[3] (3) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[4] (5) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[5] (8) is even
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[6] (13) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[7] (21) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="makeStream recognizes %debug stream name" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%debug" )
+ </Original>
+ <Expanded>
+ Catch::makeStream( "%debug" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="make_unique reimplementation" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="From lvalue copies" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(lval.has_moved)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From rvalue moves" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ rval.has_moved
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Variadic constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == std::tuple&lt;int, double, int>{1, 2., 3}
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="mean" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ m == 19.
+ </Original>
+ <Expanded>
+ 19.0 == 19.0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="measure" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x == 17
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x == 23
+ </Original>
+ <Expanded>
+ 23 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.elapsed.count() == 42
+ </Original>
+ <Expanded>
+ 42 == 42
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.result == 23
+ </Original>
+ <Expanded>
+ 23 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.iterations == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.elapsed.count() == 69
+ </Original>
+ <Expanded>
+ 69 == 69
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.result == 17
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.iterations == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="mix info, unscoped info and warning" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ info
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ unscoped info
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and warn may mix
+ </Warning>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ info
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ unscoped info
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ they are not cleared after warnings
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="more nested SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a == b
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="less than" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a &lt; b
+ </Original>
+ <Expanded>
+ 1 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="nested SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b != a
+ </Original>
+ <Expanded>
+ 2 != 1
+ </Expanded>
+ </Expression>
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="nested sections can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="B1" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="B2" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="1">
+ <StdOut>
+a!
+b1!
+!
+ </StdOut>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="non streamable - with conv. op" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ s == "7"
+ </Original>
+ <Expanded>
+ "7" == "7"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="non-copyable objects" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ ti == typeid(int)
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="normal_quantile" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.551780) == Approx(0.13015979861484198)
+ </Original>
+ <Expanded>
+ 0.13015979861484195
+==
+Approx( 0.13015979861484198 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.533700) == Approx(0.08457408802851875)
+ </Original>
+ <Expanded>
+ 0.08457408802851875
+==
+Approx( 0.08457408802851875 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.025000) == Approx(-1.95996398454005449)
+ </Original>
+ <Expanded>
+ -1.95996398454005405
+==
+Approx( -1.95996398454005449 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="not allowed" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="not prints unscoped info from previous failures" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen only for the FIRST assertion IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen only for the SECOND assertion IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="null strings" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ makeString( false ) != static_cast&lt;char*>(0)
+ </Original>
+ <Expanded>
+ "valid string" != {null string}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ makeString( true ) == static_cast&lt;char*>(0)
+ </Original>
+ <Expanded>
+ {null string} == {null string}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="null_ptr" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }"
+ </Original>
+ <Expanded>
+ "{ { 42, "Arthur" }, { "Ford", 24 } }"
+==
+"{ { 42, "Arthur" }, { "Ford", 24 } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="parseEnums" tags="[enums][Strings]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Section name="No enums" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "" ), Equals( std::vector&lt;Catch::StringRef>{} )
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="One enum value" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "Value1" ), Equals( std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "EnumName::Value1" ), Equals(std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Multiple enum values" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2 } Equals: { Value1, Value2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2", "Value3"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2", "Value3"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="pointer to class" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ p == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="print unscoped info if passing unscoped info is printed" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="prints unscoped info on failure" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD also be seen
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="prints unscoped info only for the first assertion" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen only ONCE
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY also be seen only ONCE IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="random SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b != a
+ </Original>
+ <Expanded>
+ 2 != 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="replaceInPlace" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="replace single char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "b", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "azcdefcg"
+ </Original>
+ <Expanded>
+ "azcdefcg" == "azcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace two chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "c", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abzdefzg"
+ </Original>
+ <Expanded>
+ "abzdefzg" == "abzdefzg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace first char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "a", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "zbcdefcg"
+ </Original>
+ <Expanded>
+ "zbcdefcg" == "zbcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace last char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "g", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abcdefcz"
+ </Original>
+ <Expanded>
+ "abcdefcz" == "abcdefcz"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace all chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, letters, "replaced")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "replaced"
+ </Original>
+ <Expanded>
+ "replaced" == "replaced"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace no chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ !(Catch::replaceInPlace(letters, "x", "z"))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == letters
+ </Original>
+ <Expanded>
+ "abcdefcg" == "abcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="no replace in already-replaced string" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="lengthening" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "c", "cc")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abccdefccg"
+ </Original>
+ <Expanded>
+ "abccdefccg" == "abccdefccg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="no replace in already-replaced string" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="shortening" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(s, "--", "-")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ s == "--"
+ </Original>
+ <Expanded>
+ "--" == "--"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="escape '" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(s, "'", "|'")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ s == "didn|'t"
+ </Original>
+ <Expanded>
+ "didn|'t" == "didn|'t"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="request an unknown %-starting stream fails" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%somestream" )
+ </Original>
+ <Expanded>
+ Catch::makeStream( "%somestream" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="resolution" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.size() == count
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="run_for_at_least, chronometer" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 4 >= 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 8 >= 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 16 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 32 >= 16
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 64 >= 32
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 128 >= 64
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.elapsed >= time
+ </Original>
+ <Expanded>
+ 128 ns >= 100 ns
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.result == Timing.iterations + 17
+ </Original>
+ <Expanded>
+ 145 == 145
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.iterations >= time.count()
+ </Original>
+ <Expanded>
+ 128 >= 100
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="run_for_at_least, int" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 4 >= 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 8 >= 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 16 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 32 >= 16
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 64 >= 32
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 128 >= 64
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.elapsed >= time
+ </Original>
+ <Expanded>
+ 128 ns >= 100 ns
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.result == Timing.iterations + 17
+ </Original>
+ <Expanded>
+ 145 == 145
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.iterations >= time.count()
+ </Original>
+ <Expanded>
+ 128 >= 100
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="second tag" tags="[tag2]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="sections can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="also not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="send a single char to INFO" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="sends information to INFO" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ hi
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 7
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="shortened hide tags are split apart" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags, VectorContains( Tag( "magic-tag" ) ) &amp;&amp; VectorContains( Tag( "."_catch_sr ) )
+ </Original>
+ <Expanded>
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="skipped tests can optionally provide a reason" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 43
+ </Skip>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="splitString" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("", ','), Equals(std::vector&lt;StringRef>())
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("abc", ','), Equals(std::vector&lt;StringRef>{"abc"})
+ </Original>
+ <Expanded>
+ { abc } Equals: { abc }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("abc,def", ','), Equals(std::vector&lt;StringRef>{"abc", "def"})
+ </Original>
+ <Expanded>
+ { abc, def } Equals: { abc, def }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stacks unscoped info in loops" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Count 1 to 3...
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Count 4 to 6...
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 4
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 5
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 6
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="startsWith" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ !(startsWith("", 'c'))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ startsWith(std::string("abc"), 'a')
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ startsWith("def"_catch_sr, 'd')
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::map is convertible string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="empty" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( emptyMap ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }"
+ </Original>
+ <Expanded>
+ "{ { "one", 1 } }" == "{ { "one", 1 } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="several items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }"
+ </Original>
+ <Expanded>
+ "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+==
+"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::pair&lt;int,const std::string> -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }"
+ </Original>
+ <Expanded>
+ "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::pair&lt;int,std::string> -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }"
+ </Original>
+ <Expanded>
+ "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::set is convertible string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="empty" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( emptySet ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( set ) == "{ \"one\" }"
+ </Original>
+ <Expanded>
+ "{ "one" }" == "{ "one" }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="several items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }"
+ </Original>
+ <Expanded>
+ "{ "abc", "def", "ghi" }"
+==
+"{ "abc", "def", "ghi" }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }"
+ </Original>
+ <Expanded>
+ "{ { "green", 55 } }"
+==
+"{ { "green", 55 } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stdout and stderr streams have %-starting name" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%stderr" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%stdout" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify ranges" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(streamable_range{}) == "op&lt;&lt;(streamable_range)"
+ </Original>
+ <Expanded>
+ "op&lt;&lt;(streamable_range)"
+==
+"op&lt;&lt;(streamable_range)"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)"
+ </Original>
+ <Expanded>
+ "stringmaker(streamable_range)"
+==
+"stringmaker(streamable_range)"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }"
+ </Original>
+ <Expanded>
+ "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(disabled_range{}) == "{?}"
+ </Original>
+ <Expanded>
+ "{?}" == "{?}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_maker )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "StringMaker&lt;has_maker>"
+ </Original>
+ <Expanded>
+ "StringMaker&lt;has_maker>"
+==
+"StringMaker&lt;has_maker>"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_maker_and_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "StringMaker&lt;has_maker_and_operator>"
+ </Original>
+ <Expanded>
+ "StringMaker&lt;has_maker_and_operator>"
+==
+"StringMaker&lt;has_maker_and_operator>"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_neither )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(item) == "{?}"
+ </Original>
+ <Expanded>
+ "{?}" == "{?}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "operator&lt;&lt;( has_operator )"
+ </Original>
+ <Expanded>
+ "operator&lt;&lt;( has_operator )"
+==
+"operator&lt;&lt;( has_operator )"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_template_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "operator&lt;&lt;( has_template_operator )"
+ </Original>
+ <Expanded>
+ "operator&lt;&lt;( has_template_operator )"
+==
+"operator&lt;&lt;( has_template_operator )"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_maker> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ StringMaker&lt;has_maker> }"
+ </Original>
+ <Expanded>
+ "{ StringMaker&lt;has_maker> }"
+==
+"{ StringMaker&lt;has_maker> }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_maker_and_operator> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ StringMaker&lt;has_maker_and_operator> }"
+ </Original>
+ <Expanded>
+ "{ StringMaker&lt;has_maker_and_operator> }"
+==
+"{ StringMaker&lt;has_maker_and_operator> }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_operator> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ operator&lt;&lt;( has_operator ) }"
+ </Original>
+ <Expanded>
+ "{ operator&lt;&lt;( has_operator ) }"
+==
+"{ operator&lt;&lt;( has_operator ) }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="strlen3" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tables" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tags with dots in later positions are not parsed as hidden" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags[0].original == "magic.tag"_catch_sr
+ </Original>
+ <Expanded>
+ magic.tag == magic.tag
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tests can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="thrown std::strings are translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ Why would you throw a std::string?
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on const wchar_t const pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on const wchar_t pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on wchar_t const pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on wchar_t returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum class w/operator&lt;&lt;)" tags="[enum][enumClass][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "E2/V0"
+ </Original>
+ <Expanded>
+ "E2/V0" == "E2/V0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "E2/V1"
+ </Original>
+ <Expanded>
+ "E2/V1" == "E2/V1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e3) == "Unknown enum value 10"
+ </Original>
+ <Expanded>
+ "Unknown enum value 10"
+==
+"Unknown enum value 10"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum class)" tags="[enum][enumClass][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "1"
+ </Original>
+ <Expanded>
+ "1" == "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum w/operator&lt;&lt;)" tags="[enum][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "E2{0}"
+ </Original>
+ <Expanded>
+ "E2{0}" == "E2{0}"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "E2{1}"
+ </Original>
+ <Expanded>
+ "E2{1}" == "E2{1}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum)" tags="[enum][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "1"
+ </Original>
+ <Expanded>
+ "1" == "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ }" == ::Catch::Detail::stringify(type{})
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ }" == ::Catch::Detail::stringify(value)
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;float,int>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "1.5f" == ::Catch::Detail::stringify(float(1.5))
+ </Original>
+ <Expanded>
+ "1.5f" == "1.5f"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0})
+ </Original>
+ <Expanded>
+ "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;int>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ 0 }" == ::Catch::Detail::stringify(type{0})
+ </Original>
+ <Expanded>
+ "{ 0 }" == "{ 0 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;string,string>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"})
+ </Original>
+ <Expanded>
+ "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value)
+ </Original>
+ <Expanded>
+ "{ { 42 }, { }, 1.5f }"
+==
+"{ { 42 }, { }, 1.5f }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="uniform samples" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.point == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.upper_bound == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.lower_bound == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.confidence_interval == 0.95
+ </Original>
+ <Expanded>
+ 0.94999999999999996 == 0.94999999999999996
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="uniform_integer_distribution can return the bounds" tags="[distribution][rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ dist.a() == -10
+ </Original>
+ <Expanded>
+ -10 == -10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ dist.b() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="unique_ptr reimplementation: basic functionality" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="Default constructed unique_ptr is empty" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take ownership of allocation" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == naked_ptr
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Section name="Plain reset deallocates" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take ownership of allocation" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == naked_ptr
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Section name="Reset replaces ownership" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Release releases ownership" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Move constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr1)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr2
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Move assignment" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr2)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr1
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr1 == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="free swap" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr1 == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vec&lt;vec&lt;string,alloc>> -> toString" tags="[toString][vector,allocator]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(v) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }"
+ </Original>
+ <Expanded>
+ "{ { "hello" }, { "world" } }"
+==
+"{ { "hello" }, { "world" } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;bool> -> toString" tags="[containers][toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ true }"
+ </Original>
+ <Expanded>
+ "{ true }" == "{ true }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ true, false }"
+ </Original>
+ <Expanded>
+ "{ true, false }" == "{ true, false }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;int,allocator> -> toString" tags="[toString][vector,allocator]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;int> -> toString" tags="[toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;string> -> toString" tags="[toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ \"hello\" }"
+ </Original>
+ <Expanded>
+ "{ "hello" }" == "{ "hello" }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }"
+ </Original>
+ <Expanded>
+ "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vectors can be sized and resized" tags="[vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="warmup" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count()
+ </Original>
+ <Expanded>
+ 160000000 (0x<hex digits>) > 100
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ (end - start) > Catch::Benchmark::Detail::warmup_time
+ </Original>
+ <Expanded>
+ 310016000 ns > 100 ms
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="weighted_average_quantile" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ q1 == 14.5
+ </Original>
+ <Expanded>
+ 14.5 == 14.5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ med == 18.
+ </Original>
+ <Expanded>
+ 18.0 == 18.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ q3 == 23.
+ </Original>
+ <Expanded>
+ 23.0 == 23.0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="xmlentitycheck" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <OverallResults successes="2087" failures="147" expectedFailures="35" skips="12"/>
+ <OverallResultsCases successes="313" failures="86" expectedFailures="14" skips="6"/>
+</Catch2TestRun>
diff --git a/tests/SelfTest/Baselines/xml.sw.multi.approved.txt b/tests/SelfTest/Baselines/xml.sw.multi.approved.txt
new file mode 100644
index 0000000..7f3b498
--- /dev/null
+++ b/tests/SelfTest/Baselines/xml.sw.multi.approved.txt
@@ -0,0 +1,21975 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Catch2TestRun name="<exe-name>" rng-seed="1" xml-format-version="3" catch2-version="<version>" filters="&quot;*&quot; ~[!nonportable] ~[!benchmark] ~[approvals]">
+ <TestCase name="# A test name that starts with a #" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1027: Bitfields can be captured" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ y.v == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ 0 == y.v
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1147" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 == t2
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 != t2
+ </Original>
+ <Expanded>
+ {?} != {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 &lt; t2
+ </Original>
+ <Expanded>
+ {?} &lt; {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 > t2
+ </Original>
+ <Expanded>
+ {?} > {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 &lt;= t2
+ </Original>
+ <Expanded>
+ {?} &lt;= {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ t1 >= t2
+ </Original>
+ <Expanded>
+ {?} >= {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1175 - Hidden Test" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1238" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ uarr := "123"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ sarr := "456"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::memcmp(uarr, "123", sizeof(uarr)) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ uarr := "123"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ sarr := "456"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::memcmp(sarr, "456", sizeof(sarr)) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1245" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1319: Sections can have description (even if it is not saved" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Section name="SectionName" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1403" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ h1 == h2
+ </Original>
+ <Expanded>
+ [1403 helper] == [1403 helper]
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1455 - INFO and WARN can start with a linebreak" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+
+This info message starts with a linebreak
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+
+This warning message starts with a linebreak
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="#1514: stderr/stdout is not captured in tests aborted by an exception" tags="[.][output-capture][regression]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ 1514
+ </Failure>
+ <OverallResult success="false" skips="0">
+ <StdOut>
+This would not be caught previously
+ </StdOut>
+ <StdErr>
+Nor would this
+ </StdErr>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="#1548" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ std::is_same&lt;TypeList&lt;int>, TypeList&lt;int>>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1905 -- test spec parser properly clears internal state between compound tests" tags="[command-line][test-spec]" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase("spec . char"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase("spec , char"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ !(spec.matches(*fakeTestCase(R"(spec \, char)")))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1912 -- test spec parser handles escaping" tags="[command-line][test-spec]" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Section name="Various parentheses" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec {a} char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec [a] char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]")))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="backslash in test name" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpec.tests.cpp" >
+ <Original>
+ spec.matches(*fakeTestCase(R"(spec \ char)"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" tags="[generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ counter &lt; 7
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ counter &lt; 7
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1913 - GENERATEs can share a line" tags="[generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 1 != 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 1 != 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 2 != 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i != j
+ </Original>
+ <Expanded>
+ 2 != 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - GENERATE after a section" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - Section followed by flat generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ 1
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - flat generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - mixed sections and generates" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 1
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="A" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 3
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <Section name="B" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 5
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ i := 2
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ j := 4
+ </Info>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ k := 6
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1938 - nested generate" tags="[.][generators][regression]" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ m
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ n
+ </Original>
+ <Expanded>
+ 3
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0" tags="[.][compilation][regression]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2152 - ULP checks between differently signed values were wrong - double" tags="[floating-point][matchers][ulp]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
+ </Original>
+ <Expanded>
+ 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2152 - ULP checks between differently signed values were wrong - float" tags="[floating-point][matchers][ulp]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, WithinULP( -smallest_non_zero, 2 )
+ </Original>
+ <Expanded>
+ 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ smallest_non_zero, !WithinULP( -smallest_non_zero, 1 )
+ </Original>
+ <Expanded>
+ 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#2615 - Throwing in constructor generator fails test case but does not abort" tags="[!shouldfail][generators][regression]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ failure to init
+ </Exception>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#748 - captures with unexpected exceptions" tags="[!shouldfail][!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="outside assertions" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="inside REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Expression success="false" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="inside REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ answer := 42
+ </Info>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#809" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ 42 == f
+ </Original>
+ <Expanded>
+ 42 == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#833" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ a == t
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ a == t
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(true)
+ </Original>
+ <Expanded>
+ throws_int(true)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(true), int
+ </Original>
+ <Expanded>
+ throws_int(true), int
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ throws_int(false)
+ </Original>
+ <Expanded>
+ throws_int(false)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ "aaa", Catch::Matchers::EndsWith("aaa")
+ </Original>
+ <Expanded>
+ "aaa" ends with: "aaa"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ templated_tests&lt;int>(3)
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#835 -- errno should not be touched by Catch2" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ f() == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ errno_after == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#872" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ dummy := 0
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ x == 4
+ </Original>
+ <Expanded>
+ {?} == 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="#961 -- Dynamically created sections should all be reported" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Looped section 0" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 1" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 2" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 3" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Looped section 4" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="'Not' checks that should fail" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ false != false
+ </Original>
+ <Expanded>
+ false != false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ true != true
+ </Original>
+ <Expanded>
+ true != true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !true
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(true)
+ </Original>
+ <Expanded>
+ !true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !trueValue
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(trueValue)
+ </Original>
+ <Expanded>
+ !true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 1)
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 1)
+ </Original>
+ <Expanded>
+ !(1 == 1)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="'Not' checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ false == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ true == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !false
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(false)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !falseValue
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(falseValue)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 2)
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ !(1 == 2)
+ </Original>
+ <Expanded>
+ !(1 == 2)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="(unimplemented) static bools can be evaluated" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Section name="compare to true" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;true>::value == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true == is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="compare to false" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;false>::value == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ false == is_true&lt;false>::value
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="negation" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !is_true&lt;false>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="double negation" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !!is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="direct" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ is_true&lt;true>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(is_true&lt;false>::value)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="3x3x3 ints" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 1 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 1 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 2 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 2 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 4 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 5 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; y
+ </Original>
+ <Expanded>
+ 3 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ y &lt; z
+ </Original>
+ <Expanded>
+ 6 &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ x &lt; z
+ </Original>
+ <Expanded>
+ 3 &lt; 9
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A METHOD_AS_TEST_CASE based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ s == "world"
+ </Original>
+ <Expanded>
+ "hello" == "world"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A METHOD_AS_TEST_CASE based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ s == "hello"
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;float>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo&lt;int>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;float>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector&lt;int>" tags="[.][class][failing][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 1
+ </Original>
+ <Expanded>
+ 0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;float>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo&lt;int>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;float>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector&lt;int>" tags="[class][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>::m_a.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;float, 6>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 6 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - Template_Foo_2&lt;int, 2>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;float, 6>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 6 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array&lt;int, 2>" tags="[.][class][failing][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() &lt; 2
+ </Original>
+ <Expanded>
+ 2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;float,6>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 6 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - Template_Foo_2&lt;int,2>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 2 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;float,6>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 6 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::array&lt;int,2>" tags="[class][nttp][product][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture_2&lt;TestType>{}.m_a.size() >= 2
+ </Original>
+ <Expanded>
+ 2 >= 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - double" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1.0 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - float" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1.0f == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that fails - int" tags="[.][class][failing][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0f == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int" tags="[class][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 3 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6" tags="[.][class][failing][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value == 0
+ </Original>
+ <Expanded>
+ 6 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6" tags="[class][nttp][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Nttp_Fixture&lt;V>::value > 0
+ </Original>
+ <Expanded>
+ 6 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_METHOD based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_METHOD based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that fails" tags="[.][class][failing]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Section name="First partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a++ == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Second partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A TEST_CASE_PERSISTENT_FIXTURE based test run that succeeds" tags="[class]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Section name="First partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a++ == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Second partial run" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - Foo&lt;float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - Foo&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - std::vector&lt;float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case - std::vector&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - Bar&lt;float, 42>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 42 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - Bar&lt;int, 9>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 9 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - std::array&lt;float, 42>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 42 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A Template product test case with array signature - std::array&lt;int, 9>" tags="[nttp][product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ x.size() > 0
+ </Original>
+ <Expanded>
+ 9 > 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A comparison that uses literals instead of the normal constructor" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.23_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.22_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ -d == -1.23_a
+ </Original>
+ <Expanded>
+ -1.22999999999999998
+==
+Approx( -1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.2_a .epsilon(.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.19999999999999996 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.2_a .epsilon(.001)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.19999999999999996 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1_a .epsilon(.3)
+ </Original>
+ <Expanded>
+ 1.22999999999999998 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="A couple of nested sections followed by a failure" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Outer" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="Inner" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ to infinity and beyond
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="A failing expression with a non streamable type is still captured" tags="[.][failing][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ &amp;o1 == &amp;o2
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ o1 == o2
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Absolute margin" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 != Approx(100.0)
+ </Original>
+ <Expanded>
+ 104.0 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 == Approx(100.0).margin(5)
+ </Original>
+ <Expanded>
+ 104.0 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 == Approx(100.0).margin(4)
+ </Original>
+ <Expanded>
+ 104.0 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 104.0 != Approx(100.0).margin(3)
+ </Original>
+ <Expanded>
+ 104.0 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 100.3 != Approx(100.0)
+ </Original>
+ <Expanded>
+ 100.29999999999999716 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 100.3 == Approx(100.0).margin(0.5)
+ </Original>
+ <Expanded>
+ 100.29999999999999716 == Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="An empty test with no assertions" tags="[empty]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="An expression with side-effects should only be evaluated once" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ i++ == 7
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ i++ == 8
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="An unchecked exception reports the line of the last assertion" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ 1 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Anonymous test case 1" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approx setters validate their arguments" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(0)
+ </Original>
+ <Expanded>
+ Approx(0).margin(0)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(1234656)
+ </Original>
+ <Expanded>
+ Approx(0).margin(1234656)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).margin(-2), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).margin(-2), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(0)
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(0)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(1)
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(1)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(-0.001), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(-0.001), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(0).epsilon(1.0001), std::domain_error
+ </Original>
+ <Expanded>
+ Approx(0).epsilon(1.0001), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approx with exactly-representable margin" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.25f == Approx(0.0f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.25f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.0f == Approx(0.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.0f == Approx( 0.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.5f == Approx(0.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 0.5f == Approx( 0.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 245.0f == Approx(245.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 245.0f == Approx( 245.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 245.5f == Approx(245.25f).margin(0.25f)
+ </Original>
+ <Expanded>
+ 245.5f == Approx( 245.25 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate PI" tags="[Approx][PI]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 )
+ </Original>
+ <Expanded>
+ 3.14285714285714279
+==
+Approx( 3.14100000000000001 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 )
+ </Original>
+ <Expanded>
+ 3.14285714285714279
+!=
+Approx( 3.14100000000000001 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.231 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.23100000000000009 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == Approx( 1.231 ).epsilon( 0.1 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.23100000000000009 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with floats" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.23f == Approx( 1.23f )
+ </Original>
+ <Expanded>
+ 1.230000019f
+==
+Approx( 1.23000001907348633 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0.0f == Approx( 0.0f )
+ </Original>
+ <Expanded>
+ 0.0f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with ints" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1 == Approx( 1 )
+ </Original>
+ <Expanded>
+ 1 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( 0 )
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Approximate comparisons with mixed numeric types" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.0f == Approx( 1 )
+ </Original>
+ <Expanded>
+ 1.0f == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( dZero)
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 0 == Approx( dSmall ).margin( 0.001 )
+ </Original>
+ <Expanded>
+ 0 == Approx( 0.00001 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 1.234f == Approx( dMedium )
+ </Original>
+ <Expanded>
+ 1.233999968f
+==
+Approx( 1.23399999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ dMedium == Approx( 1.234f )
+ </Original>
+ <Expanded>
+ 1.23399999999999999
+==
+Approx( 1.23399996757507324 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Arbitrary predicate matcher" tags="[generic][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Function pointer" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, Predicate&lt;int>( alwaysTrue, "always true" )
+ </Original>
+ <Expanded>
+ 1 matches predicate: "always true"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !Predicate&lt;int>( alwaysFalse, "always false" )
+ </Original>
+ <Expanded>
+ 1 not matches predicate: "always false"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Lambdas + different type" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "Hello olleH", Predicate&lt;std::string>( []( std::string const&amp; str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" )
+ </Original>
+ <Expanded>
+ "Hello olleH" matches predicate: "First and last character should be equal"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "This wouldn't pass", !Predicate&lt;std::string>( []( std::string const&amp; str ) -> bool { return str.front() == str.back(); } )
+ </Original>
+ <Expanded>
+ "This wouldn't pass" not matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Assertion macros support bit operators and bool conversions" tags="[bitops][compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ lhs | rhs
+ </Original>
+ <Expanded>
+ Val: 1 | Val: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ !(lhs &amp; rhs)
+ </Original>
+ <Expanded>
+ !(Val: 1 &amp; Val: 2)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ HasBitOperators{ 1 } &amp; HasBitOperators{ 1 }
+ </Original>
+ <Expanded>
+ Val: 1 &amp; Val: 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ lhs ^ rhs
+ </Original>
+ <Expanded>
+ Val: 1 ^ Val: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ !(lhs ^ lhs)
+ </Original>
+ <Expanded>
+ !(Val: 1 ^ Val: 1)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="A section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="Another section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="A section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="Another other section" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Basic use of the Contains range matcher" tags="[contains][matchers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Different argument ranges, same element type, default comparison" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(1)
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ b, Contains(1)
+ </Original>
+ <Expanded>
+ { 0, 1, 2 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ c, !Contains(1)
+ </Original>
+ <Expanded>
+ { 4, 5, 6 } not contains element 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different argument ranges, same element type, custom comparison" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ b, Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 0, 1, 2 } contains element 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ c, !Contains(0, close_enough)
+ </Original>
+ <Expanded>
+ { 4, 5, 6 } not contains element 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different element type, custom comparisons" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, Contains(4, [](auto&amp;&amp; lhs, size_t sz) { return lhs.size() == sz; })
+ </Original>
+ <Expanded>
+ { "abc", "abcd", "abcde" } contains element 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Can handle type that requires ADL-found free function begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(1)
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } contains element 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, !Contains(8)
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not contains element 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Initialization with move only types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(MoveOnlyTestElement{ 2 })
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } contains element 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, !Contains(MoveOnlyTestElement{ 9 })
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not contains element 9
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Matching using matcher" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5))
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Basic use of the Empty range matcher" tags="[empty][matchers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Simple, std-provided containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_array, IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, !IsEmpty()
+ </Original>
+ <Expanded>
+ { 0.0 } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vec, !IsEmpty()
+ </Original>
+ <Expanded>
+ { 'a', 'b', 'c' } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ inner_lists_are_empty, !IsEmpty()
+ </Original>
+ <Expanded>
+ { { } } not is empty
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ inner_lists_are_empty.front(), IsEmpty()
+ </Original>
+ <Expanded>
+ { } is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type with empty" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ has_empty{}, !IsEmpty()
+ </Original>
+ <Expanded>
+ {?} not is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found empty free function" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ unrelated::ADL_empty{}, IsEmpty()
+ </Original>
+ <Expanded>
+ {?} is empty
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE can deal with complex expressions" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a := 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ b := 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ c := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a + b := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a+b := 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ c > b := true
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ a == 1 := true
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE can deal with complex expressions involving commas" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[0, 1, 2] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[(0, 1)] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ custom_index_op&lt;int>{1, 2, 3}[0] := 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (helper_1436&lt;int, int>{12, -12}) := { 12, -12 }
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (helper_1436&lt;int, int>(-12, 12)) := { -12, 12 }
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (1, 2) := 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ (2, 3) := 3
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CAPTURE parses string and character constants" tags="[capture][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ("comma, in string", "escaped, \", ") := "escaped, ", "
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "single quote in string,'," := "single quote in string,',"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "some escapes, \\,\\\\" := "some escapes, \,\\"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ "some, ), unmatched, } prenheses {[&lt;" := "some, ), unmatched, } prenheses {[&lt;"
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '"' := '"'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '\'' := '''
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ',' := ','
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '}' := '}'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ ')' := ')'
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '(' := '('
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ '{' := '{'
+ </Info>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Capture and info messages" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Capture should stringify like assertions" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ i := 2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Info should NOT stringify the way assertions do" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CaseInsensitiveEqualsTo is case insensitive" tags="[comparisons][string-case]" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Section name="Degenerate cases" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "", "" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "", "a" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Plain comparisons" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "a", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "a", "A" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "A", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ eq( "A", "A" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "a", "b" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(eq( "a", "B" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="CaseInsensitiveLess is case insensitive" tags="[comparisons][string-case]" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Section name="Degenerate cases" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "", "a" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(lt( "a", "a" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ !(lt( "", "" ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Plain comparisons" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "a", "b" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "a", "B" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "A", "b" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Details.tests.cpp" >
+ <Original>
+ lt( "A", "B" )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Character pretty printing" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Specifically escaped" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\t') == "'\\t'"
+ </Original>
+ <Expanded>
+ "'\t'" == "'\t'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\n') == "'\\n'"
+ </Original>
+ <Expanded>
+ "'\n'" == "'\n'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\r') == "'\\r'"
+ </Original>
+ <Expanded>
+ "'\r'" == "'\r'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify('\f') == "'\\f'"
+ </Original>
+ <Expanded>
+ "'\f'" == "'\f'"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="General chars" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( ' ' ) == "' '"
+ </Original>
+ <Expanded>
+ "' '" == "' '"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( 'A' ) == "'A'"
+ </Original>
+ <Expanded>
+ "'A'" == "'A'"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( 'z' ) == "'z'"
+ </Original>
+ <Expanded>
+ "'z'" == "'z'"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Low ASCII" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( '\0' ) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( static_cast&lt;char>(2) ) == "2"
+ </Original>
+ <Expanded>
+ "2" == "2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( static_cast&lt;char>(5) ) == "5"
+ </Original>
+ <Expanded>
+ "5" == "5"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Arg does not crash on incomplete input" tags="[arg][clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ result.type() == Catch::Clara::Detail::ResultType::Ok
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parsed.type() == Catch::Clara::ParseResultType::NoMatch
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parsed.remainingTokens().count() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Arg supports single-arg parse the way Opt does" tags="[arg][clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ name == "foo"
+ </Original>
+ <Expanded>
+ "foo" == "foo"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Clara::Opt supports accept-many lambdas" tags="[clara][opt]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Section name="Parsing fails on multiple options without accept_many" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ !(parse_result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Parsing succeeds on multiple options with accept_many" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ parse_result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <Original>
+ res == std::vector&lt;std::string>{ "aaa", "bbb" }
+ </Original>
+ <Expanded>
+ { "aaa", "bbb" } == { "aaa", "bbb" }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="ColourGuard behaviour" tags="[console-colours]" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Section name="ColourGuard is disengaged by default" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ColourGuard is engaged by op&lt;&lt;" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n"
+ </Original>
+ <Expanded>
+ "1
+Using code: 2
+2
+Using code: 0
+3
+"
+==
+"1
+Using code: 2
+2
+Using code: 0
+3
+"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ColourGuard can be engaged explicitly" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/ColourImpl.tests.cpp" >
+ <Original>
+ streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n"
+ </Original>
+ <Expanded>
+ "Using code: 2
+A
+B
+Using code: 0
+C
+"
+==
+"Using code: 2
+A
+B
+Using code: 0
+C
+"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchAllOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() &amp;&amp; MatcherB() ) &amp;&amp; MatcherC()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() &amp;&amp; ( MatcherB() &amp;&amp; MatcherC() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() &amp;&amp; MatcherB() ) &amp;&amp; ( MatcherC() &amp;&amp; MatcherD() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T) 1 and equals: true )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchAnyOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() || MatcherB() ) || MatcherC()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || ( MatcherB() || MatcherC() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() )
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1 or equals: true )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining MatchNotOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0, !MatcherA()
+ </Original>
+ <Expanded>
+ 0 not equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !!MatcherA()
+ </Original>
+ <Expanded>
+ 1 equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0, !!!MatcherA()
+ </Original>
+ <Expanded>
+ 0 not equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, !!!!MatcherA()
+ </Original>
+ <Expanded>
+ 1 equals: (int) 1 or (string) "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining concrete matchers does not use templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining only templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() &amp;&amp; MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1, MatcherA() || !MatcherB()
+ </Original>
+ <Expanded>
+ 1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining templated and concrete matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ vec, Predicate&lt;std::vector&lt;int>>( []( auto const&amp; v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) &amp;&amp; !EqualsRange( a )
+ </Original>
+ <Expanded>
+ { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, StartsWith( "foo" ) &amp;&amp; EqualsRange( arr ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, StartsWith( "foo" ) &amp;&amp; !EqualsRange( bad_arr ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, EqualsRange( arr ) &amp;&amp; StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, !EqualsRange( bad_arr ) &amp;&amp; StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" )
+ </Original>
+ <Expanded>
+ "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" ) )
+ </Original>
+ <Expanded>
+ "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ str, ( StartsWith( "foo" ) &amp;&amp; EndsWith( "bar" ) ) || EqualsRange( bad_arr )
+ </Original>
+ <Expanded>
+ "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Combining templated matchers" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Commas in various macros are allowed" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Original>
+ <Expanded>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Original>
+ <Expanded>
+ std::vector&lt;constructor_throws>{constructor_throws{}, constructor_throws{}}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Original>
+ <Expanded>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_NOTHROW" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Original>
+ <Expanded>
+ std::vector&lt;int>{1, 2, 3} == std::vector&lt;int>{1, 2, 3}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2, 3})
+ </Original>
+ <Expanded>
+ !({ 1, 2 } == { 1, 2, 3 })
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2, 3})
+ </Original>
+ <Expanded>
+ !({ 1, 2 } == { 1, 2, 3 })
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_NOFAIL" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ std::vector&lt;int>{1, 2} == std::vector&lt;int>{1, 2}
+ </Original>
+ <Expanded>
+ { 1, 2 } == { 1, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparing function pointers" tags="[function pointer][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ a
+ </Original>
+ <Expanded>
+ 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ a == &amp;foo
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparison ops" tags="[rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ SimplePcg32{} == SimplePcg32{}
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ SimplePcg32{ 0 } != SimplePcg32{}
+ </Original>
+ <Expanded>
+ {?} != {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ !(SimplePcg32{ 1 } == SimplePcg32{ 2 })
+ </Original>
+ <Expanded>
+ !({?} == {?})
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ !(SimplePcg32{ 1 } != SimplePcg32{ 1 })
+ </Original>
+ <Expanded>
+ !({?} != {?})
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparison with explicitly convertible types" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td == Approx(10.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) == Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(10.0) == td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) == StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td != Approx(11.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) != Approx( 11.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(11.0) != td
+ </Original>
+ <Expanded>
+ Approx( 11.0 ) != StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td &lt;= Approx(10.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) &lt;= Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td &lt;= Approx(11.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) &lt;= Approx( 11.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(10.0) &lt;= td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) &lt;= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(9.0) &lt;= td
+ </Original>
+ <Expanded>
+ Approx( 9.0 ) &lt;= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td >= Approx(9.0)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) >= Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ td >= Approx(td)
+ </Original>
+ <Expanded>
+ StrongDoubleTypedef(10) >= Approx( 10.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(td) >= td
+ </Original>
+ <Expanded>
+ Approx( 10.0 ) >= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx(11.0) >= td
+ </Original>
+ <Expanded>
+ Approx( 11.0 ) >= StrongDoubleTypedef(10)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons between ints where one side is computed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 54 == 6*9
+ </Original>
+ <Expanded>
+ 54 == 54
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons between unsigned ints and negative signed ints match c++ standard behaviour" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( -1 > 2u )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ -1 > 2u
+ </Original>
+ <Expanded>
+ -1 > 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( 2u &lt; -1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 2u &lt; -1
+ </Original>
+ <Expanded>
+ 2 &lt; -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ( minInt > 2u )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ minInt > 2u
+ </Original>
+ <Expanded>
+ -2147483648 > 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Comparisons with int literals don't warn when mixing signed/ unsigned" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ i == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ui == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ l == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ ul == 4
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ c == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ uc == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 1 == i
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 2 == ui
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 3 == l
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 4 == ul
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 5 == c
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 6 == uc
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ (std::numeric_limits&lt;uint32_t>::max)() > ul
+ </Original>
+ <Expanded>
+ 4294967295 (0x<hex digits>) > 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Composed generic matchers shortcircuit" tags="[composed][generic][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="MatchAllOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !(matcher.match( 1 ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="MatchAnyOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ matcher.match( 1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Composed matchers shortcircuit" tags="[composed][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="MatchAllOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !(matcher.match( 1 ))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="MatchAnyOf" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ matcher.match( 1 )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ first.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ !second.matchCalled
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Contains string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "not there" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "STRING" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "STRING"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Copy and then generate a range" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from var and iterators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From a temporary container" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ elem % 2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Final validation" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ call_count == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ make_data().size() == test_count
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Cout stream properly declares it writes to stdout" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "-" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom exceptions can be translated when testing for nothrow" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ throwCustom()
+ </Original>
+ <Expanded>
+ throwCustom()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception - not std
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom exceptions can be translated when testing for throwing as something else" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ throwCustom(), std::exception
+ </Original>
+ <Expanded>
+ throwCustom(), std::exception
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception - not std
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Custom std-exceptions can be custom translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom std exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Default scale is invisible to comparison" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 101.000001 != Approx(100).epsilon(0.01)
+ </Original>
+ <Expanded>
+ 101.00000099999999748 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ std::pow(10, -5) != Approx(std::pow(10, -7))
+ </Original>
+ <Expanded>
+ 0.00001 != Approx( 0.0000001 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Directly creating an EnumInfo" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(0) == "Value1"
+ </Original>
+ <Expanded>
+ Value1 == "Value1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(1) == "Value2"
+ </Original>
+ <Expanded>
+ Value2 == "Value2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ enumInfo->lookup(3) == "{** unexpected enum value **}"
+ </Original>
+ <Expanded>
+ {** unexpected enum value **}
+==
+"{** unexpected enum value **}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Empty generators can SKIP in constructor" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ This generator is empty
+ </Skip>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="Empty stream name opens cout stream" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="EndsWith string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "Substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "Substring"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "this" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Enums can quickly have stringification enabled using CATCH_REGISTER_ENUM" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value1 ) == "Value1"
+ </Original>
+ <Expanded>
+ "Value1" == "Value1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value2 ) == "Value2"
+ </Original>
+ <Expanded>
+ "Value2" == "Value2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value3 ) == "Value3"
+ </Original>
+ <Expanded>
+ "Value3" == "Value3"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}"
+ </Original>
+ <Expanded>
+ "{** unexpected enum value **}"
+==
+"{** unexpected enum value **}"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( ec3 ) == "Value2"
+ </Original>
+ <Expanded>
+ "Value2" == "Value2"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Enums in namespaces can quickly have stringification enabled using CATCH_REGISTER_ENUM" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( Bikeshed::Colours::Red ) == "Red"
+ </Original>
+ <Expanded>
+ "Red" == "Red"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ stringify( Bikeshed::Colours::Blue ) == "Blue"
+ </Original>
+ <Expanded>
+ "Blue" == "Blue"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Epsilon only applies to Approx's value" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ 101.01 != Approx(100).epsilon(0.01)
+ </Original>
+ <Expanded>
+ 101.01000000000000512 != Approx( 100.0 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equality checks that should fail" tags="[!mayfail][.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 6
+ </Original>
+ <Expanded>
+ 7 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 8
+ </Original>
+ <Expanded>
+ 7 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 0
+ </Original>
+ <Expanded>
+ 7 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.11f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+==
+Approx( 9.10999965667724609 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.0f )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 1 )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 0 )
+ </Original>
+ <Expanded>
+ 9.100000381f == Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi == Approx( 3.1415 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+==
+Approx( 3.14150000000000018 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "goodbye"
+ </Original>
+ <Expanded>
+ "hello" == "goodbye"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hell"
+ </Original>
+ <Expanded>
+ "hello" == "hell"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hello1"
+ </Original>
+ <Expanded>
+ "hello" == "hello1"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() == 6
+ </Original>
+ <Expanded>
+ 5 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ x == Approx( 1.301 )
+ </Original>
+ <Expanded>
+ 1.30000000000000027
+==
+Approx( 1.30099999999999993 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equality checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven == 7
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one == Approx( 9.1f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+==
+Approx( 9.10000038146972656 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi == Approx( 3.1415926535 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+==
+Approx( 3.14159265350000005 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello == "hello"
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ "hello" == data.str_hello
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ x == Approx( 1.3 )
+ </Original>
+ <Expanded>
+ 1.30000000000000027
+==
+Approx( 1.30000000000000004 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equals" tags="[matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Equals string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "this string contains 'ABC' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" equals: "something else" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified" tags="[exception][toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method"
+ </Original>
+ <Expanded>
+ "This exception has overridden what() method"
+==
+"This exception has overridden what() method"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(OperatorException{}) == "OperatorException"
+ </Original>
+ <Expanded>
+ "OperatorException" == "OperatorException"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException"
+ </Original>
+ <Expanded>
+ "StringMakerException"
+==
+"StringMakerException"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception matchers that fail" tags="[!throws][.][exceptions][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="No exception" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ doesNotThrow(), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type mismatch" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ Unknown exception
+ </Exception>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ Unknown exception
+ </Exception>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contents are wrong" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception matchers that succeed" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 }
+ </Original>
+ <Expanded>
+ SpecialException::what special exception has value of 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception message can be matched" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "starts with: "Derived""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "ends with: "::what""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) )
+ </Original>
+ <Expanded>
+ DerivedException::what matches "not starts with: "::what""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) )
+ </Original>
+ <Expanded>
+ SpecialException::what matches "starts with: "Special""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exception messages can be tested for" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="exact match" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "expected exception"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="different case" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="wildcarded" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), StartsWith( "expected" )
+ </Original>
+ <Expanded>
+ "expected exception" starts with: "expected"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), EndsWith( "exception" )
+ </Original>
+ <Expanded>
+ "expected exception" ends with: "exception"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), ContainsSubstring( "except" )
+ </Original>
+ <Expanded>
+ "expected exception" contains: "except"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "expected exception" contains: "except" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Exceptions matchers" tags="[!throws][exceptions][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, Message( "DerivedException::what" )
+ </Original>
+ <Expanded>
+ DerivedException::what exception message matches "DerivedException::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsDerivedException(), DerivedException, !Message( "derivedexception::what" )
+ </Original>
+ <Expanded>
+ DerivedException::what not exception message matches "derivedexception::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" )
+ </Original>
+ <Expanded>
+ SpecialException::what not exception message matches "DerivedException::what"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_MATCHES" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" )
+ </Original>
+ <Expanded>
+ SpecialException::what exception message matches "SpecialException::what"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Expected exceptions that don't throw or unexpected exceptions fail the test" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), std::string
+ </Original>
+ <Expanded>
+ thisThrows(), std::string
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <Expression success="false" type="CHECK_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisDoesntThrow(), std::domain_error
+ </Original>
+ <Expanded>
+ thisDoesntThrow(), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL aborts the test" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This is a failure
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="FAIL_CHECK does not abort the test" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This is a failure
+ </Failure>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This message appears in the output
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Factorials are computed" tags="[factorial]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(0) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(1) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(2) == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(3) == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ Factorial(10) == 3628800
+ </Original>
+ <Expanded>
+ 3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Filter generator throws exception for empty generator" tags="[generators]" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Floating point matchers: double" tags="[floating-point][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Relative" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., WithinRel( 11.1, 0.1 )
+ </Original>
+ <Expanded>
+ 10.0 and 11.09999999999999964 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., !WithinRel( 11.2, 0.1 )
+ </Original>
+ <Expanded>
+ 10.0 not and 11.19999999999999929 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !WithinRel( 0., 0.99 )
+ </Original>
+ <Expanded>
+ 1.0 not and 0.0 are within 99% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0., WithinRel( 0. )
+ </Original>
+ <Expanded>
+ -0.0 and 0.0 are within 2.22045e-12% of each other
+ </Expanded>
+ </Expression>
+ <Section name="Some subnormal values" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, WithinRel( v2 )
+ </Original>
+ <Expanded>
+ 0.0 and 0.0 are within 2.22045e-12% of each other
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Margin" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., WithinAbs( 1., 1 )
+ </Original>
+ <Expanded>
+ 0.0 is within 1.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., !WithinAbs( 1., 0.99 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 0.98999999999999999 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., !WithinAbs( 1., 0.99 )
+ </Original>
+ <Expanded>
+ 0.0 not is within 0.98999999999999999 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 11., !WithinAbs( 10., 0.5 )
+ </Original>
+ <Expanded>
+ 11.0 not is within 0.5 of 10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10., !WithinAbs( 11., 0.5 )
+ </Original>
+ <Expanded>
+ 10.0 not is within 0.5 of 11.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10., WithinAbs( -10., 0.5 )
+ </Original>
+ <Expanded>
+ -10.0 is within 0.5 of -10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10., WithinAbs( -9.6, 0.5 )
+ </Original>
+ <Expanded>
+ -10.0 is within 0.5 of -9.59999999999999964
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ULPs" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ nextafter( 1., 2. ), WithinULP( 1., 1 )
+ </Original>
+ <Expanded>
+ 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0., WithinULP( nextafter( 0., 1. ), 1 )
+ </Original>
+ <Expanded>
+ 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( nextafter( 1., 0. ), 1 )
+ </Original>
+ <Expanded>
+ 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !WithinULP( nextafter( 1., 2. ), 0 )
+ </Original>
+ <Expanded>
+ 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0., WithinULP( 0., 0 )
+ </Original>
+ <Expanded>
+ -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 )
+ </Original>
+ <Expanded>
+ 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 )
+ </Original>
+ <Expanded>
+ 0.0001 ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Constructor validation" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1., 0. )
+ </Original>
+ <Expanded>
+ WithinAbs( 1., 0. )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1., -1. ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinAbs( 1., -1. ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1., 0 )
+ </Original>
+ <Expanded>
+ WithinULP( 1., 0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., 0. )
+ </Original>
+ <Expanded>
+ WithinRel( 1., 0. )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., -0.2 ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1., -0.2 ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1., 1. ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1., 1. ), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="IsNaN" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !IsNaN()
+ </Original>
+ <Expanded>
+ 1.0 not is NaN
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Floating point matchers: float" tags="[floating-point][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Relative" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, WithinRel( 11.1f, 0.1f )
+ </Original>
+ <Expanded>
+ 10.0f and 11.10000038146972656 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, !WithinRel( 11.2f, 0.1f )
+ </Original>
+ <Expanded>
+ 10.0f not and 11.19999980926513672 are within 10% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, !WithinRel( 0.f, 0.99f )
+ </Original>
+ <Expanded>
+ 1.0f not and 0.0 are within 99% of each other
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0.f, WithinRel( 0.f )
+ </Original>
+ <Expanded>
+ -0.0f and 0.0 are within 0.00119209% of each other
+ </Expanded>
+ </Expression>
+ <Section name="Some subnormal values" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, WithinRel( v2 )
+ </Original>
+ <Expanded>
+ 0.0f and 0.0 are within 0.00119209% of each other
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Margin" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinAbs( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 0.0f is within 1.0 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, !WithinAbs( 1.f, 0.99f )
+ </Original>
+ <Expanded>
+ 0.0f not is within 0.99000000953674316 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, !WithinAbs( 1.f, 0.99f )
+ </Original>
+ <Expanded>
+ 0.0f not is within 0.99000000953674316 of 1.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinAbs( -0.f, 0 )
+ </Original>
+ <Expanded>
+ 0.0f is within 0.0 of -0.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 11.f, !WithinAbs( 10.f, 0.5f )
+ </Original>
+ <Expanded>
+ 11.0f not is within 0.5 of 10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 10.f, !WithinAbs( 11.f, 0.5f )
+ </Original>
+ <Expanded>
+ 10.0f not is within 0.5 of 11.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10.f, WithinAbs( -10.f, 0.5f )
+ </Original>
+ <Expanded>
+ -10.0f is within 0.5 of -10.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -10.f, WithinAbs( -9.6f, 0.5f )
+ </Original>
+ <Expanded>
+ -10.0f is within 0.5 of -9.60000038146972656
+ </Expanded>
+ </Expression>
+ <OverallResults successes="9" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="ULPs" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -1.f, WithinULP( -1.f, 0 )
+ </Original>
+ <Expanded>
+ -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 )
+ </Original>
+ <Expanded>
+ 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 )
+ </Original>
+ <Expanded>
+ 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 )
+ </Original>
+ <Expanded>
+ 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ -0.f, WithinULP( 0.f, 0 )
+ </Original>
+ <Expanded>
+ -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 )
+ </Original>
+ <Expanded>
+ 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f )
+ </Original>
+ <Expanded>
+ 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Constructor validation" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1.f, 0.f )
+ </Original>
+ <Expanded>
+ WithinAbs( 1.f, 0.f )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinAbs( 1.f, -1.f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinAbs( 1.f, -1.f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1.f, 0 )
+ </Original>
+ <Expanded>
+ WithinULP( 1.f, 0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinULP( 1.f, static_cast&lt;uint64_t>( -1 ) ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinULP( 1.f, static_cast&lt;uint64_t>( -1 ) ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, 0.f )
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, 0.f )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, -0.2f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, -0.2f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ WithinRel( 1.f, 1.f ), std::domain_error
+ </Original>
+ <Expanded>
+ WithinRel( 1.f, 1.f ), std::domain_error
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="IsNaN" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ 1., !IsNaN()
+ </Original>
+ <Expanded>
+ 1.0 not is NaN
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="GENERATE can combine literals and generators" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators -- adapters" tags="[generators][generic]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filtering by predicate" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Throws if there are no matching values" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([] (int) {return false; }, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 1 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 2 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortening a range" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i &lt; 4
+ </Original>
+ <Expanded>
+ 3 &lt; 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Same type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i % 2 == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Transforming elements" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Different deduced type" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ i.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 2 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 2 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeating a generator" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j > 0
+ </Original>
+ <Expanded>
+ 3 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is not divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() &lt; 3
+ </Original>
+ <Expanded>
+ 1 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Number of elements in source is not divisible by chunk size" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() == chunk2.back()
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.front() &lt; 3
+ </Original>
+ <Expanded>
+ 2 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Chunk size of zero" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk2.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Chunking a generator into sized pieces" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="Throws on too small generators" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ chunk(2, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ chunk(2, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators -- simple" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 4 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 8 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -3 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -2 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ j &lt; i
+ </Original>
+ <Expanded>
+ -1 &lt; 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ 4u * i > str.size()
+ </Original>
+ <Expanded>
+ 12 > 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Generators internals" tags="[generators][internals]" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Single value" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 123
+ </Original>
+ <Expanded>
+ 123 == 123
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Preset values" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Generator combinator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Explicitly typed generator sequence" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get().size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "aa"
+ </Original>
+ <Expanded>
+ "aa" == "aa"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "bb"
+ </Original>
+ <Expanded>
+ "bb" == "bb"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == "cc"
+ </Original>
+ <Expanded>
+ "cc" == "cc"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Simple filtering" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Filter out multiple elements at the start and end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Filter generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Throws on construction if it can't get initial element" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter([](int) { return false; }, value(1)), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([](int) { return false; }, value(1)), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+ </Original>
+ <Expanded>
+ filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Take less" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take generator" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Take more" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Map with explicit return type" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2.0
+ </Original>
+ <Expanded>
+ 2.0 == 2.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4.0
+ </Original>
+ <Expanded>
+ 4.0 == 4.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 6.0
+ </Original>
+ <Expanded>
+ 6.0 == 6.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Map with deduced return type" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2.0
+ </Original>
+ <Expanded>
+ 2.0 == 2.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 4.0
+ </Original>
+ <Expanded>
+ 4.0 == 4.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 6.0
+ </Original>
+ <Expanded>
+ 6.0 == 6.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Singular repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Actual repeat" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive auto step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -2
+ </Original>
+ <Expanded>
+ -2 == -2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative auto step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.90000000000000002
+==
+Approx( -0.90000000000000002 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.80000000000000004
+==
+Approx( -0.80000000000000004 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.70000000000000007
+==
+Approx( -0.70000000000000007 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.60000000000000009
+==
+Approx( -0.60000000000000009 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.50000000000000011
+==
+Approx( -0.50000000000000011 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.40000000000000013
+==
+Approx( -0.40000000000000013 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.30000000000000016
+==
+Approx( -0.30000000000000016 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.20000000000000015
+==
+Approx( -0.20000000000000015 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.10000000000000014
+==
+Approx( -0.10000000000000014 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1.38778e-16
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.00000000000000014
+==
+Approx( -0.00000000000000014 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1.38778e-16
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.09999999999999987
+==
+Approx( 0.09999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.19999999999999987
+==
+Approx( 0.19999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.29999999999999988
+==
+Approx( 0.29999999999999988 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.39999999999999991
+==
+Approx( 0.39999999999999991 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.49999999999999989
+==
+Approx( 0.49999999999999989 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.59999999999999987
+==
+Approx( 0.59999999999999987 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.69999999999999984
+==
+Approx( 0.69999999999999984 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.79999999999999982
+==
+Approx( 0.79999999999999982 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.8999999999999998
+==
+Approx( 0.8999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx( rangeEnd )
+ </Original>
+ <Expanded>
+ 0.99999999999999978 == Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="42" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.69999999999999996
+==
+Approx( -0.69999999999999996 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.39999999999999997
+==
+Approx( -0.39999999999999997 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.09999999999999998
+==
+Approx( -0.09999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.20000000000000001
+==
+Approx( 0.20000000000000001 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.5 == Approx( 0.5 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Positive manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Floating Point" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -1.0 == Approx( -1.0 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.69999999999999996
+==
+Approx( -0.69999999999999996 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.39999999999999997
+==
+Approx( -0.39999999999999997 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ -0.09999999999999998
+==
+Approx( -0.09999999999999998 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is -0.1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.20000000000000001
+==
+Approx( 0.20000000000000001 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == Approx(expected)
+ </Original>
+ <Expanded>
+ 0.5 == Approx( 0.5 )
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ Current expected value is 0.5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="13" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Exact" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly over end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Range" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Negative manual step" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Integer" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Section name="Slightly under end" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -4
+ </Original>
+ <Expanded>
+ -4 == -4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.next()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ gen.get() == -7
+ </Original>
+ <Expanded>
+ -7 == -7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/GeneratorsImpl.tests.cpp" >
+ <Original>
+ !(gen.next())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Greater-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ !(d >= Approx( 1.24 ))
+ </Original>
+ <Expanded>
+ !(1.22999999999999998
+>=
+Approx( 1.23999999999999999 ))
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d >= Approx( 1.24 ).epsilon(0.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+>=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashers with different seed produce different hash with same test case" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h1( dummy ) != h2( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+!=
+130711275 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashers with same seed produce same hash" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h1( dummy ) == h2( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashing different test cases produces different result" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Section name="Different test name" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2903002874 (0x<hex digits>)
+!=
+2668622104 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different classname" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2673152918 (0x<hex digits>)
+!=
+3916075712 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Different tags" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy1 ) != h( dummy2 )
+ </Original>
+ <Expanded>
+ 2074929312 (0x<hex digits>)
+!=
+3429949824 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Hashing test case produces same hash across multiple calls" tags="[test-case-hash]" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestCaseInfoHasher.tests.cpp" >
+ <Original>
+ h( dummy ) == h( dummy )
+ </Original>
+ <Expanded>
+ 3422778688 (0x<hex digits>)
+==
+3422778688 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO and UNSCOPED_INFO can stream multiple arguments" tags="[.][failing][info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This info has multiple parts.
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ This unscoped info has multiple parts.
+ </Info>
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Show infos!
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO and WARN do not abort tests" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this is a message
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this is a warning
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO gets logged on failure" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ so should this
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 1
+ </Original>
+ <Expanded>
+ 2 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO gets logged on failure, even if captured before successful assertions" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 1
+ </Original>
+ <Expanded>
+ 2 == 1
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and this, but later
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 0
+ </Original>
+ <Expanded>
+ 2 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message may be logged later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this message should be logged
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and this, but later
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ but not this
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ a == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="INFO is reset for each loop" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 0
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 0
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 0 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 1
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 1 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 2
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 2 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 3
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 3
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 3 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 4
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 4
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 4 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 5
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 5
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 5 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 6
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 6
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 6 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 7
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 7
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 7 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 8
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 8
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 8 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 9
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 9
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 9 &lt; 10
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ current counter 10
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 10
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ i &lt; 10
+ </Original>
+ <Expanded>
+ 10 &lt; 10
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Incomplete AssertionHandler" tags="[!shouldfail][assertion-handler]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ <Original>
+ Dummy
+ </Original>
+ <Expanded>
+ Dummy
+ </Expanded>
+ <Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
+ Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Inequality checks that should fail" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 7
+ </Original>
+ <Expanded>
+ 7 != 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.1f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+!=
+Approx( 9.10000038146972656 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi != Approx( 3.1415926535 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+!=
+Approx( 3.14159265350000005 )
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hello"
+ </Original>
+ <Expanded>
+ "hello" != "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() != 5
+ </Original>
+ <Expanded>
+ 5 != 5
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Inequality checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 6
+ </Original>
+ <Expanded>
+ 7 != 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven != 8
+ </Original>
+ <Expanded>
+ 7 != 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.11f )
+ </Original>
+ <Expanded>
+ 9.100000381f
+!=
+Approx( 9.10999965667724609 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 9.0f )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 9.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 1 )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 1.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one != Approx( 0 )
+ </Original>
+ <Expanded>
+ 9.100000381f != Approx( 0.0 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.double_pi != Approx( 3.1415 )
+ </Original>
+ <Expanded>
+ 3.14159265350000005
+!=
+Approx( 3.14150000000000018 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "goodbye"
+ </Original>
+ <Expanded>
+ "hello" != "goodbye"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hell"
+ </Original>
+ <Expanded>
+ "hello" != "hell"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello != "hello1"
+ </Original>
+ <Expanded>
+ "hello" != "hello1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello.size() != 6
+ </Original>
+ <Expanded>
+ 5 != 6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="JsonWriter" tags="[JSON][JsonWriter]" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Section name="Newly constructed JsonWriter does nothing" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeObject will create an empty pair of braces" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "{\n}"
+ </Original>
+ <Expanded>
+ "{
+}"
+==
+"{
+}"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeObject with key will create an object to write the value" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring( "\"int\": 1," ) &amp;&amp; ContainsSubstring( "\"double\": 1.5," ) &amp;&amp; ContainsSubstring( "\"true\": true," ) &amp;&amp; ContainsSubstring( "\"false\": false," ) &amp;&amp; ContainsSubstring( "\"string\": \"this is a string\"," ) &amp;&amp; ContainsSubstring( "\"array\": [\n 1,\n 2\n ]\n}" )
+ </Original>
+ <Expanded>
+ "{
+ "int": 1,
+ "double": 1.5,
+ "true": true,
+ "false": false,
+ "string": "this is a string",
+ "array": [
+ 1,
+ 2
+ ]
+}" ( contains: ""int": 1," and contains: ""double": 1.5," and contains: ""true": true," and contains: ""false": false," and contains: ""string": "this is a string"," and contains: ""array": [
+ 1,
+ 2
+ ]
+}" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nesting objects" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring( "\"empty_object\": {\n }," ) &amp;&amp; ContainsSubstring( "\"fully_object\": {\n \"key\": 1\n }" )
+ </Original>
+ <Expanded>
+ "{
+ "empty_object": {
+ },
+ "fully_object": {
+ "key": 1
+ }
+}" ( contains: ""empty_object": {
+ }," and contains: ""fully_object": {
+ "key": 1
+ }" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeArray will create an empty pair of braces" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n]"
+ </Original>
+ <Expanded>
+ "[
+]"
+==
+"[
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Calling writeArray creates array to write the values to" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n 1,\n 1.5,\n true,\n false,\n \"this is a string\",\n {\n \"object\": 42\n },\n [\n \"array\",\n 42.5\n ]\n]"
+ </Original>
+ <Expanded>
+ "[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+==
+"[
+ 1,
+ 1.5,
+ true,
+ false,
+ "this is a string",
+ {
+ "object": 42
+ },
+ [
+ "array",
+ 42.5
+ ]
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Moved from JsonObjectWriter shall not insert superfluous brace" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "{\n}"
+ </Original>
+ <Expanded>
+ "{
+}"
+==
+"{
+}"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Moved from JsonArrayWriter shall not insert superfluous bracket" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "[\n]"
+ </Original>
+ <Expanded>
+ "[
+]"
+==
+"[
+]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom class shall be quoted" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ stream.str() == "\"custom\""
+ </Original>
+ <Expanded>
+ ""custom"" == ""custom""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="JsonWriter escapes charaters in strings properly" tags="[JsonWriter]" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Section name="Quote in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\"\""
+ </Original>
+ <Expanded>
+ ""\""" == ""\"""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Backslash in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\\\""
+ </Original>
+ <Expanded>
+ ""\\"" == ""\\""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Forward slash in a string is **not** escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"/\""
+ </Original>
+ <Expanded>
+ ""/"" == ""/""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Backspace in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\b\""
+ </Original>
+ <Expanded>
+ ""\b"" == ""\b""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Formfeed in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\f\""
+ </Original>
+ <Expanded>
+ ""\f"" == ""\f""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="linefeed in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\n\""
+ </Original>
+ <Expanded>
+ ""\n"" == ""\n""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="carriage return in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\r\""
+ </Original>
+ <Expanded>
+ ""\r"" == ""\r""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="tab in a string is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\t\""
+ </Original>
+ <Expanded>
+ ""\t"" == ""\t""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="combination of characters is escaped" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Json.tests.cpp" >
+ <Original>
+ sstream.str() == "\"\\\\/\\t\\r\\n\""
+ </Original>
+ <Expanded>
+ ""\\/\t\r\n"" == ""\\/\t\r\n""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Lambdas in assertions" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <Original>
+ []() { return true; }()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Less-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ !(d &lt;= Approx( 1.22 ))
+ </Original>
+ <Expanded>
+ !(1.22999999999999998
+&lt;=
+Approx( 1.21999999999999997 ))
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d &lt;= Approx( 1.22 ).epsilon(0.1)
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+&lt;=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="ManuallyRegistered" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be (AllOf) composed with the &amp;&amp; operator" tags="[matchers][operator&amp;&amp;][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" ) &amp;&amp; ContainsSubstring( "abc" ) &amp;&amp; ContainsSubstring( "substring" ) &amp;&amp; ContainsSubstring( "contains" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be (AnyOf) composed with the || operator" tags="[matchers][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be composed with both &amp;&amp; and ||" tags="[matchers][operator&amp;&amp;][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be composed with both &amp;&amp; and || - failing" tags="[.][failing][matchers][operator&amp;&amp;][operators][operator||]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) &amp;&amp; ContainsSubstring( "random" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be negated (Not) with the ! operator" tags="[matchers][not][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), !ContainsSubstring( "different" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" not contains: "different"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Matchers can be negated (Not) with the ! operator - failing" tags="[.][failing][matchers][not][operators]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), !ContainsSubstring( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" not contains: "substring"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Mayfail test case with nested sections" tags="[!mayfail]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="1" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="2" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="1" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Section name="2" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Mismatching exception messages failing the test" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "expected exception"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "expected exception"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), "should fail"
+ </Original>
+ <Expanded>
+ "expected exception" equals: "should fail"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Multireporter calls reporters and listeners in correct order" tags="[multi-reporter][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ records == expected
+ </Original>
+ <Expanded>
+ { "Hello", "world", "Goodbye", "world" }
+==
+{ "Hello", "world", "Goodbye", "world" }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Multireporter updates ReporterPreferences properly" tags="[multi-reporter][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Adding listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Adding reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldRedirectStdOut == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ multiReporter.getPreferences().shouldReportAllAssertions == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Nested generators and captured variables" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 3 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 4 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 5 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 6 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ -5 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ -4 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 90 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 91 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 92 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 93 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 94 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 95 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 96 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 97 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 98 > -6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ values > -6
+ </Original>
+ <Expanded>
+ 99 > -6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Nice descriptive name" tags="[.][tag1][tag2][tag3]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Warning filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ This one ran
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Non-std exceptions can be translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ custom exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Objects that evaluated in boolean contexts can be checked" tags="[SafeBool][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ True
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !False
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ !(False)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Optionally static assertions" tags="[compilation]" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Ordering comparison checks that should fail" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 7
+ </Original>
+ <Expanded>
+ 7 > 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 7
+ </Original>
+ <Expanded>
+ 7 &lt; 7
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 8
+ </Original>
+ <Expanded>
+ 7 > 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 6
+ </Original>
+ <Expanded>
+ 7 &lt; 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 0
+ </Original>
+ <Expanded>
+ 7 &lt; 0
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; -1
+ </Original>
+ <Expanded>
+ 7 &lt; -1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 8
+ </Original>
+ <Expanded>
+ 7 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 6
+ </Original>
+ <Expanded>
+ 7 &lt;= 6
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 9
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 9
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 10
+ </Original>
+ <Expanded>
+ 9.100000381f > 10
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 9.2
+ </Original>
+ <Expanded>
+ 9.100000381f > 9.19999999999999929
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hello"
+ </Original>
+ <Expanded>
+ "hello" > "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hello"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hellp"
+ </Original>
+ <Expanded>
+ "hello" > "hellp"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "z"
+ </Original>
+ <Expanded>
+ "hello" > "z"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hellm"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hellm"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "a"
+ </Original>
+ <Expanded>
+ "hello" &lt; "a"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello >= "z"
+ </Original>
+ <Expanded>
+ "hello" >= "z"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt;= "a"
+ </Original>
+ <Expanded>
+ "hello" &lt;= "a"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Ordering comparison checks that should succeed" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt; 8
+ </Original>
+ <Expanded>
+ 7 &lt; 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 6
+ </Original>
+ <Expanded>
+ 7 > 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > 0
+ </Original>
+ <Expanded>
+ 7 > 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven > -1
+ </Original>
+ <Expanded>
+ 7 > -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 7
+ </Original>
+ <Expanded>
+ 7 >= 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven >= 6
+ </Original>
+ <Expanded>
+ 7 >= 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 7
+ </Original>
+ <Expanded>
+ 7 &lt;= 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.int_seven &lt;= 8
+ </Original>
+ <Expanded>
+ 7 &lt;= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one > 9
+ </Original>
+ <Expanded>
+ 9.100000381f > 9
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 10
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.float_nine_point_one &lt; 9.2
+ </Original>
+ <Expanded>
+ 9.100000381f &lt; 9.19999999999999929
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt;= "hello"
+ </Original>
+ <Expanded>
+ "hello" &lt;= "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello >= "hello"
+ </Original>
+ <Expanded>
+ "hello" >= "hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "hellp"
+ </Original>
+ <Expanded>
+ "hello" &lt; "hellp"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello &lt; "zebra"
+ </Original>
+ <Expanded>
+ "hello" &lt; "zebra"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "hellm"
+ </Original>
+ <Expanded>
+ "hello" > "hellm"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ data.str_hello > "a"
+ </Original>
+ <Expanded>
+ "hello" > "a"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Our PCG implementation provides expected results for known seeds" tags="[rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Section name="Default seeded" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4242248763 (0x<hex digits>)
+==
+4242248763 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1867888929 (0x<hex digits>)
+==
+1867888929 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1276619030 (0x<hex digits>)
+==
+1276619030 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1911218783 (0x<hex digits>)
+==
+1911218783 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1827115164 (0x<hex digits>)
+==
+1827115164 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Specific seed" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 1472234645 (0x<hex digits>)
+==
+1472234645 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 868832940 (0x<hex digits>)
+==
+868832940 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 570883446 (0x<hex digits>)
+==
+570883446 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 889299803 (0x<hex digits>)
+==
+889299803 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ rng() == 0x<hex digits>
+ </Original>
+ <Expanded>
+ 4261393167 (0x<hex digits>)
+==
+4261393167 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Output from all sections is reported" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Message from section one
+ </Failure>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Message from section two
+ </Failure>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Overloaded comma or address-of operators are not used" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+ </Original>
+ <Expanded>
+ ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ &amp;EvilMatcher(), EvilAddressOfOperatorUsed
+ </Original>
+ <Expanded>
+ &amp;EvilMatcher(), EvilAddressOfOperatorUsed
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ EvilMatcher() || ( EvilMatcher() &amp;&amp; !EvilMatcher() )
+ </Original>
+ <Expanded>
+ EvilMatcher() || ( EvilMatcher() &amp;&amp; !EvilMatcher() )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ ( EvilMatcher() &amp;&amp; EvilMatcher() ) || !EvilMatcher()
+ </Original>
+ <Expanded>
+ ( EvilMatcher() &amp;&amp; EvilMatcher() ) || !EvilMatcher()
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parse uints" tags="[parse-numbers]" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Section name="proper inputs" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "0" ) == Optional&lt;unsigned int>{ 0 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "100" ) == Optional&lt;unsigned int>{ 100 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "4294967295" ) == Optional&lt;unsigned int>{ 4294967295 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ parseUInt( "0x<hex digits>", 16 ) == Optional&lt;unsigned int>{ 255 }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Bad inputs" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "!!KJHF*#" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "-1" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "4294967296" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "42949672964294967296429496729642949672964294967296" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "2 4" ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Parse.tests.cpp" >
+ <Original>
+ !(parseUInt( "0x<hex digits>", 10 ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsed tags are matched case insensitive" tags="[test-spec][test-spec-parser]" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing sharding-related cli flags" tags="[sharding]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="shard-count" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-count=8" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardCount == 8
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Negative shard count reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" )
+ </Original>
+ <Expanded>
+ "Could not parse '-1' as shard count" contains: "Could not parse '-1' as shard count"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Zero shard count reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Shard count must be positive" )
+ </Original>
+ <Expanded>
+ "Shard count must be positive" contains: "Shard count must be positive"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="shard-index" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-index=2" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardIndex == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Negative shard index reports error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(result)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" )
+ </Original>
+ <Expanded>
+ "Could not parse '-12' as shard index" contains: "Could not parse '-12' as shard index"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shard index 0 is accepted" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--shard-index=0" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shardIndex == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing tags with non-alphabetical characters is pass-through" tags="[test-spec][test-spec-parser]" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[tag with spaces]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.hasFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.getInvalidSpecs().empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ tagString := "[I said "good day" sir!]"
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/TestSpecParser.tests.cpp" >
+ <Original>
+ spec.matches( testCase )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Parsing warnings" tags="[cli][warnings]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="NoAssertions" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "-w", "NoAssertions" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.warnings == WarnAbout::NoAssertions
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="NoTests is no longer supported" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(cli.parse( { "test", "-w", "NoTests" } ))
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Combining multiple warnings" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec )
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Pointers can be compared to null" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p == pNULL
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ p != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ cp != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ cpc != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ returnsNull() == 0
+ </Original>
+ <Expanded>
+ {null string} == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ returnsConstNull() == 0
+ </Original>
+ <Expanded>
+ {null string} == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ 0 != p
+ </Original>
+ <Expanded>
+ 0 != 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Precision of floating point stringification can be set" tags="[floatingPoint][toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Floats" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str1.size() == 3 + 5
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str2.size() == 3 + 10
+ </Original>
+ <Expanded>
+ 13 == 13
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Double" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str1.size() == 2 + 5
+ </Original>
+ <Expanded>
+ 7 == 7
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ str2.size() == 2 + 15
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Predicate matcher can accept const char*" tags="[compilation][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ "foo", Predicate&lt;const char*>( []( const char* const&amp; ) { return true; } )
+ </Original>
+ <Expanded>
+ "foo" matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Process can be configured on command line" tags="[command-line][config]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="empty args don't cause a crash" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.processName == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="default - no arguments" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.processName == "test"
+ </Original>
+ <Expanded>
+ "test" == "test"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == -1
+ </Original>
+ <Expanded>
+ -1 == -1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !(cfg.hasTestFilters())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getReporterSpecs().size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getProcessedReporterSpecs().size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} }
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="11" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case using" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case exclusion using exclude:" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="test lists" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Specify one test case exclusion using ~" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.hasTestFilters()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("test1")) == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cfg.testSpec().matches(*fakeTestCase("alwaysIncluded"))
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-r/console" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-r/xml" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--reporter/junit" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="must match one of the available ones" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("Unrecognized reporter")
+ </Original>
+ <Expanded>
+ "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="With output file" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="With Windows-like absolute path as output file" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ result.errorMessage() := ""
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?} } == { {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="All with output files" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?}, {?} } == { {?}, {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Mixed output files and default output" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } }
+ </Original>
+ <Expanded>
+ { {?}, {?} } == { {?}, {?} }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="reporter" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Multiple reporters" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="cannot have multiple reporters with default output" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.")
+ </Original>
+ <Expanded>
+ "Only one reporter may have unspecified output file." contains: "Only one reporter may have unspecified output file."
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="debugger" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-b" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-b"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="debugger" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--break" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--break"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-a aborts after first failure" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-a"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-x 2 aborts after two failures" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-x", "2"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-x must be numeric" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("convert") &amp;&amp; ContainsSubstring("oops")
+ </Original>
+ <Expanded>
+ "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Accepted options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--wait-for-keypress", std::get&lt;0>(input)})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.waitForKeypress == std::get&lt;1>(input)
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="abort" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="wait-for-keypress" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="invalid options are reported" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring("never") &amp;&amp; ContainsSubstring("both")
+ </Original>
+ <Expanded>
+ "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-e" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-e"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--nothrow" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--nothrow"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="output filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="-o filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-o", "filename.ext"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultOutputFilename == "filename.ext"
+ </Original>
+ <Expanded>
+ "filename.ext" == "filename.ext"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="output filename" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="--out" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--out", "filename.ext"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultOutputFilename == "filename.ext"
+ </Original>
+ <Expanded>
+ "filename.ext" == "filename.ext"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="combinations" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="Single character flags can be combined" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "-abe"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.abortAfter == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.shouldDebugBreak
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.noThrow == true
+ </Original>
+ <Expanded>
+ true == true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="without option" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::PlatformDefault
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="auto" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse( { "test", "--colour-mode", "default" } )
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::PlatformDefault
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="yes" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--colour-mode", "ansi"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::ANSI
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="no" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({"test", "--colour-mode", "none"})
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.defaultColourMode == ColourMode::None
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="use-colour" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="error" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ !result
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ result.errorMessage(), ContainsSubstring( "colour mode must be one of" )
+ </Original>
+ <Expanded>
+ "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not recognised" contains: "colour mode must be one of"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="samples" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-samples=200" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkSamples == 200
+ </Original>
+ <Expanded>
+ 200 == 200
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="resamples" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-resamples=20000" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkResamples == 20000
+ </Original>
+ <Expanded>
+ 20000 (0x<hex digits>) == 20000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="confidence-interval" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-confidence-interval=0.99" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkConfidenceInterval == Catch::Approx(0.99)
+ </Original>
+ <Expanded>
+ 0.98999999999999999
+==
+Approx( 0.98999999999999999 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="no-analysis" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-no-analysis" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkNoAnalysis
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Benchmark options" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Section name="warmup-time" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ cli.parse({ "test", "--benchmark-warmup-time=10" })
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <Original>
+ config.benchmarkWarmupTime == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int, double, float>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 3 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int, double>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Product with differing arities - std::tuple&lt;int>" tags="[product][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::tuple_size&lt;TestType>::value >= 1
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Random seed generation accepts known methods" tags="[rng][seed]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(method)
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(method)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Random seed generation reports unknown methods" tags="[rng][seed]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ Catch::generateRandomSeed(static_cast&lt;Catch::GenerateFrom>(77))
+ </Original>
+ <Expanded>
+ Catch::generateRandomSeed(static_cast&lt;Catch::GenerateFrom>(77))
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Range type with sentinel" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(UsesSentinel{}) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reconstruction should be based on stringification: #914" tags="[.][Decomposition][failing]" filename="tests/<exe-name>/UsageTests/Decomposition.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Decomposition.tests.cpp" >
+ <Original>
+ truthy(false)
+ </Original>
+ <Expanded>
+ Hey, its truthy!
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Regex string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "contains 'abc' as a substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), Matches( "this string contains 'abc' as a" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Registering reporter with '::' in name fails" tags="[registration][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_WITH" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique&lt;TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'"
+ </Original>
+ <Expanded>
+ "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is not allowed in reporter name: 'with::doublecolons'"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Regression test #1" tags="[matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ actual, !UnorderedEquals( expected )
+ </Original>
+ <Expanded>
+ { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reporter's write listings to provided stream" tags="[reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="Automake reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: Automake
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="compact reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: compact
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="console reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: console
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tags": [
+ {
+ "aliases": [
+ "fakeTag"
+ ],
+ "count": 1
+ }
+ ]" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "reporters": [
+ {
+ "name": "fake reporter",
+ "description": "fake description"
+ }
+ ]" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JSON reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JSON
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "{
+ "version": 1,
+ "metadata": {
+ "name": "",
+ "rng-seed": 1234,
+ "catch2-version": "<version>"
+ },
+ "listings": {
+ "tests": [
+ {
+ "name": "fake test name",
+ "class-name": "",
+ "tags": [
+ "fakeTestTag"
+ ],
+ "source-location": {
+ "filename": "fake-file.cpp",
+ "line": 123456789
+ }
+ }
+ ]" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="JUnit reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: JUnit
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="SonarQube reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: SonarQube
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TAP reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TAP
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="TeamCity reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: TeamCity
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fakeTag"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;TagsFromMatchingTests>
+ &lt;Tag>
+ &lt;Count>1&lt;/Count>
+ &lt;Aliases>
+ &lt;Alias>fakeTag&lt;/Alias>
+ &lt;/Aliases>
+ &lt;/Tag>
+&lt;/TagsFromMatchingTests>" contains: "fakeTag"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("fake reporter"s)
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;AvailableReporters>
+ &lt;Reporter>
+ &lt;Name>fake reporter&lt;/Name>
+ &lt;Description>fake description&lt;/Description>
+ &lt;/Reporter>
+&lt;/AvailableReporters>" contains: "fake reporter"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ !(factories.empty())
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Section name="XML reporter lists tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Info filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ Tested reporter: XML
+ </Info>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;MatchingTests>
+ &lt;TestCase>
+ &lt;Name>fake test name&lt;/Name>
+ &lt;ClassName/>
+ &lt;Tags>[fakeTestTag]&lt;/Tags>
+ &lt;SourceInfo>
+ &lt;File>fake-file.cpp&lt;/File>
+ &lt;Line>123456789&lt;/Line>
+ &lt;/SourceInfo>
+ &lt;/TestCase>
+&lt;/MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Reproducer for #2309 - a very long description past 80 chars (default console width) with a late colon : blablabla" tags="[console-reporter]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="SUCCEED counts as a test pass" tags="[messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="SUCCEED does not require an argument" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or methods" tags="[bdd][fixtures]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: No operations precede me" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ before == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: We get the count" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: Subsequently values are higher" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ after > before
+ </Original>
+ <Expanded>
+ 1 > 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: Do that thing with the thing" tags="[Tags]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: This stuff exists" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="And given: And some assumption" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="When: I do this" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: it should do this" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ itDoesThis()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="And: do that" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ itDoesThat()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" tags="[anotherReallyLongTagNameButThisOneHasNoObviousWrapPointsSoShouldSplitWithinAWordUsingADashCharacter][long][lots][one very long tag name that should cause line wrapping writing out using the list command][tags][verbose][very long tags]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: A section name that is so long that it cannot fit in a single console width" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="When: The test headers are printed as part of the normal running of the scenario" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: The, deliberately very long and overly verbose (you see what I did there?) section names must wrap, along with an indent" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Scenario: Vector resizing affects size and capacity" tags="[bdd][capacity][size][vector]" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Given: an empty vector" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: it is made larger" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: the size and capacity go up" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <Section name="And when: it is made smaller again" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: the size goes down but the capacity stays the same" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Given: an empty vector" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Section name="When: we reserve more space" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Section name="Then: The capacity is increased but the size remains the same" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/BDD.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Sends stuff to stdout and stderr" tags="[.]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0">
+ <StdOut>
+A string sent directly to stdout
+ </StdOut>
+ <StdErr>
+A string sent directly to stderr
+A string sent to stderr via clog
+ </StdErr>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="Some simple comparisons between doubles" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == Approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != Approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == 1.23_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != 1.22_a
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+!=
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) == 1.23
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) != 1.22
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+!=
+1.21999999999999997
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ Approx( d ) != 1.24
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+!=
+1.23999999999999999
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Standard output from all sections is reported" tags="[.][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Section name="one" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="two" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0">
+ <StdOut>
+Message from section one
+Message from section two
+ </StdOut>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="StartsWith string matcher" tags="[.][failing][matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "This String" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "This String"
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "string" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Static arrays are convertible to string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="Single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(singular) == "{ 1 }"
+ </Original>
+ <Expanded>
+ "{ 1 }" == "{ 1 }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Multiple" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(arr) == "{ 3, 2, 1 }"
+ </Original>
+ <Expanded>
+ "{ 3, 2, 1 }" == "{ 3, 2, 1 }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Non-trivial inner items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })"
+ </Original>
+ <Expanded>
+ "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+==
+"{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="String matchers" tags="[matchers]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "string" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "abc" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "abc"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" contains: "abc" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "this" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "this"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" starts with: "this" (case insensitive)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( "substring" )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: "substring"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No )
+ </Original>
+ <Expanded>
+ "this string contains 'abc' as a substring" ends with: " substring" (case insensitive)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="StringRef" tags="[StringRef][Strings]" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Empty string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ empty.empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ empty.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( empty.data(), "" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From string literal" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.empty() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( rawChars, "hello" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == rawChars
+ </Original>
+ <Expanded>
+ "hello" == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From sub-string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original == "original"
+ </Original>
+ <Expanded>
+ original == "original"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.data()
+ </Original>
+ <Expanded>
+ original.data()
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Copy construction is shallow" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.begin() == copy.begin()
+ </Original>
+ <Expanded>
+ "original string" == "original string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Copy assignment is shallow" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ original.begin() == copy.begin()
+ </Original>
+ <Expanded>
+ "original string" == "original string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="zero-based substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.empty() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strncmp( ss.data(), "hello", 5 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss == "hello"
+ </Original>
+ <Expanded>
+ hello == "hello"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="non-zero-based substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ ss.size() == 6
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp( ss.data(), "world!" ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Pointer values of full refs should match" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == s2.data()
+ </Original>
+ <Expanded>
+ "hello world!" == "hello world!"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Pointer values of substring refs should also match" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.data() == ss.data()
+ </Original>
+ <Expanded>
+ "hello world!" == "hello world!"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Past the end substring" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.substr(s.size() + 1, 123).empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Substring off the end are trimmed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ std::strcmp(ss.data(), "world!") == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Substrings" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="substring start after the end is empty" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ s.substr(1'000'000, 1).empty()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Comparisons are deep" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ reinterpret_cast&lt;char*>(buffer1) != reinterpret_cast&lt;char*>(buffer2)
+ </Original>
+ <Expanded>
+ "Hello" != "Hello"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ left == right
+ </Original>
+ <Expanded>
+ Hello == Hello
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ left != left.substr(0, 3)
+ </Original>
+ <Expanded>
+ Hello != Hel
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="implicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="explicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="from std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="assigned" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr == "a standard string"
+ </Original>
+ <Expanded>
+ a standard string == "a standard string"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ sr.size() == stdStr.size()
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="to std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="explicitly constructed" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr == "a stringref"
+ </Original>
+ <Expanded>
+ "a stringref" == "a stringref"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr.size() == sr.size()
+ </Original>
+ <Expanded>
+ 11 == 11
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="to std::string" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="assigned" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr == "a stringref"
+ </Original>
+ <Expanded>
+ "a stringref" == "a stringref"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ stdStr.size() == sr.size()
+ </Original>
+ <Expanded>
+ 11 == 11
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="std::string += StringRef" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ lhs == "some string += the stringref contents"
+ </Original>
+ <Expanded>
+ "some string += the stringref contents"
+==
+"some string += the stringref contents"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="StringRef + StringRef" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Original>
+ together == "abrakadabra"
+ </Original>
+ <Expanded>
+ "abrakadabra" == "abrakadabra"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="StringRef at compilation time" tags="[constexpr][StringRef][Strings]" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <Section name="Simple constructors" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UDL construction" filename="tests/<exe-name>/IntrospectiveTests/String.tests.cpp" >
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - signed char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying char arrays with statically known sizes - unsigned char" tags="[toString]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s
+ </Original>
+ <Expanded>
+ ""abc"" == ""abc""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::duration helpers" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ minute == seconds
+ </Original>
+ <Expanded>
+ 1 m == 60 s
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ hour != seconds
+ </Original>
+ <Expanded>
+ 1 h != 60 s
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ micro != milli
+ </Original>
+ <Expanded>
+ 1 us != 1 ms
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ nano != micro
+ </Original>
+ <Expanded>
+ 1 ns != 1 us
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::duration with weird ratios" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ half_minute != femto_second
+ </Original>
+ <Expanded>
+ 1 [30/1]s != 1 fs
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ pico_second != atto_second
+ </Original>
+ <Expanded>
+ 1 ps != 1 as
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Stringifying std::chrono::time_point&lt;system_clock>" tags="[chrono][toString]" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringChrono.tests.cpp" >
+ <Original>
+ now != later
+ </Original>
+ <Expanded>
+ {iso8601-timestamp}
+!=
+{iso8601-timestamp}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Tabs and newlines show in output" tags="[.][failing][whitespace]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ s1 == s2
+ </Original>
+ <Expanded>
+ "if ($b == 10) {
+ $a = 20;
+}"
+==
+"if ($b == 10) {
+ $a = 20;
+}
+"
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Tag alias can be registered against tag patterns" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Section name="The same tag alias can only be registered once" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "[@zzz]" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "[@zzz]"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "file" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "file"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "2" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "2"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ what, ContainsSubstring( "10" )
+ </Original>
+ <Expanded>
+ "error: tag alias, '[@zzz]' already registered.
+ First seen at: file:2
+ Redefined at: file:10" contains: "10"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Tag aliases must be of the form [@name]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Original>
+ <Expanded>
+ registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Tags with spaces and non-alphanumerical characters are accepted" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags.size() == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags, VectorContains( Tag( "tag with spaces" ) ) &amp;&amp; VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) )
+ </Original>
+ <Expanded>
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 0" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 1" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case method with test types specified inside std::tuple - MyTypes - 2" tags="[class][list][template]" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Class.tests.cpp" >
+ <Original>
+ Template_Fixture&lt;TestType>::m_a == 1
+ </Original>
+ <Expanded>
+ 1.0 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_default_constructible&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-copyable and non-movable std::tuple - NonCopyableAndNonMovableTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_default_constructible&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_trivially_copyable&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside non-default-constructible std::tuple - MyNonDefaultConstructibleTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_trivially_copyable&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 0" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 1" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Template test case with test types specified inside std::tuple - MyTypes - 2" tags="[list][template]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ std::is_arithmetic&lt;TestType>::value
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - float" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - int" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - std::string" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTest: vectors can be sized and resized - std::tuple&lt;int,float>" tags="[template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - (std::tuple&lt;int, float>), 6" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 12 == 12
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 12 >= 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 12 >= 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 6 >= 6
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - float,4" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 8 == 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 8 >= 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 8 >= 8
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 4 >= 4
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - int,5" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="TemplateTestSig: vectors can be sized and resized - std::string,15" tags="[nttp][template][vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 2 * V
+ </Original>
+ <Expanded>
+ 30 == 30
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 30 >= 30
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 2 * V
+ </Original>
+ <Expanded>
+ 30 >= 30
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == V
+ </Original>
+ <Expanded>
+ 15 == 15
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= V
+ </Original>
+ <Expanded>
+ 15 >= 15
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test case with identical tags keeps just one" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testCase.tags[0] == Tag( "tag1" )
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test case with one argument" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test enum bit values" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ 0x<hex digits> == bit30and31
+ </Original>
+ <Expanded>
+ 3221225472 (0x<hex digits>) == 3221225472
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Test with special, characters &quot;in name" tags="[cli][regression]" filename="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if" tags="[checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 2" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" />
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 3" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Failure filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" />
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 4" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Uncaught exception should fail!
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Testing checked-if 5" tags="[!shouldfail][checked-if]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ {Unknown expression after the reported line}
+ </Original>
+ <Expanded>
+ {Unknown expression after the reported line}
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Uncaught exception should fail!
+ </Exception>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="The NO_FAIL macro reports a failure but does not fail the test" tags="[messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Expression success="false" type="CHECK_NOFAIL" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ 1 == 2
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="The default listing implementation write to provided stream" tags="[reporter-helpers][reporters]" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Section name="Listing tags" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring("[fakeTag]"s)
+ </Original>
+ <Expanded>
+ "All available tags:
+ 1 [fakeTag]
+1 tag
+
+" contains: "[fakeTag]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing reporters" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake reporter"s ) &amp;&amp; ContainsSubstring( "fake description"s )
+ </Original>
+ <Expanded>
+ "Available reporters:
+ fake reporter: fake description
+
+" ( contains: "fake reporter" and contains: "fake description" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing tests" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fake test name"s ) &amp;&amp; ContainsSubstring( "fakeTestTag"s )
+ </Original>
+ <Expanded>
+ "All available test cases:
+ fake test name
+ [fakeTestTag]
+1 test case
+
+" ( contains: "fake test name" and contains: "fakeTestTag" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Listing listeners" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Reporters.tests.cpp" >
+ <Original>
+ listingString, ContainsSubstring( "fakeListener"s ) &amp;&amp; ContainsSubstring( "fake description"s )
+ </Original>
+ <Expanded>
+ "Registered listeners:
+ fakeListener: fake description
+
+" ( contains: "fakeListener" and contains: "fake description" )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="This test 'should' fail but doesn't" tags="[!shouldfail][.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Thrown string literals are translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ For some reason someone is throwing a string literal!
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Tracker" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="fail one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="re-enter after failed section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="fail one section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="re-enter after failed section and find next section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="11" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section, then find another" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Re-enter - skips S1 and enters S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Successfully close S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="10" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="successfully close one section, then find another" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="Re-enter - skips S1 and enters S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1b.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Section name="fail S2" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ ctx.completedCycle()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2b.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase2.isSuccessfullyCompleted() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase3.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1c.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2c.isOpen() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase3.isSuccessfullyCompleted()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="12" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="14" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Section name="open a nested section" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isOpen()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s2.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ s1.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete() == false
+ </Original>
+ <Expanded>
+ false == false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/PartTracker.tests.cpp" >
+ <Original>
+ testCase.isComplete()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Trim strings" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(no_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(leading_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(trailing_whitespace)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(std::string(whitespace_at_both_ends)) == no_whitespace
+ </Original>
+ <Expanded>
+ "There is no extra whitespace here"
+==
+"There is no extra whitespace here"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(no_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(leading_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace)
+ </Original>
+ <Expanded>
+ There is no extra whitespace here
+==
+There is no extra whitespace here
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Type conversions of RangeEquals and similar" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( c_array )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( c_array )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types (differ in array N)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_3, !RangeEquals( array_int_4 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_3, !UnorderedRangeEquals( array_int_4 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different container types and value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Container conversions" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers, one random access, one not" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, RangeEquals( list_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_int_a, UnorderedRangeEquals( list_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Value type" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal containers of different value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, RangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, UnorderedRangeEquals( vector_char_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Value type" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal containers of different value types" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, !RangeEquals( vector_char_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_int_a, !UnorderedRangeEquals( vector_char_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges with begin that needs ADL" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, !RangeEquals( b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ a, UnorderedRangeEquals( b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, RangeEquals( array_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Unexpected exceptions can be translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ 3.14000000000000012
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Upcasting special member functions" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="Move constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ bptr->i == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="move assignment" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ bptr->i == 3
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AllMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllMatch(SizeIs(5))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllMatch(Contains(0) &amp;&amp; Contains(1))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains element 1 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, AllMatch( Predicate&lt;int>( []( int elem ) { return elem &lt; 6; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, allMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !allMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not all match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AllTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AllTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains only true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains only true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !AllTrue()
+ </Original>
+ <Expanded>
+ { true, true, false, true, true } not contains only true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AnyMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyMatch(SizeIs(5))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } any match has size == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyMatch(Contains(0) &amp;&amp; Contains(10))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains element 10 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, AnyMatch( Predicate&lt;int>( []( int elem ) { return elem &lt; 3; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !anyMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, anyMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } any match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[1])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[2])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of AnyTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } not contains at least one true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, AnyTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, true, true } contains at least one true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of NoneMatch range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneMatch(SizeIs(6))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } none match has size == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneMatch(Contains(0) &amp;&amp; Contains(1))
+ </Original>
+ <Expanded>
+ { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains element 1 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found begin and end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl, NoneMatch( Predicate&lt;int>( []( int elem ) { return elem > 6; } ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, noneMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !noneMatch
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } not none match matches undescribed predicate
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[1])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[2])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of NoneTrue range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { true, true, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="One true evaluates to false" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, false, false } not contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contained type is convertible to bool" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All false evaluates to true" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ data, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All are read" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, false, false, false } contains no true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[4]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Shortcircuiting" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Short-circuited" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked, !NoneTrue()
+ </Original>
+ <Expanded>
+ { false, false, true, true, true } not contains no true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked.m_derefed[4])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of RangeEquals range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container matches empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, RangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { } elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container does not match non-empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, !RangeEquals( non_empty_vector )
+ </Original>
+ <Expanded>
+ { } not elements are { 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vector, !RangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { 1 } not elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal 1-length non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, RangeEquals( non_empty_array )
+ </Original>
+ <Expanded>
+ { 1 } elements are { 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( array_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, non-equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !RangeEquals( array_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 2, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !RangeEquals( array_c )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal-sized, non-empty containers (with same first elements)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !RangeEquals( vector_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, RangeEquals( vector_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !RangeEquals( vector_b, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not elements are { 3, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges that need ADL begin/end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, RangeEquals( needs_adl2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Compare against std::initializer_list" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( { 1, 2, 3 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, RangeEquals( { 2, 4, 6 }, []( int l, int r ) { return l * 2 == r; } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } elements are { 2, 4, 6 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Check short-circuiting behaviour" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Check short-circuits on failure" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1, !RangeEquals( arr )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ !(mocked1.m_derefed[3])
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Check short-circuiting behaviour" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="All elements are checked on success" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1, RangeEquals( arr )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[0]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[1]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[2]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ mocked1.m_derefed[3]
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of UnorderedRangeEquals range matcher" tags="[matchers][quantifiers][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container matches empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, UnorderedRangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { } unordered elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Empty container does not match non-empty container" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vector, !UnorderedRangeEquals( non_empty_vector )
+ </Original>
+ <Expanded>
+ { } not unordered elements are { 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_vector, !UnorderedRangeEquals( empty_vector )
+ </Original>
+ <Expanded>
+ { 1 } not unordered elements are { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal 1-length non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ non_empty_array, UnorderedRangeEquals( non_empty_array )
+ </Original>
+ <Expanded>
+ { 1 } unordered elements are { 1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( array_a )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } unordered elements are { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal-sized, non-equal, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, !UnorderedRangeEquals( array_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 2, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Basic usage" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal-sized, non-empty containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !UnorderedRangeEquals( vector_b )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Custom predicate" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Two non-equal non-empty containers (close enough)" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ vector_a, !UnorderedRangeEquals( vector_b, close_enough )
+ </Original>
+ <Expanded>
+ { 1, 10, 21 } not unordered elements are { 11, 21, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Ranges that need ADL begin/end" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ needs_adl1, UnorderedRangeEquals( needs_adl2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Compare against std::initializer_list" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( { 10, 20, 1 } )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 10, 20, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ array_a, UnorderedRangeEquals( { 11, 21, 2 }, []( int l, int r ) { return std::abs( l - r ) &lt;= 1; } )
+ </Original>
+ <Expanded>
+ { 1, 10, 20 } unordered elements are { 11, 21, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Usage of the SizeIs range matcher" tags="[matchers][size][templated]" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Section name="Some with stdlib containers" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, SizeIs(0)
+ </Original>
+ <Expanded>
+ { } has size == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, !SizeIs(2)
+ </Original>
+ <Expanded>
+ { } not has size == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ empty_vec, SizeIs(Lt(2))
+ </Original>
+ <Expanded>
+ { } size matches is less than 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, SizeIs(2)
+ </Original>
+ <Expanded>
+ { 0, 0 } has size == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, SizeIs( Lt(3))
+ </Original>
+ <Expanded>
+ { 0, 0 } size matches is less than 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ arr, !SizeIs(!Lt(3))
+ </Original>
+ <Expanded>
+ { 0, 0 } not size matches not is less than 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ map, SizeIs(3)
+ </Original>
+ <Expanded>
+ { {?}, {?}, {?} } has size == 3
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type requires ADL found size free function" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ unrelated::ADL_size{}, SizeIs(12)
+ </Original>
+ <Expanded>
+ {?} has size == 12
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Type has size member" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/MatchersRanges.tests.cpp" >
+ <Original>
+ has_size{}, SizeIs(13)
+ </Original>
+ <Expanded>
+ {?} has size == 13
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Use a custom approx" tags="[Approx][custom]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.23 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.22999999999999998 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.22 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.21999999999999997 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d == approx( 1.24 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998
+==
+Approx( 1.23999999999999999 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ d != approx( 1.25 )
+ </Original>
+ <Expanded>
+ 1.22999999999999998 != Approx( 1.25 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.23
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.22999999999999998
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.22
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.21999999999999997
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) == 1.24
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 )
+==
+1.23999999999999999
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
+ <Original>
+ approx( d ) != 1.25
+ </Original>
+ <Expanded>
+ Approx( 1.22999999999999998 ) != 1.25
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Variadic macros" tags="[sections][variadic]" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <Section name="Section with one argument" filename="tests/<exe-name>/UsageTests/VariadicMacros.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector Approx matcher" tags="[approx][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Empty vector is roughly equal to an empty vector" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Approx( empty )
+ </Original>
+ <Expanded>
+ { } is approx: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="A vector is approx equal to itself" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v1 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx&lt;double>( { 1., 2., 3. } )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Different length" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, !Approx( temp )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Vectors with elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Same length, different elements" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, !Approx( v2 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).margin( 0.5 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).epsilon( 0.5 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 )
+ </Original>
+ <Expanded>
+ { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="4" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector Approx matcher -- failing" tags="[.][approx][failing][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Empty and non empty vectors are not approx equal" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Approx( t1 )
+ </Original>
+ <Expanded>
+ { } is approx: { 1.0, 2.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Just different vectors" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v1, Approx( v2 )
+ </Original>
+ <Expanded>
+ { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector matchers" tags="[matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Contains (element)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 1 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( VectorContains&lt;int, CustomAllocator&lt;int>>( 2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (vector)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains&lt;int>( { 1, 2 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Contains&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Contains( empty )
+ </Original>
+ <Expanded>
+ { } Contains: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Contains&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, Contains( v6 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="8" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (element), composed" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( 1 ) &amp;&amp; VectorContains( 2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } ( Contains: 1 and Contains: 2 )
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Equals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Equals( empty )
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals&lt;int>( { 1, 2, 3 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( Equals&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( v2 ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, Equals( v6 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UnorderedEquals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals&lt;int>( { 3, 2, 1 } )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, UnorderedEquals( empty )
+ </Original>
+ <Expanded>
+ { } UnorderedEquals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5, ( UnorderedEquals&lt;int, std::allocator&lt;int>, CustomAllocator&lt;int>>( permuted ) )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v5_permuted, UnorderedEquals( v5 )
+ </Original>
+ <Expanded>
+ { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="7" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="Vector matchers that fail" tags="[.][failing][matchers][vector]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Section name="Contains (element)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, VectorContains( -1 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: -1
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, VectorContains( 1 )
+ </Original>
+ <Expanded>
+ { } Contains: 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Contains (vector)" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Contains( v )
+ </Original>
+ <Expanded>
+ { } Contains: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Contains( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Contains: { 1, 2, 4 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="2" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Equals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( v2 )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { 1, 2 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v2, Equals( v )
+ </Original>
+ <Expanded>
+ { 1, 2 } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, Equals( v )
+ </Original>
+ <Expanded>
+ { } Equals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, Equals( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } Equals: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="4" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="UnorderedEquals" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ v, UnorderedEquals( empty )
+ </Original>
+ <Expanded>
+ { 1, 2, 3 } UnorderedEquals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ empty, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 1, 3 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
+ <Original>
+ permuted, UnorderedEquals( v )
+ </Original>
+ <Expanded>
+ { 3, 1 } UnorderedEquals: { 1, 2, 3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="4" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When checked exceptions are thrown they can be expected or unexpected" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS_AS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows(), std::domain_error
+ </Original>
+ <Expanded>
+ thisThrows(), std::domain_error
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisDoesntThrow()
+ </Original>
+ <Expanded>
+ thisDoesntThrow()
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows()
+ </Original>
+ <Expanded>
+ thisThrows()
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown directly they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown during a CHECK the test should continue" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown during a REQUIRE the test should abort fail" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown from functions they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Original>
+ thisThrows() == 0
+ </Original>
+ <Expanded>
+ thisThrows() == 0
+ </Expanded>
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ expected exception
+ </Exception>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown from sections they are always failures" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Section name="section name" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ unexpected exception
+ </Exception>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/0/a" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/0/b" tags="[fizz][Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/1/a" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="X/level/1/b" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="XmlEncode" tags="[XML]" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Section name="normal string" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "normal string" ) == "normal string"
+ </Original>
+ <Expanded>
+ "normal string" == "normal string"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="empty string" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "" ) == ""
+ </Original>
+ <Expanded>
+ "" == ""
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with ampersand" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith &amp; jones" ) == "smith &amp;amp; jones"
+ </Original>
+ <Expanded>
+ "smith &amp;amp; jones" == "smith &amp;amp; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with less-than" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith &lt; jones" ) == "smith &amp;lt; jones"
+ </Original>
+ <Expanded>
+ "smith &amp;lt; jones" == "smith &amp;lt; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with greater-than" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith > jones" ) == "smith > jones"
+ </Original>
+ <Expanded>
+ "smith > jones" == "smith > jones"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "smith ]]&gt; jones" ) == "smith ]]&amp;gt; jones"
+ </Original>
+ <Expanded>
+ "smith ]]&amp;gt; jones"
+==
+"smith ]]&amp;gt; jones"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with quotes" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( stringWithQuotes ) == stringWithQuotes
+ </Original>
+ <Expanded>
+ "don't "quote" me on that"
+==
+"don't "quote" me on that"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &amp;quot;quote&amp;quot; me on that"
+ </Original>
+ <Expanded>
+ "don't &amp;quot;quote&amp;quot; me on that"
+==
+"don't &amp;quot;quote&amp;quot; me on that"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with control char (1)" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "[\x01]" ) == "[\\x01]"
+ </Original>
+ <Expanded>
+ "[\x01]" == "[\x01]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="string with control char (x7F)" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ encode( "[\x7F]" ) == "[\\x7F]"
+ </Original>
+ <Expanded>
+ "[\x7F]" == "[\x7F]"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="XmlWriter writes boolean attributes as true/false" tags="[XML][XmlWriter]" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Xml.tests.cpp" >
+ <Original>
+ stream.str(), ContainsSubstring(R"(attr1="true")") &amp;&amp; ContainsSubstring(R"(attr2="false")")
+ </Original>
+ <Expanded>
+ "&lt;?xml version="1.0" encoding="UTF-8"?>
+&lt;Element1 attr1="true" attr2="false"/>
+" ( contains: "attr1="true"" and contains: "attr2="false"" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="a succeeding test can still be skipped" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="analyse no analysis" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.point.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.lower_bound.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.mean.upper_bound.count() == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.point.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.lower_bound.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.standard_deviation.upper_bound.count() == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.total() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.low_mild == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.low_severe == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.high_mild == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.high_severe == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outliers.samples_seen == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ analysis.outlier_variance == 0
+ </Original>
+ <Expanded>
+ 0.0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="array&lt;int, N> -> toString" tags="[array][containers][toString]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( empty ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( oneValue ) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( twoValues ) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="benchmark function call" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Section name="without chronometer" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ called == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="with chronometer" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.started == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ model.finished == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ called == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="boolean member" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ obj.prop != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedElse" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedElse( true )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedElse, failing" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_ELSE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedElse( false )
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedIf" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedIf( true )
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="checkedIf, failing" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECKED_IF" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ flag
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ testCheckedIf( false )
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="classify_outliers" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Section name="none" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="low severe" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="low mild" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="high mild" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="high severe" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="mixed" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.samples_seen == static_cast&lt;int>(x.size())
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_severe == los
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.low_mild == lom
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_mild == him
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.high_severe == his
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ o.total() == los + lom + him + his
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="comparisons between const int variables" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_char_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_short_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_int_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ unsigned_long_var == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="comparisons between int variables" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_char_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_short_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_int_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Condition.tests.cpp" >
+ <Original>
+ long_var == unsigned_long_var
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="convertToBits" tags="[conversion][floating-point]" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( 0.f ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( -0.f ) == ( 1ULL &lt;&lt; 31 )
+ </Original>
+ <Expanded>
+ 2147483648 (0x<hex digits>)
+==
+2147483648 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( 0. ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( -0. ) == ( 1ULL &lt;&lt; 63 )
+ </Original>
+ <Expanded>
+ 9223372036854775808 (0x<hex digits>)
+==
+9223372036854775808 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( std::numeric_limits&lt;float>::denorm_min() ) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/FloatingPoint.tests.cpp" >
+ <Original>
+ convertToBits( std::numeric_limits&lt;double>::denorm_min() ) == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="dynamic skipping works with generators" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 41
+ </Skip>
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 43
+ </Skip>
+ <OverallResult success="true" skips="2"/>
+ </TestCase>
+ <TestCase name="empty tags are not allowed" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+ </Original>
+ <Expanded>
+ Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="erfc_inv" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(1.103560) == Approx(-0.09203687623843015)
+ </Original>
+ <Expanded>
+ -0.09203687623843014
+==
+Approx( -0.09203687623843015 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(1.067400) == Approx(-0.05980291115763361)
+ </Original>
+ <Expanded>
+ -0.05980291115763361
+==
+Approx( -0.05980291115763361 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ erfc_inv(0.050000) == Approx(1.38590382434967796)
+ </Original>
+ <Expanded>
+ 1.38590382434967774
+==
+Approx( 1.38590382434967796 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="estimate_clock_resolution" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.mean.count() == rate
+ </Original>
+ <Expanded>
+ 2000.0 == 2000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.outliers.total() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="even more nested SECTION tests" tags="[sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="c" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="d (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="c" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="e (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="f (leaf)" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="failed assertions before SKIP cause test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Original>
+ 3 == 4
+ </Original>
+ <Expanded>
+ 3 == 4
+ </Expanded>
+ </Expression>
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="failing for some generator values causes entire test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="2"/>
+ </TestCase>
+ <TestCase name="failing in some unskipped sections causes entire test case to fail" tags="[!shouldfail][skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="1" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="first tag" tags="[tag1]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="has printf" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="is_unary_function" tags="[clara][compilation]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="just failure" tags="[.][fail][isolated info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Previous info should not be seen
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just failure after unscoped info" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ previous unscoped info SHOULD not be seen
+ </Failure>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just info" tags="[info][isolated info][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="just unscoped info" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="long long" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ l == std::numeric_limits&lt;long long>::max()
+ </Original>
+ <Expanded>
+ 9223372036854775807 (0x<hex digits>)
+==
+9223372036854775807 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="looped SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="b is currently: 0" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 0 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 1" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 1 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 2" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 2 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 3" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 3 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 4" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 4 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 5" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 5 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 6" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 6 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 7" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 7 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 8" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 8 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="b is currently: 9" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b > a
+ </Original>
+ <Expanded>
+ 9 > 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="looped tests" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[0] (1) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[1] (1) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[2] (2) is even
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[3] (3) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[4] (5) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[5] (8) is even
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[6] (13) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ Testing if fib[7] (21) is even
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ ( fib[i] % 2 ) == 0
+ </Original>
+ <Expanded>
+ 1 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="makeStream recognizes %debug stream name" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%debug" )
+ </Original>
+ <Expanded>
+ Catch::makeStream( "%debug" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="make_unique reimplementation" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="From lvalue copies" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(lval.has_moved)
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="From rvalue moves" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ rval.has_moved
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Variadic constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == std::tuple&lt;int, double, int>{1, 2., 3}
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="mean" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ m == 19.
+ </Original>
+ <Expanded>
+ 19.0 == 19.0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="measure" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x == 17
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x == 23
+ </Original>
+ <Expanded>
+ 23 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.elapsed.count() == 42
+ </Original>
+ <Expanded>
+ 42 == 42
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.result == 23
+ </Original>
+ <Expanded>
+ 23 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ r.iterations == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.elapsed.count() == 69
+ </Original>
+ <Expanded>
+ 69 == 69
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.result == 17
+ </Original>
+ <Expanded>
+ 17 == 17
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ s.iterations == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="mix info, unscoped info and warning" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ info
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ unscoped info
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ and warn may mix
+ </Warning>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ info
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ unscoped info
+ </Info>
+ <Warning filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ they are not cleared after warnings
+ </Warning>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="more nested SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a == b
+ </Original>
+ <Expanded>
+ 1 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="less than" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a &lt; b
+ </Original>
+ <Expanded>
+ 1 &lt; 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="nested SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b != a
+ </Original>
+ <Expanded>
+ 2 != 1
+ </Expanded>
+ </Expression>
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="nested sections can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="A" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="B1" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="0" failures="1" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="B2" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="B" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="false" skips="1">
+ <StdOut>
+a!
+b1!
+!
+ </StdOut>
+ </OverallResult>
+ </TestCase>
+ <TestCase name="non streamable - with conv. op" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ s == "7"
+ </Original>
+ <Expanded>
+ "7" == "7"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="non-copyable objects" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ ti == typeid(int)
+ </Original>
+ <Expanded>
+ {?} == {?}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="normal_quantile" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.551780) == Approx(0.13015979861484198)
+ </Original>
+ <Expanded>
+ 0.13015979861484195
+==
+Approx( 0.13015979861484198 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.533700) == Approx(0.08457408802851875)
+ </Original>
+ <Expanded>
+ 0.08457408802851875
+==
+Approx( 0.08457408802851875 )
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ normal_quantile(0.025000) == Approx(-1.95996398454005449)
+ </Original>
+ <Expanded>
+ -1.95996398454005405
+==
+Approx( -1.95996398454005449 )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="not allowed" tags="[!throws]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="not prints unscoped info from previous failures" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen only for the FIRST assertion IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen only for the SECOND assertion IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="null strings" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ makeString( false ) != static_cast&lt;char*>(0)
+ </Original>
+ <Expanded>
+ "valid string" != {null string}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ makeString( true ) == static_cast&lt;char*>(0)
+ </Original>
+ <Expanded>
+ {null string} == {null string}
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="null_ptr" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="pair&lt;pair&lt;int,const char *,pair&lt;std::string,int> > -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }"
+ </Original>
+ <Expanded>
+ "{ { 42, "Arthur" }, { "Ford", 24 } }"
+==
+"{ { 42, "Arthur" }, { "Ford", 24 } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="parseEnums" tags="[enums][Strings]" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Section name="No enums" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "" ), Equals( std::vector&lt;Catch::StringRef>{} )
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="One enum value" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "Value1" ), Equals( std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "EnumName::Value1" ), Equals(std::vector&lt;Catch::StringRef>{"Value1"} )
+ </Original>
+ <Expanded>
+ { Value1 } Equals: { Value1 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Multiple enum values" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2 } Equals: { Value1, Value2 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2", "Value3"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/ToString.tests.cpp" >
+ <Original>
+ parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector&lt;Catch::StringRef>{"Value1", "Value2", "Value3"} )
+ </Original>
+ <Expanded>
+ { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="pointer to class" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
+ <Original>
+ p == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="print unscoped info if passing unscoped info is printed" tags="[info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY be seen IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="prints unscoped info on failure" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD also be seen
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="prints unscoped info only for the first assertion" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this SHOULD be seen only ONCE
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ this MAY also be seen only ONCE IF info is printed for passing assertions
+ </Info>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ true
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="random SECTION tests" tags="[.][failing][sections]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="doesn't equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ b != a
+ </Original>
+ <Expanded>
+ 2 != 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="not equal" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ a != b
+ </Original>
+ <Expanded>
+ 1 != 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="replaceInPlace" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="replace single char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "b", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "azcdefcg"
+ </Original>
+ <Expanded>
+ "azcdefcg" == "azcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace two chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "c", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abzdefzg"
+ </Original>
+ <Expanded>
+ "abzdefzg" == "abzdefzg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace first char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "a", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "zbcdefcg"
+ </Original>
+ <Expanded>
+ "zbcdefcg" == "zbcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace last char" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "g", "z")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abcdefcz"
+ </Original>
+ <Expanded>
+ "abcdefcz" == "abcdefcz"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace all chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, letters, "replaced")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "replaced"
+ </Original>
+ <Expanded>
+ "replaced" == "replaced"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="replace no chars" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ !(Catch::replaceInPlace(letters, "x", "z"))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == letters
+ </Original>
+ <Expanded>
+ "abcdefcg" == "abcdefcg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="no replace in already-replaced string" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="lengthening" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(letters, "c", "cc")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ letters == "abccdefccg"
+ </Original>
+ <Expanded>
+ "abccdefccg" == "abccdefccg"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="no replace in already-replaced string" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Section name="shortening" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(s, "--", "-")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ s == "--"
+ </Original>
+ <Expanded>
+ "--" == "--"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="escape '" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ Catch::replaceInPlace(s, "'", "|'")
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ s == "didn|'t"
+ </Original>
+ <Expanded>
+ "didn|'t" == "didn|'t"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="request an unknown %-starting stream fails" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THROWS" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%somestream" )
+ </Original>
+ <Expanded>
+ Catch::makeStream( "%somestream" )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="resolution" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res.size() == count
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ res[i] == rate
+ </Original>
+ <Expanded>
+ 1000.0 == 1000 (0x<hex digits>)
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="run_for_at_least, chronometer" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 4 >= 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 8 >= 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 16 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 32 >= 16
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 64 >= 32
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ meter.runs() >= old_runs
+ </Original>
+ <Expanded>
+ 128 >= 64
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.elapsed >= time
+ </Original>
+ <Expanded>
+ 128 ns >= 100 ns
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.result == Timing.iterations + 17
+ </Original>
+ <Expanded>
+ 145 == 145
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.iterations >= time.count()
+ </Original>
+ <Expanded>
+ 128 >= 100
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="run_for_at_least, int" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 1 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 2 >= 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 4 >= 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 8 >= 4
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 16 >= 8
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 32 >= 16
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 64 >= 32
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ x >= old_x
+ </Original>
+ <Expanded>
+ 128 >= 64
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.elapsed >= time
+ </Original>
+ <Expanded>
+ 128 ns >= 100 ns
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.result == Timing.iterations + 17
+ </Original>
+ <Expanded>
+ 145 == 145
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ Timing.iterations >= time.count()
+ </Original>
+ <Expanded>
+ 128 >= 100
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="second tag" tags="[tag2]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="sections can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Section name="not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResults successes="0" failures="0" expectedFailures="0" skipped="true"/>
+ </Section>
+ <Section name="also not skipped" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="send a single char to INFO" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="sends information to INFO" tags="[.][failing]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ hi
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ i := 7
+ </Info>
+ <Expression success="false" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="shortened hide tags are split apart" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags, VectorContains( Tag( "magic-tag" ) ) &amp;&amp; VectorContains( Tag( "."_catch_sr ) )
+ </Original>
+ <Expanded>
+ { {?}, {?} } ( Contains: {?} and Contains: {?} )
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="skipped tests can optionally provide a reason" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ skipping because answer = 43
+ </Skip>
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="splitString" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("", ','), Equals(std::vector&lt;StringRef>())
+ </Original>
+ <Expanded>
+ { } Equals: { }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("abc", ','), Equals(std::vector&lt;StringRef>{"abc"})
+ </Original>
+ <Expanded>
+ { abc } Equals: { abc }
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK_THAT" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ splitStringRef("abc,def", ','), Equals(std::vector&lt;StringRef>{"abc", "def"})
+ </Original>
+ <Expanded>
+ { abc, def } Equals: { abc, def }
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stacks unscoped info in loops" tags="[.][failing][info][unscoped]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Count 1 to 3...
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 1
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 2
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 3
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ Count 4 to 6...
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 4
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 5
+ </Info>
+ <Info filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ 6
+ </Info>
+ <Expression success="false" type="CHECK" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
+ <Original>
+ false
+ </Original>
+ <Expanded>
+ false
+ </Expanded>
+ </Expression>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="startsWith" tags="[string-manip]" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ !(startsWith("", 'c'))
+ </Original>
+ <Expanded>
+ !false
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ startsWith(std::string("abc"), 'a')
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/StringManip.tests.cpp" >
+ <Original>
+ startsWith("def"_catch_sr, 'd')
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::map is convertible string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="empty" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( emptyMap ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }"
+ </Original>
+ <Expanded>
+ "{ { "one", 1 } }" == "{ { "one", 1 } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="several items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }"
+ </Original>
+ <Expanded>
+ "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+==
+"{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::pair&lt;int,const std::string> -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }"
+ </Original>
+ <Expanded>
+ "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::pair&lt;int,std::string> -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }"
+ </Original>
+ <Expanded>
+ "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::set is convertible string" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Section name="empty" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( emptySet ) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="single item" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( set ) == "{ \"one\" }"
+ </Original>
+ <Expanded>
+ "{ "one" }" == "{ "one" }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="several items" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringGeneral.tests.cpp" >
+ <Original>
+ Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }"
+ </Original>
+ <Expanded>
+ "{ "abc", "def", "ghi" }"
+==
+"{ "abc", "def", "ghi" }"
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="std::vector&lt;std::pair&lt;std::string,int> > -> toString" tags="[pair][toString]" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringPair.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }"
+ </Original>
+ <Expanded>
+ "{ { "green", 55 } }"
+==
+"{ { "green", 55 } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stdout and stderr streams have %-starting name" tags="[streams]" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%stderr" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Stream.tests.cpp" >
+ <Original>
+ Catch::makeStream( "%stdout" )->isConsole()
+ </Original>
+ <Expanded>
+ true
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify ranges" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(streamable_range{}) == "op&lt;&lt;(streamable_range)"
+ </Original>
+ <Expanded>
+ "op&lt;&lt;(streamable_range)"
+==
+"op&lt;&lt;(streamable_range)"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)"
+ </Original>
+ <Expanded>
+ "stringmaker(streamable_range)"
+==
+"stringmaker(streamable_range)"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }"
+ </Original>
+ <Expanded>
+ "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(disabled_range{}) == "{?}"
+ </Original>
+ <Expanded>
+ "{?}" == "{?}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_maker )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "StringMaker&lt;has_maker>"
+ </Original>
+ <Expanded>
+ "StringMaker&lt;has_maker>"
+==
+"StringMaker&lt;has_maker>"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_maker_and_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "StringMaker&lt;has_maker_and_operator>"
+ </Original>
+ <Expanded>
+ "StringMaker&lt;has_maker_and_operator>"
+==
+"StringMaker&lt;has_maker_and_operator>"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_neither )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(item) == "{?}"
+ </Original>
+ <Expanded>
+ "{?}" == "{?}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "operator&lt;&lt;( has_operator )"
+ </Original>
+ <Expanded>
+ "operator&lt;&lt;( has_operator )"
+==
+"operator&lt;&lt;( has_operator )"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( has_template_operator )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( item ) == "operator&lt;&lt;( has_template_operator )"
+ </Original>
+ <Expanded>
+ "operator&lt;&lt;( has_template_operator )"
+==
+"operator&lt;&lt;( has_template_operator )"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_maker> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ StringMaker&lt;has_maker> }"
+ </Original>
+ <Expanded>
+ "{ StringMaker&lt;has_maker> }"
+==
+"{ StringMaker&lt;has_maker> }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_maker_and_operator> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ StringMaker&lt;has_maker_and_operator> }"
+ </Original>
+ <Expanded>
+ "{ StringMaker&lt;has_maker_and_operator> }"
+==
+"{ StringMaker&lt;has_maker_and_operator> }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="stringify( vectors&lt;has_operator> )" tags="[toString]" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringWhich.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify( v ) == "{ operator&lt;&lt;( has_operator ) }"
+ </Original>
+ <Expanded>
+ "{ operator&lt;&lt;( has_operator ) }"
+==
+"{ operator&lt;&lt;( has_operator ) }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="strlen3" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 3 == 3
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ data.str.size() == data.len
+ </Original>
+ <Expanded>
+ 4 == 4
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tables" tags="[generators]" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Generators.tests.cpp" >
+ <Original>
+ strlen(std::get&lt;0>(data)) == static_cast&lt;size_t>(std::get&lt;1>(data))
+ </Original>
+ <Expanded>
+ 6 == 6
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tags with dots in later positions are not parsed as hidden" tags="[tags]" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags.size() == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Tag.tests.cpp" >
+ <Original>
+ testcase.tags[0].original == "magic.tag"_catch_sr
+ </Original>
+ <Expanded>
+ magic.tag == magic.tag
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tests can be skipped dynamically at runtime" tags="[skipping]" filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" >
+ <Skip filename="tests/<exe-name>/UsageTests/Skip.tests.cpp" />
+ <OverallResult success="true" skips="1"/>
+ </TestCase>
+ <TestCase name="thrown std::strings are translated" tags="[!throws][.][failing]" filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ <Exception filename="tests/<exe-name>/UsageTests/Exception.tests.cpp" >
+ Why would you throw a std::string?
+ </Exception>
+ <OverallResult success="false" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on const wchar_t const pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on const wchar_t pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on wchar_t const pointer returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString on wchar_t returns the string contents" tags="[toString]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ result == "\"wide load\""
+ </Original>
+ <Expanded>
+ ""wide load"" == ""wide load""
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum class w/operator&lt;&lt;)" tags="[enum][enumClass][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "E2/V0"
+ </Original>
+ <Expanded>
+ "E2/V0" == "E2/V0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "E2/V1"
+ </Original>
+ <Expanded>
+ "E2/V1" == "E2/V1"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e3) == "Unknown enum value 10"
+ </Original>
+ <Expanded>
+ "Unknown enum value 10"
+==
+"Unknown enum value 10"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum class)" tags="[enum][enumClass][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "1"
+ </Original>
+ <Expanded>
+ "1" == "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum w/operator&lt;&lt;)" tags="[enum][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "E2{0}"
+ </Original>
+ <Expanded>
+ "E2{0}" == "E2{0}"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "E2{1}"
+ </Original>
+ <Expanded>
+ "E2{1}" == "E2{1}"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="toString(enum)" tags="[enum][toString]" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e0) == "0"
+ </Original>
+ <Expanded>
+ "0" == "0"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/EnumToString.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(e1) == "1"
+ </Original>
+ <Expanded>
+ "1" == "1"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ }" == ::Catch::Detail::stringify(type{})
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ }" == ::Catch::Detail::stringify(value)
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;float,int>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "1.5f" == ::Catch::Detail::stringify(float(1.5))
+ </Original>
+ <Expanded>
+ "1.5f" == "1.5f"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0})
+ </Original>
+ <Expanded>
+ "{ 1.5f, 0 }" == "{ 1.5f, 0 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;int>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ 0 }" == ::Catch::Detail::stringify(type{0})
+ </Original>
+ <Expanded>
+ "{ 0 }" == "{ 0 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;string,string>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"})
+ </Original>
+ <Expanded>
+ "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="tuple&lt;tuple&lt;int>,tuple&lt;>,float>" tags="[toString][tuple]" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/UsageTests/ToStringTuple.tests.cpp" >
+ <Original>
+ "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value)
+ </Original>
+ <Expanded>
+ "{ { 42 }, { }, 1.5f }"
+==
+"{ { 42 }, { }, 1.5f }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="uniform samples" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.point == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.upper_bound == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.lower_bound == 23
+ </Original>
+ <Expanded>
+ 23.0 == 23
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ e.confidence_interval == 0.95
+ </Original>
+ <Expanded>
+ 0.94999999999999996 == 0.94999999999999996
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="uniform_integer_distribution can return the bounds" tags="[distribution][rng]" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ dist.a() == -10
+ </Original>
+ <Expanded>
+ -10 == -10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/RandomNumberGeneration.tests.cpp" >
+ <Original>
+ dist.b() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="unique_ptr reimplementation: basic functionality" tags="[internals][unique-ptr]" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Section name="Default constructed unique_ptr is empty" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take ownership of allocation" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == naked_ptr
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Section name="Plain reset deallocates" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="5" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Take ownership of allocation" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == naked_ptr
+ </Original>
+ <Expanded>
+ 0x<hex digits> == 0x<hex digits>
+ </Expanded>
+ </Expression>
+ <Section name="Reset replaces ownership" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() != 0
+ </Original>
+ <Expanded>
+ 0x<hex digits> != 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="6" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Release releases ownership" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="CHECK_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr.get() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Move constructor" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr1)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr2
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="Move assignment" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE_FALSE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ !(ptr2)
+ </Original>
+ <Expanded>
+ !{?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ ptr1
+ </Original>
+ <Expanded>
+ {?}
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr1 == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="free swap" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr1 == 2
+ </Original>
+ <Expanded>
+ 2 == 2
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/UniquePtr.tests.cpp" >
+ <Original>
+ *ptr2 == 1
+ </Original>
+ <Expanded>
+ 1 == 1
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vec&lt;vec&lt;string,alloc>> -> toString" tags="[toString][vector,allocator]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(v) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }"
+ </Original>
+ <Expanded>
+ "{ { "hello" }, { "world" } }"
+==
+"{ { "hello" }, { "world" } }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;bool> -> toString" tags="[containers][toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ true }"
+ </Original>
+ <Expanded>
+ "{ true }" == "{ true }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(bools) == "{ true, false }"
+ </Original>
+ <Expanded>
+ "{ true, false }" == "{ true, false }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;int,allocator> -> toString" tags="[toString][vector,allocator]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;int> -> toString" tags="[toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42 }"
+ </Original>
+ <Expanded>
+ "{ 42 }" == "{ 42 }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ 42, 250 }"
+ </Original>
+ <Expanded>
+ "{ 42, 250 }" == "{ 42, 250 }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vector&lt;string> -> toString" tags="[toString][vector]" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ }"
+ </Original>
+ <Expanded>
+ "{ }" == "{ }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ \"hello\" }"
+ </Original>
+ <Expanded>
+ "{ "hello" }" == "{ "hello" }"
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/ToStringVector.tests.cpp" >
+ <Original>
+ ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }"
+ </Original>
+ <Expanded>
+ "{ "hello", "world" }"
+==
+"{ "hello", "world" }"
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="vectors can be sized and resized" tags="[vector]" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing bigger changes size and capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 10
+ </Original>
+ <Expanded>
+ 10 == 10
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="resizing smaller changes size but not capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="We can use the 'swap trick' to reset the capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() == 0
+ </Original>
+ <Expanded>
+ 0 == 0
+ </Expanded>
+ </Expression>
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResults successes="3" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving bigger changes capacity but not size" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 10
+ </Original>
+ <Expanded>
+ 10 >= 10
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <Section name="reserving smaller does not change size or capacity" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.size() == 5
+ </Original>
+ <Expanded>
+ 5 == 5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Original>
+ v.capacity() >= 5
+ </Original>
+ <Expanded>
+ 5 >= 5
+ </Expanded>
+ </Expression>
+ <OverallResults successes="2" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="warmup" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count()
+ </Original>
+ <Expanded>
+ 160000000 (0x<hex digits>) > 100
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ (end - start) > Catch::Benchmark::Detail::warmup_time
+ </Original>
+ <Expanded>
+ 310016000 ns > 100 ms
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="weighted_average_quantile" tags="[benchmark]" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ q1 == 14.5
+ </Original>
+ <Expanded>
+ 14.5 == 14.5
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ med == 18.
+ </Original>
+ <Expanded>
+ 18.0 == 18.0
+ </Expanded>
+ </Expression>
+ <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/InternalBenchmark.tests.cpp" >
+ <Original>
+ q3 == 23.
+ </Original>
+ <Expanded>
+ 23.0 == 23.0
+ </Expanded>
+ </Expression>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <TestCase name="xmlentitycheck" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <Section name="embedded xml: &lt;test>it should be possible to embed xml characters, such as &lt;, &quot; or &amp;, or even whole &lt;xml>documents&lt;/xml> within an attribute&lt;/test>" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <Section name="encoded chars: these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;" filename="tests/<exe-name>/UsageTests/Misc.tests.cpp" >
+ <OverallResults successes="1" failures="0" expectedFailures="0" skipped="false"/>
+ </Section>
+ <OverallResult success="true" skips="0"/>
+ </TestCase>
+ <OverallResults successes="2087" failures="147" expectedFailures="35" skips="12"/>
+ <OverallResultsCases successes="313" failures="86" expectedFailures="14" skips="6"/>
+</Catch2TestRun>