From e5938007f7dab5c9886ca561d09106ee4d7f2301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Mon, 6 Sep 2021 22:59:40 +0200 Subject: [PATCH] Completely remove the testGroup events This was done because they were 1:1 mapping to testRun events, and I could not think of a reasonable way to make them their own thing. --- src/catch2/catch_session.cpp | 2 - .../interfaces/catch_interfaces_reporter.cpp | 28 +- .../interfaces/catch_interfaces_reporter.hpp | 22 - src/catch2/internal/catch_run_context.cpp | 9 - src/catch2/internal/catch_run_context.hpp | 3 - .../reporters/catch_reporter_combined_tu.cpp | 2 - .../reporters/catch_reporter_console.cpp | 21 +- .../reporters/catch_reporter_console.hpp | 2 - .../catch_reporter_cumulative_base.cpp | 8 +- .../catch_reporter_cumulative_base.hpp | 6 +- .../catch_reporter_event_listener.hpp | 2 - src/catch2/reporters/catch_reporter_junit.cpp | 23 +- src/catch2/reporters/catch_reporter_junit.hpp | 6 +- .../reporters/catch_reporter_listening.cpp | 15 - .../reporters/catch_reporter_listening.hpp | 2 - .../reporters/catch_reporter_sonarqube.cpp | 15 +- .../reporters/catch_reporter_sonarqube.hpp | 10 +- .../catch_reporter_streaming_base.cpp | 10 - .../catch_reporter_streaming_base.hpp | 4 - .../reporters/catch_reporter_teamcity.cpp | 12 +- .../reporters/catch_reporter_teamcity.hpp | 4 +- src/catch2/reporters/catch_reporter_xml.cpp | 22 +- src/catch2/reporters/catch_reporter_xml.hpp | 4 - .../SelfTest/Baselines/junit.sw.approved.txt | 2 +- tests/SelfTest/Baselines/xml.sw.approved.txt | 35676 ++++++++-------- 25 files changed, 17874 insertions(+), 18036 deletions(-) diff --git a/src/catch2/catch_session.cpp b/src/catch2/catch_session.cpp index 6ce21803..9738cbb4 100644 --- a/src/catch2/catch_session.cpp +++ b/src/catch2/catch_session.cpp @@ -77,7 +77,6 @@ namespace Catch { Totals execute() { auto const& invalidArgs = m_config->testSpec().getInvalidArgs(); Totals totals; - m_context.testGroupStarting(m_config->name(), 1, 1); for (auto const& testCase : m_tests) { if (!m_context.aborting()) totals += m_context.runTest(*testCase); @@ -97,7 +96,6 @@ namespace Catch { m_reporter->reportInvalidArguments(invalidArg); } - m_context.testGroupEnded(m_config->name(), totals, 1, 1); return totals; } diff --git a/src/catch2/interfaces/catch_interfaces_reporter.cpp b/src/catch2/interfaces/catch_interfaces_reporter.cpp index 19416130..81892e82 100644 --- a/src/catch2/interfaces/catch_interfaces_reporter.cpp +++ b/src/catch2/interfaces/catch_interfaces_reporter.cpp @@ -32,17 +32,9 @@ namespace Catch { TestRunInfo::TestRunInfo( std::string const& _name ) : name( _name ) {} - GroupInfo::GroupInfo( std::string const& _name, - std::size_t _groupIndex, - std::size_t _groupsCount ) - : name( _name ), - groupIndex( _groupIndex ), - groupsCounts( _groupsCount ) - {} - - AssertionStats::AssertionStats( AssertionResult const& _assertionResult, - std::vector const& _infoMessages, - Totals const& _totals ) + AssertionStats::AssertionStats( AssertionResult const& _assertionResult, + std::vector const& _infoMessages, + Totals const& _totals ) : assertionResult( _assertionResult ), infoMessages( _infoMessages ), totals( _totals ) @@ -84,20 +76,6 @@ namespace Catch { {} - TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo, - Totals const& _totals, - bool _aborting ) - : groupInfo( _groupInfo ), - totals( _totals ), - aborting( _aborting ) - {} - - TestGroupStats::TestGroupStats( GroupInfo const& _groupInfo ) - : groupInfo( _groupInfo ), - aborting( false ) - {} - - TestRunStats::TestRunStats( TestRunInfo const& _runInfo, Totals const& _totals, bool _aborting ) diff --git a/src/catch2/interfaces/catch_interfaces_reporter.hpp b/src/catch2/interfaces/catch_interfaces_reporter.hpp index f1d93f7e..2e64d73e 100644 --- a/src/catch2/interfaces/catch_interfaces_reporter.hpp +++ b/src/catch2/interfaces/catch_interfaces_reporter.hpp @@ -48,15 +48,6 @@ namespace Catch { TestRunInfo( std::string const& _name ); std::string name; }; - struct GroupInfo { - GroupInfo( std::string const& _name, - std::size_t _groupIndex, - std::size_t _groupsCount ); - - std::string name; - std::size_t groupIndex; - std::size_t groupsCounts; - }; struct AssertionStats { AssertionStats( AssertionResult const& _assertionResult, @@ -99,17 +90,6 @@ namespace Catch { bool aborting; }; - struct TestGroupStats { - TestGroupStats( GroupInfo const& _groupInfo, - Totals const& _totals, - bool _aborting ); - TestGroupStats( GroupInfo const& _groupInfo ); - - GroupInfo groupInfo; - Totals totals; - bool aborting; - }; - struct TestRunStats { TestRunStats( TestRunInfo const& _runInfo, Totals const& _totals, @@ -196,7 +176,6 @@ namespace Catch { virtual void reportInvalidArguments(std::string const&) {} virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0; - virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0; virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0; virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0; @@ -213,7 +192,6 @@ namespace Catch { virtual void sectionEnded( SectionStats const& sectionStats ) = 0; virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0; - virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0; virtual void testRunEnded( TestRunStats const& testRunStats ) = 0; virtual void skipTest( TestCaseInfo const& testInfo ) = 0; diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp index b3fb8b11..222ee932 100644 --- a/src/catch2/internal/catch_run_context.cpp +++ b/src/catch2/internal/catch_run_context.cpp @@ -175,14 +175,6 @@ namespace Catch { m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, aborting())); } - void RunContext::testGroupStarting(std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount) { - m_reporter->testGroupStarting(GroupInfo(testSpec, groupIndex, groupsCount)); - } - - void RunContext::testGroupEnded(std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount) { - m_reporter->testGroupEnded(TestGroupStats(GroupInfo(testSpec, groupIndex, groupsCount), totals, aborting())); - } - Totals RunContext::runTest(TestCaseHandle const& testCase) { Totals prevTotals = m_totals; @@ -389,7 +381,6 @@ namespace Catch { std::string(), false)); m_totals.testCases.failed++; - testGroupEnded(std::string(), m_totals, 1, 1); m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, false)); } diff --git a/src/catch2/internal/catch_run_context.hpp b/src/catch2/internal/catch_run_context.hpp index 0a20866e..7c315e9a 100644 --- a/src/catch2/internal/catch_run_context.hpp +++ b/src/catch2/internal/catch_run_context.hpp @@ -40,9 +40,6 @@ namespace Catch { ~RunContext() override; - void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount ); - void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount ); - Totals runTest(TestCaseHandle const& testCase); public: // IResultCapture diff --git a/src/catch2/reporters/catch_reporter_combined_tu.cpp b/src/catch2/reporters/catch_reporter_combined_tu.cpp index 42974249..5a75abd2 100644 --- a/src/catch2/reporters/catch_reporter_combined_tu.cpp +++ b/src/catch2/reporters/catch_reporter_combined_tu.cpp @@ -231,12 +231,10 @@ namespace Catch { void EventListenerBase::listTags( std::vector const& ) {} void EventListenerBase::noMatchingTestCases( std::string const& ) {} void EventListenerBase::testRunStarting( TestRunInfo const& ) {} - void EventListenerBase::testGroupStarting( GroupInfo const& ) {} void EventListenerBase::testCaseStarting( TestCaseInfo const& ) {} void EventListenerBase::sectionStarting( SectionInfo const& ) {} void EventListenerBase::sectionEnded( SectionStats const& ) {} void EventListenerBase::testCaseEnded( TestCaseStats const& ) {} - void EventListenerBase::testGroupEnded( TestGroupStats const& ) {} void EventListenerBase::testRunEnded( TestRunStats const& ) {} void EventListenerBase::skipTest( TestCaseInfo const& ) {} } // namespace Catch diff --git a/src/catch2/reporters/catch_reporter_console.cpp b/src/catch2/reporters/catch_reporter_console.cpp index b306800f..0ad31360 100644 --- a/src/catch2/reporters/catch_reporter_console.cpp +++ b/src/catch2/reporters/catch_reporter_console.cpp @@ -487,15 +487,6 @@ void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) { StreamingReporterBase::testCaseEnded(_testCaseStats); m_headerPrinted = false; } -void ConsoleReporter::testGroupEnded(TestGroupStats const& _testGroupStats) { - if (currentGroupInfo.used) { - printSummaryDivider(); - stream << "Summary for group '" << _testGroupStats.groupInfo.name << "':\n"; - printTotals(_testGroupStats.totals); - stream << "\n\n" << std::flush; - } - StreamingReporterBase::testGroupEnded(_testGroupStats); -} void ConsoleReporter::testRunEnded(TestRunStats const& _testRunStats) { printTotalsDivider(_testRunStats.totals); printTotals(_testRunStats.totals); @@ -515,11 +506,9 @@ void ConsoleReporter::lazyPrint() { void ConsoleReporter::lazyPrintWithoutClosingBenchmarkTable() { - if (!currentTestRunInfo.used) + if ( !currentTestRunInfo.used ) { lazyPrintRunInfo(); - if (!currentGroupInfo.used) - lazyPrintGroupInfo(); - + } if (!m_headerPrinted) { printTestCaseAndSectionHeader(); m_headerPrinted = true; @@ -537,12 +526,6 @@ void ConsoleReporter::lazyPrintRunInfo() { currentTestRunInfo.used = true; } -void ConsoleReporter::lazyPrintGroupInfo() { - if (!currentGroupInfo->name.empty() && currentGroupInfo->groupsCounts > 1) { - printClosedHeader("Group: " + currentGroupInfo->name); - currentGroupInfo.used = true; - } -} void ConsoleReporter::printTestCaseAndSectionHeader() { assert(!m_sectionStack.empty()); printOpenHeader(currentTestCaseInfo->name); diff --git a/src/catch2/reporters/catch_reporter_console.hpp b/src/catch2/reporters/catch_reporter_console.hpp index 0cf8589c..d8007a31 100644 --- a/src/catch2/reporters/catch_reporter_console.hpp +++ b/src/catch2/reporters/catch_reporter_console.hpp @@ -40,7 +40,6 @@ namespace Catch { void benchmarkFailed( StringRef error ) override; void testCaseEnded(TestCaseStats const& _testCaseStats) override; - void testGroupEnded(TestGroupStats const& _testGroupStats) override; void testRunEnded(TestRunStats const& _testRunStats) override; void testRunStarting(TestRunInfo const& _testRunInfo) override; private: @@ -49,7 +48,6 @@ namespace Catch { void lazyPrintWithoutClosingBenchmarkTable(); void lazyPrintRunInfo(); - void lazyPrintGroupInfo(); void printTestCaseAndSectionHeader(); void printClosedHeader(std::string const& _name); diff --git a/src/catch2/reporters/catch_reporter_cumulative_base.cpp b/src/catch2/reporters/catch_reporter_cumulative_base.cpp index a76a85ea..e0007030 100644 --- a/src/catch2/reporters/catch_reporter_cumulative_base.cpp +++ b/src/catch2/reporters/catch_reporter_cumulative_base.cpp @@ -98,16 +98,10 @@ namespace Catch { m_deepestSection->stdErr = testCaseStats.stdErr; } - void CumulativeReporterBase::testGroupEnded( - TestGroupStats const& testGroupStats ) { - auto node = Detail::make_unique( testGroupStats ); - node->children.swap( m_testCases ); - m_testGroups.push_back( CATCH_MOVE(node) ); - } void CumulativeReporterBase::testRunEnded( TestRunStats const& testRunStats ) { m_testRuns.emplace_back( testRunStats ); - m_testRuns.back().children.swap( m_testGroups ); + m_testRuns.back().children.swap( m_testCases ); testRunEndedCumulative(); } diff --git a/src/catch2/reporters/catch_reporter_cumulative_base.hpp b/src/catch2/reporters/catch_reporter_cumulative_base.hpp index 2820e9f6..34e5e794 100644 --- a/src/catch2/reporters/catch_reporter_cumulative_base.hpp +++ b/src/catch2/reporters/catch_reporter_cumulative_base.hpp @@ -42,8 +42,7 @@ namespace Catch { using TestCaseNode = Node; - using TestGroupNode = Node; - using TestRunNode = Node; + using TestRunNode = Node; CumulativeReporterBase( ReporterConfig const& _config ): IStreamingReporter( _config.fullConfig() ), @@ -51,7 +50,6 @@ namespace Catch { ~CumulativeReporterBase() override; void testRunStarting( TestRunInfo const& ) override {} - void testGroupStarting( GroupInfo const& ) override {} void testCaseStarting( TestCaseInfo const& ) override {} @@ -62,7 +60,6 @@ namespace Catch { bool assertionEnded( AssertionStats const& assertionStats ) override; void sectionEnded( SectionStats const& sectionStats ) override; void testCaseEnded( TestCaseStats const& testCaseStats ) override; - void testGroupEnded( TestGroupStats const& testGroupStats ) override; void testRunEnded( TestRunStats const& testRunStats ) override; //! Customization point: called after last test finishes (testRunEnded has been handled) virtual void testRunEndedCumulative() = 0; @@ -78,7 +75,6 @@ namespace Catch { // Note: We rely on pointer identity being stable, which is why // which is why we store around pointers rather than values. std::vector> m_testCases; - std::vector> m_testGroups; std::vector m_testRuns; diff --git a/src/catch2/reporters/catch_reporter_event_listener.hpp b/src/catch2/reporters/catch_reporter_event_listener.hpp index ee65eebd..034c6f3c 100644 --- a/src/catch2/reporters/catch_reporter_event_listener.hpp +++ b/src/catch2/reporters/catch_reporter_event_listener.hpp @@ -34,12 +34,10 @@ namespace Catch { void noMatchingTestCases( std::string const& spec ) override; void testRunStarting( TestRunInfo const& testRunInfo ) override; - void testGroupStarting( GroupInfo const& groupInfo ) override; void testCaseStarting( TestCaseInfo const& testInfo ) override; void sectionStarting( SectionInfo const& sectionInfo ) override; void sectionEnded( SectionStats const& sectionStats ) override; void testCaseEnded( TestCaseStats const& testCaseStats ) override; - void testGroupEnded( TestGroupStats const& testGroupStats ) override; void testRunEnded( TestRunStats const& testRunStats ) override; void skipTest( TestCaseInfo const& testInfo ) override; }; diff --git a/src/catch2/reporters/catch_reporter_junit.cpp b/src/catch2/reporters/catch_reporter_junit.cpp index 7570d9ea..ba11c55a 100644 --- a/src/catch2/reporters/catch_reporter_junit.cpp +++ b/src/catch2/reporters/catch_reporter_junit.cpp @@ -75,14 +75,10 @@ namespace Catch { void JunitReporter::testRunStarting( TestRunInfo const& runInfo ) { CumulativeReporterBase::testRunStarting( runInfo ); xml.startElement( "testsuites" ); - } - - void JunitReporter::testGroupStarting( GroupInfo const& groupInfo ) { suiteTimer.start(); stdOutForSuite.clear(); stdErrForSuite.clear(); unexpectedExceptions = 0; - CumulativeReporterBase::testGroupStarting( groupInfo ); } void JunitReporter::testCaseStarting( TestCaseInfo const& testCaseInfo ) { @@ -101,21 +97,20 @@ namespace Catch { CumulativeReporterBase::testCaseEnded( testCaseStats ); } - void JunitReporter::testGroupEnded( TestGroupStats const& testGroupStats ) { - double suiteTime = suiteTimer.getElapsedSeconds(); - CumulativeReporterBase::testGroupEnded( testGroupStats ); - writeGroup( *m_testGroups.back(), suiteTime ); - } - void JunitReporter::testRunEndedCumulative() { + const auto suiteTime = suiteTimer.getElapsedSeconds(); + // HACK: There can only be one testRunNode? This needs to be + // refactored after the group nodes are excised. + assert(m_testRuns.size() == 1); + writeRun( m_testRuns.back(), suiteTime ); xml.endElement(); } - void JunitReporter::writeGroup( TestGroupNode const& groupNode, double suiteTime ) { + void JunitReporter::writeRun( TestRunNode const& testRunNode, double suiteTime ) { XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" ); - TestGroupStats const& stats = groupNode.value; - xml.writeAttribute( "name"_sr, stats.groupInfo.name ); + TestRunStats const& stats = testRunNode.value; + xml.writeAttribute( "name"_sr, stats.runInfo.name ); xml.writeAttribute( "errors"_sr, unexpectedExceptions ); xml.writeAttribute( "failures"_sr, stats.totals.assertions.failed-unexpectedExceptions ); xml.writeAttribute( "tests"_sr, stats.totals.assertions.total() ); @@ -142,7 +137,7 @@ namespace Catch { } // Write test cases - for( auto const& child : groupNode.children ) + for( auto const& child : testRunNode.children ) writeTestCase( *child ); xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite ), XmlFormatting::Newline ); diff --git a/src/catch2/reporters/catch_reporter_junit.hpp b/src/catch2/reporters/catch_reporter_junit.hpp index 4f8cdbf2..752ec274 100644 --- a/src/catch2/reporters/catch_reporter_junit.hpp +++ b/src/catch2/reporters/catch_reporter_junit.hpp @@ -27,19 +27,15 @@ namespace Catch { void testRunStarting(TestRunInfo const& runInfo) override; - void testGroupStarting(GroupInfo const& groupInfo) override; - void testCaseStarting(TestCaseInfo const& testCaseInfo) override; bool assertionEnded(AssertionStats const& assertionStats) override; void testCaseEnded(TestCaseStats const& testCaseStats) override; - void testGroupEnded(TestGroupStats const& testGroupStats) override; - void testRunEndedCumulative() override; private: - void writeGroup(TestGroupNode const& groupNode, double suiteTime); + void writeRun(TestRunNode const& testRunNode, double suiteTime); void writeTestCase(TestCaseNode const& testCaseNode); diff --git a/src/catch2/reporters/catch_reporter_listening.cpp b/src/catch2/reporters/catch_reporter_listening.cpp index 714a349c..74cfd0aa 100644 --- a/src/catch2/reporters/catch_reporter_listening.cpp +++ b/src/catch2/reporters/catch_reporter_listening.cpp @@ -69,14 +69,6 @@ namespace Catch { m_reporter->testRunStarting( testRunInfo ); } - void ListeningReporter::testGroupStarting( GroupInfo const& groupInfo ) { - for ( auto& listener : m_listeners ) { - listener->testGroupStarting( groupInfo ); - } - m_reporter->testGroupStarting( groupInfo ); - } - - void ListeningReporter::testCaseStarting( TestCaseInfo const& testInfo ) { for ( auto& listener : m_listeners ) { listener->testCaseStarting( testInfo ); @@ -120,13 +112,6 @@ namespace Catch { m_reporter->testCaseEnded( testCaseStats ); } - void ListeningReporter::testGroupEnded( TestGroupStats const& testGroupStats ) { - for ( auto& listener : m_listeners ) { - listener->testGroupEnded( testGroupStats ); - } - m_reporter->testGroupEnded( testGroupStats ); - } - void ListeningReporter::testRunEnded( TestRunStats const& testRunStats ) { for ( auto& listener : m_listeners ) { listener->testRunEnded( testRunStats ); diff --git a/src/catch2/reporters/catch_reporter_listening.hpp b/src/catch2/reporters/catch_reporter_listening.hpp index 114a63a4..d00320b0 100644 --- a/src/catch2/reporters/catch_reporter_listening.hpp +++ b/src/catch2/reporters/catch_reporter_listening.hpp @@ -40,7 +40,6 @@ namespace Catch { void benchmarkFailed( StringRef error ) override; void testRunStarting( TestRunInfo const& testRunInfo ) override; - void testGroupStarting( GroupInfo const& groupInfo ) override; void testCaseStarting( TestCaseInfo const& testInfo ) override; void sectionStarting( SectionInfo const& sectionInfo ) override; void assertionStarting( AssertionInfo const& assertionInfo ) override; @@ -49,7 +48,6 @@ namespace Catch { bool assertionEnded( AssertionStats const& assertionStats ) override; void sectionEnded( SectionStats const& sectionStats ) override; void testCaseEnded( TestCaseStats const& testCaseStats ) override; - void testGroupEnded( TestGroupStats const& testGroupStats ) override; void testRunEnded( TestRunStats const& testRunStats ) override; void skipTest( TestCaseInfo const& testInfo ) override; diff --git a/src/catch2/reporters/catch_reporter_sonarqube.cpp b/src/catch2/reporters/catch_reporter_sonarqube.cpp index a450a806..25f6964c 100644 --- a/src/catch2/reporters/catch_reporter_sonarqube.cpp +++ b/src/catch2/reporters/catch_reporter_sonarqube.cpp @@ -22,20 +22,17 @@ namespace Catch { xml.writeAttribute("version"_sr, '1'); } - void SonarQubeReporter::testGroupEnded(TestGroupStats const& testGroupStats) { - CumulativeReporterBase::testGroupEnded(testGroupStats); - writeGroup(*m_testGroups.back()); - } - - void SonarQubeReporter::writeGroup(TestGroupNode const& groupNode) { + void SonarQubeReporter::writeRun( TestRunNode const& runNode ) { std::map> testsPerFile; - for ( auto const& child : groupNode.children ) { + + for ( auto const& child : runNode.children ) { testsPerFile[child->value.testInfo->lineInfo.file].push_back( child.get() ); } - for (auto const& kv : testsPerFile) - writeTestFile(kv.first, kv.second); + for ( auto const& kv : testsPerFile ) { + writeTestFile( kv.first, kv.second ); + } } void SonarQubeReporter::writeTestFile(std::string const& filename, std::vector const& testCaseNodes) { diff --git a/src/catch2/reporters/catch_reporter_sonarqube.hpp b/src/catch2/reporters/catch_reporter_sonarqube.hpp index d46cb422..f48d6406 100644 --- a/src/catch2/reporters/catch_reporter_sonarqube.hpp +++ b/src/catch2/reporters/catch_reporter_sonarqube.hpp @@ -32,15 +32,17 @@ namespace Catch { void noMatchingTestCases(std::string const& /*spec*/) override {} - void testRunStarting(TestRunInfo const& testRunInfo) override; - - void testGroupEnded(TestGroupStats const& testGroupStats) override; + void testRunStarting( TestRunInfo const& testRunInfo ) override; void testRunEndedCumulative() override { + // HACK: There can only be one testRunNode? This needs to be + // refactored after the group nodes are excised. + assert( m_testRuns.size() == 1 ); + writeRun( m_testRuns.back() ); xml.endElement(); } - void writeGroup(TestGroupNode const& groupNode); + void writeRun( TestRunNode const& groupNode ); void writeTestFile(std::string const& filename, std::vector const& testCaseNodes); diff --git a/src/catch2/reporters/catch_reporter_streaming_base.cpp b/src/catch2/reporters/catch_reporter_streaming_base.cpp index d0b8ae94..1c2787ca 100644 --- a/src/catch2/reporters/catch_reporter_streaming_base.cpp +++ b/src/catch2/reporters/catch_reporter_streaming_base.cpp @@ -17,18 +17,8 @@ namespace Catch { currentTestRunInfo = _testRunInfo; } - void - StreamingReporterBase::testGroupStarting( GroupInfo const& _groupInfo ) { - currentGroupInfo = _groupInfo; - } - - void StreamingReporterBase::testGroupEnded( TestGroupStats const& ) { - currentGroupInfo.reset(); - } - void StreamingReporterBase::testRunEnded( TestRunStats const& ) { currentTestCaseInfo = nullptr; - currentGroupInfo.reset(); currentTestRunInfo.reset(); } diff --git a/src/catch2/reporters/catch_reporter_streaming_base.hpp b/src/catch2/reporters/catch_reporter_streaming_base.hpp index b0f1dd49..ddd10c5e 100644 --- a/src/catch2/reporters/catch_reporter_streaming_base.hpp +++ b/src/catch2/reporters/catch_reporter_streaming_base.hpp @@ -48,8 +48,6 @@ namespace Catch { void testRunStarting( TestRunInfo const& _testRunInfo ) override; - void testGroupStarting( GroupInfo const& _groupInfo ) override; - void testCaseStarting(TestCaseInfo const& _testInfo) override { currentTestCaseInfo = &_testInfo; } @@ -63,7 +61,6 @@ namespace Catch { void testCaseEnded(TestCaseStats const& /* _testCaseStats */) override { currentTestCaseInfo = nullptr; } - void testGroupEnded( TestGroupStats const& ) override; void testRunEnded( TestRunStats const& /* _testRunStats */ ) override; void skipTest(TestCaseInfo const&) override { @@ -78,7 +75,6 @@ namespace Catch { std::ostream& stream; LazyStat currentTestRunInfo; - LazyStat currentGroupInfo; TestCaseInfo const* currentTestCaseInfo = nullptr; std::vector m_sectionStack; diff --git a/src/catch2/reporters/catch_reporter_teamcity.cpp b/src/catch2/reporters/catch_reporter_teamcity.cpp index 3a417bd4..6cb15d5d 100644 --- a/src/catch2/reporters/catch_reporter_teamcity.cpp +++ b/src/catch2/reporters/catch_reporter_teamcity.cpp @@ -46,16 +46,14 @@ namespace Catch { TeamCityReporter::~TeamCityReporter() {} - void TeamCityReporter::testGroupStarting(GroupInfo const& groupInfo) { - StreamingReporterBase::testGroupStarting(groupInfo); - stream << "##teamcity[testSuiteStarted name='" - << escape(groupInfo.name) << "']\n"; + void TeamCityReporter::testRunStarting( TestRunInfo const& runInfo ) { + stream << "##teamcity[testSuiteStarted name='" << escape( runInfo.name ) + << "']\n"; } - void TeamCityReporter::testGroupEnded(TestGroupStats const& testGroupStats) { - StreamingReporterBase::testGroupEnded(testGroupStats); + void TeamCityReporter::testRunEnded( TestRunStats const& runStats ) { stream << "##teamcity[testSuiteFinished name='" - << escape(testGroupStats.groupInfo.name) << "']\n"; + << escape( runStats.runInfo.name ) << "']\n"; } bool TeamCityReporter::assertionEnded(AssertionStats const& assertionStats) { diff --git a/src/catch2/reporters/catch_reporter_teamcity.hpp b/src/catch2/reporters/catch_reporter_teamcity.hpp index 300a1e93..57297eed 100644 --- a/src/catch2/reporters/catch_reporter_teamcity.hpp +++ b/src/catch2/reporters/catch_reporter_teamcity.hpp @@ -38,8 +38,8 @@ namespace Catch { void noMatchingTestCases( std::string const& /* spec */ ) override {} - void testGroupStarting(GroupInfo const& groupInfo) override; - void testGroupEnded(TestGroupStats const& testGroupStats) override; + void testRunStarting( TestRunInfo const& groupInfo ) override; + void testRunEnded( TestRunStats const& testGroupStats ) override; void assertionStarting(AssertionInfo const&) override {} diff --git a/src/catch2/reporters/catch_reporter_xml.cpp b/src/catch2/reporters/catch_reporter_xml.cpp index 527ad201..d67c024f 100644 --- a/src/catch2/reporters/catch_reporter_xml.cpp +++ b/src/catch2/reporters/catch_reporter_xml.cpp @@ -55,7 +55,7 @@ namespace Catch { std::string stylesheetRef = getStylesheetRef(); if( !stylesheetRef.empty() ) m_xml.writeStylesheetRef( stylesheetRef ); - m_xml.startElement( "Catch" ); + m_xml.startElement( "Catch2TestRun" ); if( !m_config->name().empty() ) m_xml.writeAttribute( "name"_sr, m_config->name() ); if (m_config->testSpec().hasFilters()) @@ -65,12 +65,6 @@ namespace Catch { .writeAttribute( "seed"_sr, m_config->rngSeed() ); } - void XmlReporter::testGroupStarting( GroupInfo const& groupInfo ) { - StreamingReporterBase::testGroupStarting( groupInfo ); - m_xml.startElement( "Group" ) - .writeAttribute( "name"_sr, groupInfo.name ); - } - void XmlReporter::testCaseStarting( TestCaseInfo const& testInfo ) { StreamingReporterBase::testCaseStarting(testInfo); m_xml.startElement( "TestCase" ) @@ -202,20 +196,6 @@ namespace Catch { m_xml.endElement(); } - void XmlReporter::testGroupEnded( TestGroupStats const& testGroupStats ) { - StreamingReporterBase::testGroupEnded( testGroupStats ); - // TODO: Check testGroupStats.aborting and act accordingly. - m_xml.scopedElement( "OverallResults" ) - .writeAttribute( "successes"_sr, testGroupStats.totals.assertions.passed ) - .writeAttribute( "failures"_sr, testGroupStats.totals.assertions.failed ) - .writeAttribute( "expectedFailures"_sr, testGroupStats.totals.assertions.failedButOk ); - m_xml.scopedElement( "OverallResultsCases") - .writeAttribute( "successes"_sr, testGroupStats.totals.testCases.passed ) - .writeAttribute( "failures"_sr, testGroupStats.totals.testCases.failed ) - .writeAttribute( "expectedFailures"_sr, testGroupStats.totals.testCases.failedButOk ); - m_xml.endElement(); - } - void XmlReporter::testRunEnded( TestRunStats const& testRunStats ) { StreamingReporterBase::testRunEnded( testRunStats ); m_xml.scopedElement( "OverallResults" ) diff --git a/src/catch2/reporters/catch_reporter_xml.hpp b/src/catch2/reporters/catch_reporter_xml.hpp index 00a4006b..da403536 100644 --- a/src/catch2/reporters/catch_reporter_xml.hpp +++ b/src/catch2/reporters/catch_reporter_xml.hpp @@ -33,8 +33,6 @@ namespace Catch { void testRunStarting(TestRunInfo const& testInfo) override; - void testGroupStarting(GroupInfo const& groupInfo) override; - void testCaseStarting(TestCaseInfo const& testInfo) override; void sectionStarting(SectionInfo const& sectionInfo) override; @@ -47,8 +45,6 @@ namespace Catch { void testCaseEnded(TestCaseStats const& testCaseStats) override; - void testGroupEnded(TestGroupStats const& testGroupStats) override; - void testRunEnded(TestRunStats const& testRunStats) override; void benchmarkPreparing( StringRef name ) override; diff --git a/tests/SelfTest/Baselines/junit.sw.approved.txt b/tests/SelfTest/Baselines/junit.sw.approved.txt index dfd2ebe3..88e96b0f 100644 --- a/tests/SelfTest/Baselines/junit.sw.approved.txt +++ b/tests/SelfTest/Baselines/junit.sw.approved.txt @@ -1,7 +1,7 @@ - + diff --git a/tests/SelfTest/Baselines/xml.sw.approved.txt b/tests/SelfTest/Baselines/xml.sw.approved.txt index 5dde47fc..bd12e70a 100644 --- a/tests/SelfTest/Baselines/xml.sw.approved.txt +++ b/tests/SelfTest/Baselines/xml.sw.approved.txt @@ -1,192 +1,219 @@ - + - - - - - - - - fptr == 0 - - - 0 == 0 - - - - - fptr == 0l - - - 0 == 0 - - - - - - - - y.v == 0 - - - 0 == 0 - - - - - 0 == y.v - - - 0 == 0 - - - - - - - - t1 == t2 - - - {?} == {?} - - - - - t1 != t2 - - - {?} != {?} - - - - - t1 < t2 - - - {?} < {?} - - - - - t1 > t2 - - - {?} > {?} - - - - - t1 <= t2 - - - {?} <= {?} - - - - - t1 >= t2 - - - {?} >= {?} - - - - - - - - - - uarr := "123" - - - sarr := "456" - - - - std::memcmp(uarr, "123", sizeof(uarr)) == 0 - - - 0 == 0 - - - - uarr := "123" - - - sarr := "456" - - - - std::memcmp(sarr, "456", sizeof(sarr)) == 0 - - - 0 == 0 - - - - - - - - -
- -
- -
- - - - h1 == h2 - - - [1403 helper] == [1403 helper] - - - - - - + + + + + + + fptr == 0 + + + 0 == 0 + + + + + fptr == 0l + + + 0 == 0 + + + + + + + + y.v == 0 + + + 0 == 0 + + + + + 0 == y.v + + + 0 == 0 + + + + + + + + t1 == t2 + + + {?} == {?} + + + + + t1 != t2 + + + {?} != {?} + + + + + t1 < t2 + + + {?} < {?} + + + + + t1 > t2 + + + {?} > {?} + + + + + t1 <= t2 + + + {?} <= {?} + + + + + t1 >= t2 + + + {?} >= {?} + + + + + + + + + + uarr := "123" + + + sarr := "456" + + + + std::memcmp(uarr, "123", sizeof(uarr)) == 0 + + + 0 == 0 + + + + uarr := "123" + + + sarr := "456" + + + + std::memcmp(sarr, "456", sizeof(sarr)) == 0 + + + 0 == 0 + + + + + + + + +
+ +
+ +
+ + + + h1 == h2 + + + [1403 helper] == [1403 helper] + + + + + + This info message starts with a linebreak - - +
+ This warning message starts with a linebreak - - -
- - - 1514 - - - + + + + + + 1514 + + + This would not be caught previously - - + + Nor would this - - - - - - - std::is_same<TypeList<int>, TypeList<int>>::value - - - true - - - - - + + + + + + + std::is_same<TypeList<int>, TypeList<int>>::value + + + true + + + + + + + + spec.matches(*fakeTestCase("spec . char")) + + + true + + + + + spec.matches(*fakeTestCase("spec , char")) + + + true + + + + + !(spec.matches(*fakeTestCase(R"(spec \, char)"))) + + + !false + + + + + +
- spec.matches(*fakeTestCase("spec . char")) + spec.matches(*fakeTestCase(R"(spec {a} char)")) true @@ -194,7 +221,7 @@ Nor would this - spec.matches(*fakeTestCase("spec , char")) + spec.matches(*fakeTestCase(R"(spec [a] char)")) true @@ -202,179 +229,86 @@ Nor would this - !(spec.matches(*fakeTestCase(R"(spec \, char)"))) + !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) !false - - - -
- - - spec.matches(*fakeTestCase(R"(spec {a} char)")) - - - true - - - - - spec.matches(*fakeTestCase(R"(spec [a] char)")) - - - true - - - - - !(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))) - - - !false - - - -
-
- - - spec.matches(*fakeTestCase(R"(spec \ char)")) - - - true - - - -
- -
- - + +
+
+ - counter < 7 + spec.matches(*fakeTestCase(R"(spec \ char)")) - 3 < 7 + true - - - counter < 7 - - - 6 < 7 - - - - - - - - i != j - - - 1 != 3 - - - - - i != j - - - 1 != 4 - - - - - i != j - - - 2 != 3 - - - - - i != j - - - 2 != 4 - - - - - -
- -
-
- - - m - - - 1 - - - -
-
- - - m - - - 2 - - - -
-
- - - m - - - 3 - - - -
- -
- -
- - - 1 - - - 1 - - - -
- - - m - - - 2 - - - - - m - - - 3 - - - -
- + +
+ +
+ + + + counter < 7 + + + 3 < 7 + + + + + counter < 7 + + + 6 < 7 + + + + + + + + i != j + + + 1 != 3 + + + + + i != j + + + 1 != 4 + + + + + i != j + + + 2 != 3 + + + + + i != j + + + 2 != 4 + + + + + +
+ +
+
m @@ -383,6 +317,9 @@ Nor would this 1 + +
+
m @@ -391,6 +328,9 @@ Nor would this 2 + +
+
m @@ -399,5566 +339,5862 @@ Nor would this 3 - - - -
- -
- - i := 1 - - - j := 3 - - - k := 5 - -
- -
- - i := 1 - - - j := 3 - - - k := 6 - -
- -
- - i := 1 - - - j := 4 - - - k := 5 - - - i := 1 - - - j := 4 - - - k := 6 - -
- -
- - i := 2 - - - j := 3 - - - k := 5 - -
- -
- - i := 2 - - - j := 3 - - - k := 6 - -
- -
- - i := 2 - - - j := 4 - - - k := 5 - - - i := 2 - - - j := 4 - - - k := 6 - - -
- + +
+ +
+ +
- m + 1 1 - + +
+ + + m + + + 2 + + + + + m + + + 3 + + + +
+ + + + m + + + 1 + + + + + m + + + 2 + + + + + m + + + 3 + + + + + +
+ +
+ + i := 1 + + + j := 3 + + + k := 5 + +
+ +
+ + i := 1 + + + j := 3 + + + k := 6 + +
+ +
+ + i := 1 + + + j := 4 + + + k := 5 + + + i := 1 + + + j := 4 + + + k := 6 + +
+ +
+ + i := 2 + + + j := 3 + + + k := 5 + +
+ +
+ + i := 2 + + + j := 3 + + + k := 6 + +
+ +
+ + i := 2 + + + j := 4 + + + k := 5 + + + i := 2 + + + j := 4 + + + k := 6 + + +
+ + + + m + + + 1 + + + + + n + + + 1 + + + + + m + + + 1 + + + + + n + + + 2 + + + + + m + + + 1 + + + + + n + + + 3 + + + + + m + + + 2 + + + + + n + + + 1 + + + + + m + + + 2 + + + + + n + + + 2 + + + + + m + + + 2 + + + + + n + + + 3 + + + + + m + + + 3 + + + + + n + + + 1 + + + + + m + + + 3 + + + + + n + + + 2 + + + + + m + + + 3 + + + + + n + + + 3 + + + + + + + + + + + + + + + + + smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) + + + 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324]) + + + + + smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) + + + 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00]) + + + + + + + + smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) + + + 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45]) + + + + + smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) + + + 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00]) + + + + + +
+ + answer := 42 + + + expected exception + + +
+
+ + answer := 42 + + - n + thisThrows() - 1 + thisThrows() - - - - m - - - 1 - - - - - n - - - 2 - - - - - m - - - 1 - - - - - n - - - 3 - - - - - m - - - 2 - - - - - n - - - 1 - - - - - m - - - 2 - - - - - n - - - 2 - - - - - m - - - 2 - - - - - n - - - 3 - - - - - m - - - 3 - - - - - n - - - 1 - - - - - m - - - 3 - - - - - n - - - 2 - - - - - m - - - 3 - - - - - n - - - 3 - - - - - - - - - - - - - - - - - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) - - - 0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323, 4.9406564584124654e-324]) - - - - - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) - - - 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00]) - - - - - - - - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) - - - 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45]) - - - - - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) - - - 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00]) - - - - - -
- - answer := 42 - expected exception - -
-
- - answer := 42 - - - - thisThrows() - - - thisThrows() - - - expected exception - - - -
-
- - answer := 42 - - - - thisThrows() - - - thisThrows() - - - -
- -
- - - - 42 == f - - - 42 == {?} - - - - - - - a == t - - - 3 == 3 - - - - - a == t - - - 3 == 3 - - - - - throws_int(true) - - - throws_int(true) - - - - - throws_int(true), int - - - throws_int(true), int - - - - - throws_int(false) - - - throws_int(false) - - - - - "aaa", Catch::Matchers::EndsWith("aaa") - - - "aaa" ends with: "aaa" - - - - - templated_tests<int>(3) - - - true - - - - - - - - f() == 0 - - - 1 == 0 - - - - - errno == 1 - - - 1 == 1 - - - - - + +
+
- dummy := 0 + answer := 42 - + - x == 4 + thisThrows() - {?} == 4 + thisThrows() - - - -
- -
-
- -
-
- -
-
- -
-
- -
- -
- - + +
+ +
+ + + + 42 == f + + + 42 == {?} + + + + + + + + a == t + + + 3 == 3 + + + + + a == t + + + 3 == 3 + + + + + throws_int(true) + + + throws_int(true) + + + + + throws_int(true), int + + + throws_int(true), int + + + + + throws_int(false) + + + throws_int(false) + + + + + "aaa", Catch::Matchers::EndsWith("aaa") + + + "aaa" ends with: "aaa" + + + + + templated_tests<int>(3) + + + true + + + + + + + + f() == 0 + + + 1 == 0 + + + + + errno == 1 + + + 1 == 1 + + + + + + + dummy := 0 + + + + x == 4 + + + {?} == 4 + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + + false != false + + + false != false + + + + + true != true + + + true != true + + + + + !true + + + false + + + + + !(true) + + + !true + + + + + !trueValue + + + false + + + + + !(trueValue) + + + !true + + + + + !(1 == 1) + + + false + + + + + !(1 == 1) + + + !(1 == 1) + + + + + + + + false == false + + + false == false + + + + + true == true + + + true == true + + + + + !false + + + true + + + + + !(false) + + + !false + + + + + !falseValue + + + true + + + + + !(falseValue) + + + !false + + + + + !(1 == 2) + + + true + + + + + !(1 == 2) + + + !(1 == 2) + + + + + +
+ - false != false - - - false != false - - - - - true != true - - - true != true - - - - - !true - - - false - - - - - !(true) - - - !true - - - - - !trueValue - - - false - - - - - !(trueValue) - - - !true - - - - - !(1 == 1) - - - false - - - - - !(1 == 1) - - - !(1 == 1) - - - - - - - - false == false - - - false == false - - - - - true == true + is_true<true>::value == true true == true - - - !false - - - true - - - - - !(false) - - - !false - - - - - !falseValue - - - true - - - - - !(falseValue) - - - !false - - - - - !(1 == 2) - - - true - - - - - !(1 == 2) - - - !(1 == 2) - - - - - -
- - - is_true<true>::value == true - - - true == true - - - - - true == is_true<true>::value - - - true == true - - - -
-
- - - is_true<false>::value == false - - - false == false - - - - - false == is_true<false>::value - - - false == false - - - -
-
- - - !is_true<false>::value - - - true - - - -
-
- - - !!is_true<true>::value - - - true - - - -
-
- - - is_true<true>::value - - - true - - - - - !(is_true<false>::value) - - - !false - - - -
- -
- - - - x < y - - - 1 < 4 - - - - - y < z - - - 4 < 7 - - - - - x < z - - - 1 < 7 - - - - - x < y - - - 1 < 4 - - - - - y < z - - - 4 < 8 - - - - - x < z - - - 1 < 8 - - - - - x < y - - - 1 < 4 - - - - - y < z - - - 4 < 9 - - - - - x < z - - - 1 < 9 - - - - - x < y - - - 1 < 5 - - - - - y < z - - - 5 < 7 - - - - - x < z - - - 1 < 7 - - - - - x < y - - - 1 < 5 - - - - - y < z - - - 5 < 8 - - - - - x < z - - - 1 < 8 - - - - - x < y - - - 1 < 5 - - - - - y < z - - - 5 < 9 - - - - - x < z - - - 1 < 9 - - - - - x < y - - - 1 < 6 - - - - - y < z - - - 6 < 7 - - - - - x < z - - - 1 < 7 - - - - - x < y - - - 1 < 6 - - - - - y < z - - - 6 < 8 - - - - - x < z - - - 1 < 8 - - - - - x < y - - - 1 < 6 - - - - - y < z - - - 6 < 9 - - - - - x < z - - - 1 < 9 - - - - - x < y - - - 2 < 4 - - - - - y < z - - - 4 < 7 - - - - - x < z - - - 2 < 7 - - - - - x < y - - - 2 < 4 - - - - - y < z - - - 4 < 8 - - - - - x < z - - - 2 < 8 - - - - - x < y - - - 2 < 4 - - - - - y < z - - - 4 < 9 - - - - - x < z - - - 2 < 9 - - - - - x < y - - - 2 < 5 - - - - - y < z - - - 5 < 7 - - - - - x < z - - - 2 < 7 - - - - - x < y - - - 2 < 5 - - - - - y < z - - - 5 < 8 - - - - - x < z - - - 2 < 8 - - - - - x < y - - - 2 < 5 - - - - - y < z - - - 5 < 9 - - - - - x < z - - - 2 < 9 - - - - - x < y - - - 2 < 6 - - - - - y < z - - - 6 < 7 - - - - - x < z - - - 2 < 7 - - - - - x < y - - - 2 < 6 - - - - - y < z - - - 6 < 8 - - - - - x < z - - - 2 < 8 - - - - - x < y - - - 2 < 6 - - - - - y < z - - - 6 < 9 - - - - - x < z - - - 2 < 9 - - - - - x < y - - - 3 < 4 - - - - - y < z - - - 4 < 7 - - - - - x < z - - - 3 < 7 - - - - - x < y - - - 3 < 4 - - - - - y < z - - - 4 < 8 - - - - - x < z - - - 3 < 8 - - - - - x < y - - - 3 < 4 - - - - - y < z - - - 4 < 9 - - - - - x < z - - - 3 < 9 - - - - - x < y - - - 3 < 5 - - - - - y < z - - - 5 < 7 - - - - - x < z - - - 3 < 7 - - - - - x < y - - - 3 < 5 - - - - - y < z - - - 5 < 8 - - - - - x < z - - - 3 < 8 - - - - - x < y - - - 3 < 5 - - - - - y < z - - - 5 < 9 - - - - - x < z - - - 3 < 9 - - - - - x < y - - - 3 < 6 - - - - - y < z - - - 6 < 7 - - - - - x < z - - - 3 < 7 - - - - - x < y - - - 3 < 6 - - - - - y < z - - - 6 < 8 - - - - - x < z - - - 3 < 8 - - - - - x < y - - - 3 < 6 - - - - - y < z - - - 6 < 9 - - - - - x < z - - - 3 < 9 - - - - - - - - s == "world" - - - "hello" == "world" - - - - - - - - s == "hello" - - - "hello" == "hello" - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 1 - - - 0 == 1 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 1 - - - 0 == 1 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 1 - - - 0 == 1 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 1 - - - 0 == 1 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 0 - - - 0 == 0 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 0 - - - 0 == 0 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 0 - - - 0 == 0 - - - - - - - - Template_Fixture_2<TestType>::m_a.size() == 0 - - - 0 == 0 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() < 2 - - - 6 < 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() < 2 - - - 2 < 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() < 2 - - - 6 < 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() < 2 - - - 2 < 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() >= 2 - - - 6 >= 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() >= 2 - - - 2 >= 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() >= 2 - - - 6 >= 2 - - - - - - - - Template_Fixture_2<TestType>{}.m_a.size() >= 2 - - - 2 >= 2 - - - - - - - - Template_Fixture<TestType>::m_a == 2 - - - 1.0 == 2 - - - - - - - - Template_Fixture<TestType>::m_a == 2 - - - 1.0f == 2 - - - - - - - - Template_Fixture<TestType>::m_a == 2 - - - 1 == 2 - - - - - - - - Template_Fixture<TestType>::m_a == 1 - - - 1.0 == 1 - - - - - - - - Template_Fixture<TestType>::m_a == 1 - - - 1.0f == 1 - - - - - - - - Template_Fixture<TestType>::m_a == 1 - - - 1 == 1 - - - - - - - - Nttp_Fixture<V>::value == 0 - - - 1 == 0 - - - - - - - - Nttp_Fixture<V>::value == 0 - - - 3 == 0 - - - - - - - - Nttp_Fixture<V>::value == 0 - - - 6 == 0 - - - - - - - - Nttp_Fixture<V>::value > 0 - - - 1 > 0 - - - - - - - - Nttp_Fixture<V>::value > 0 - - - 3 > 0 - - - - - - - - Nttp_Fixture<V>::value > 0 - - - 6 > 0 - - - - - - - - m_a == 2 - - - 1 == 2 - - - - - - - - m_a == 1 - - - 1 == 1 - - - - - - - - x.size() == 0 - - - 0 == 0 - - - - - - - - x.size() == 0 - - - 0 == 0 - - - - - - - - x.size() == 0 - - - 0 == 0 - - - - - - - - x.size() == 0 - - - 0 == 0 - - - - - - - - x.size() > 0 - - - 42 > 0 - - - - - - - - x.size() > 0 - - - 9 > 0 - - - - - - - - x.size() > 0 - - - 42 > 0 - - - - - - - - x.size() > 0 - - - 9 > 0 - - - - - - - - d == 1.23_a - - - 1.23 == Approx( 1.23 ) - - - - - d != 1.22_a - - - 1.23 != Approx( 1.22 ) - - - - - -d == -1.23_a - - - -1.23 == Approx( -1.23 ) - - - - - d == 1.2_a .epsilon(.1) - - - 1.23 == Approx( 1.2 ) - - - - - d != 1.2_a .epsilon(.001) - - - 1.23 != Approx( 1.2 ) - - - - - d == 1_a .epsilon(.3) - - - 1.23 == Approx( 1.0 ) - - - - - -
-
- -
- -
- - to infinity and beyond - - -
- - - - &o1 == &o2 - - - 0x == 0x - - - - - o1 == o2 - - - {?} == {?} - - - - - - - - 104.0 != Approx(100.0) - - - 104.0 != Approx( 100.0 ) - - - - - 104.0 == Approx(100.0).margin(5) - - - 104.0 == Approx( 100.0 ) - - - - - 104.0 == Approx(100.0).margin(4) - - - 104.0 == Approx( 100.0 ) - - - - - 104.0 != Approx(100.0).margin(3) - - - 104.0 != Approx( 100.0 ) - - - - - 100.3 != Approx(100.0) - - - 100.3 != Approx( 100.0 ) - - - - - 100.3 == Approx(100.0).margin(0.5) - - - 100.3 == Approx( 100.0 ) - - - - - - - - - i++ == 7 + true == is_true<true>::value - 7 == 7 + true == true + + + +
+
+ + + is_true<false>::value == false + + + false == false - i++ == 8 + false == is_true<false>::value - 8 == 8 + false == false - - - - - - 1 == 1 - - - 1 == 1 - - - - - {Unknown expression after the reported line} - - - {Unknown expression after the reported line} - - - unexpected exception - - - - - - - - - - - Approx(0).margin(0) - - - Approx(0).margin(0) - - - - - Approx(0).margin(1234656) - - - Approx(0).margin(1234656) - - - - - Approx(0).margin(-2), std::domain_error - - - Approx(0).margin(-2), std::domain_error - - - - - Approx(0).epsilon(0) - - - Approx(0).epsilon(0) - - - - - Approx(0).epsilon(1) - - - Approx(0).epsilon(1) - - - - - Approx(0).epsilon(-0.001), std::domain_error - - - Approx(0).epsilon(-0.001), std::domain_error - - - - - Approx(0).epsilon(1.0001), std::domain_error - - - Approx(0).epsilon(1.0001), std::domain_error - - - - - - - - 0.25f == Approx(0.0f).margin(0.25f) - - - 0.25f == Approx( 0.0 ) - - - - - 0.0f == Approx(0.25f).margin(0.25f) - - - 0.0f == Approx( 0.25 ) - - - - - 0.5f == Approx(0.25f).margin(0.25f) - - - 0.5f == Approx( 0.25 ) - - - - - 245.0f == Approx(245.25f).margin(0.25f) - - - 245.0f == Approx( 245.25 ) - - - - - 245.5f == Approx(245.25f).margin(0.25f) - - - 245.5f == Approx( 245.25 ) - - - - - - - - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) - - - 3.1428571429 == Approx( 3.141 ) - - - - - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) - - - 3.1428571429 != Approx( 3.141 ) - - - - - - - - d != Approx( 1.231 ) - - - 1.23 != Approx( 1.231 ) - - - - - d == Approx( 1.231 ).epsilon( 0.1 ) - - - 1.23 == Approx( 1.231 ) - - - - - - - - 1.23f == Approx( 1.23f ) - - - 1.23f == Approx( 1.2300000191 ) - - - - - 0.0f == Approx( 0.0f ) - - - 0.0f == Approx( 0.0 ) - - - - - - - - 1 == Approx( 1 ) - - - 1 == Approx( 1.0 ) - - - - - 0 == Approx( 0 ) - - - 0 == Approx( 0.0 ) - - - - - - - - 1.0f == Approx( 1 ) - - - 1.0f == Approx( 1.0 ) - - - - - 0 == Approx( dZero) - - - 0 == Approx( 0.0 ) - - - - - 0 == Approx( dSmall ).margin( 0.001 ) - - - 0 == Approx( 0.00001 ) - - - - - 1.234f == Approx( dMedium ) - - - 1.234f == Approx( 1.234 ) - - - - - dMedium == Approx( 1.234f ) - - - 1.234 == Approx( 1.2339999676 ) - - - - - -
- - - 1, Predicate<int>( alwaysTrue, "always true" ) - - - 1 matches predicate: "always true" - - - - - 1, !Predicate<int>( alwaysFalse, "always false" ) - - - 1 not matches predicate: "always false" - - - -
-
- - - "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) - - - "Hello olleH" matches predicate: "First and last character should be equal" - - - - - "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) - - - "This wouldn't pass" not matches undescribed predicate - - - -
- -
- - - - lhs | rhs - - - Val: 1 | Val: 2 - - - - - !(lhs & rhs) - - - !(Val: 1 & Val: 2) - - - - - HasBitOperators{ 1 } & HasBitOperators{ 1 } - - - Val: 1 & Val: 1 - - - - - lhs ^ rhs - - - Val: 1 ^ Val: 2 - - - - - !(lhs ^ lhs) - - - !(Val: 1 ^ Val: 1) - - - - - + +
+
- true + !is_true<false>::value true -
- - - true - - - true - - -
- - - true - - - true - - - -
- -
+ +
+
- true + !!is_true<true>::value true -
- - - true - - - true - - -
- - - true - - - true - - - -
- -
- - - -
- - - a, Contains(1) - - - { 1, 2, 3 } contains element 1 - - - - - b, Contains(1) - - - { 0, 1, 2 } contains element 1 - - - - - c, !Contains(1) - - - { 4, 5, 6 } not contains element 1 - - - -
-
- - - a, Contains(0, close_enough) - - - { 1, 2, 3 } contains element 0 - - - - - b, Contains(0, close_enough) - - - { 0, 1, 2 } contains element 0 - - - - - c, !Contains(0, close_enough) - - - { 4, 5, 6 } not contains element 0 - - - -
-
- - - a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) - - - { "abc", "abcd", "abcde" } contains element 4 - - - -
-
- - - in, Contains(1) - - - { 1, 2, 3, 4, 5 } contains element 1 - - - - - in, !Contains(8) - - - { 1, 2, 3, 4, 5 } not contains element 8 - - - -
-
- - - in, Contains(MoveOnlyTestElement{ 2 }) - - - { 1, 2, 3 } contains element 2 - - - - - in, !Contains(MoveOnlyTestElement{ 9 }) - - - { 1, 2, 3 } not contains element 9 - - - -
-
- - - in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) - - - { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5 - - - -
- -
- -
- - - empty_array, IsEmpty() - - - { } is empty - - - - - non_empty_array, !IsEmpty() - - - { 0.0 } not is empty - - - - - empty_vec, IsEmpty() - - - { } is empty - - - - - non_empty_vec, !IsEmpty() - - - { 'a', 'b', 'c' } not is empty - - - - - inner_lists_are_empty, !IsEmpty() - - - { { } } not is empty - - - - - inner_lists_are_empty.front(), IsEmpty() - - - { } is empty - - - -
-
- - - has_empty{}, !IsEmpty() - - - {?} not is empty - - - -
-
- - - unrelated::ADL_empty{}, IsEmpty() - - - {?} is empty - - - -
- -
- - - a := 1 - - - b := 2 - - - c := 3 - - - a + b := 3 - - - a+b := 3 - - - c > b := true - - - a == 1 := true - - - - - - std::vector<int>{1, 2, 3}[0, 1, 2] := 3 - - - std::vector<int>{1, 2, 3}[(0, 1)] := 2 - - - std::vector<int>{1, 2, 3}[0] := 1 - - - (helper_1436<int, int>{12, -12}) := { 12, -12 } - - - (helper_1436<int, int>(-12, 12)) := { -12, 12 } - - - (1, 2) := 2 - - - (2, 3) := 3 - - - - - - ("comma, in string", "escaped, \", ") := "escaped, ", " - - - "single quote in string,'," := "single quote in string,'," - - - "some escapes, \\,\\\\" := "some escapes, \,\\" - - - "some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<" - - - '"' := '"' - - - '\'' := ''' - - - ',' := ',' - - - '}' := '}' - - - ')' := ')' - - - '(' := '(' - - - '{' := '{' - - - - -
- - i := 2 - - - - true - - - true - - - -
-
- - 3 - - - - true - - - true - - - -
- -
- -
- - - tab == '\t' - - - '\t' == '\t' - - - - - newline == '\n' - - - '\n' == '\n' - - - - - carr_return == '\r' - - - '\r' == '\r' - - - - - form_feed == '\f' - - - '\f' == '\f' - - - -
-
- - - space == ' ' - - - ' ' == ' ' - - - - - c == chars[i] - - - 'a' == 'a' - - - - - c == chars[i] - - - 'z' == 'z' - - - - - c == chars[i] - - - 'A' == 'A' - - - - - c == chars[i] - - - 'Z' == 'Z' - - - -
-
- - - null_terminator == '\0' - - - 0 == 0 - - - - - c == i - - - 2 == 2 - - - - - c == i - - - 3 == 3 - - - - - c == i - - - 4 == 4 - - - - - c == i - - - 5 == 5 - - - -
- -
- - - - name.empty() - - - true - - - - - name == "foo" - - - "foo" == "foo" - - - - - - - - 1, ( MatcherA() && MatcherB() ) && MatcherC() - - - 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 ) - - - - - 1, MatcherA() && ( MatcherB() && MatcherC() ) - - - 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 ) - - - - - 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) - - - 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 and equals: true ) - - - - - - - - 1, ( MatcherA() || MatcherB() ) || MatcherC() - - - 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 ) - - - - - 1, MatcherA() || ( MatcherB() || MatcherC() ) - - - 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 ) - - - - - 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) - - - 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 or equals: true ) - - - - - - - - 0, !MatcherA() - - - 0 not equals: (int) 1 or (float) 1.0f - - - - - 1, !!MatcherA() - - - 1 equals: (int) 1 or (float) 1.0f - - - - - 0, !!!MatcherA() - - - 0 not equals: (int) 1 or (float) 1.0f - - - - - 1, !!!!MatcherA() - - - 1 equals: (int) 1 or (float) 1.0f - - - - - - - - - - - 1, MatcherA() || MatcherB() - - - 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 ) - - - - - 1, MatcherA() && MatcherB() - - - 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 ) - - - - - 1, MatcherA() || !MatcherB() - - - 1 ( equals: (int) 1 or (float) 1.0f or not equals: (long long) 1 ) - - - - - - - - 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 ) - - - { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } ) - - - - - str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) - - - "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" ) - - - - - str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) - - - "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" ) - - - - - str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) - - - "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) - - - - - str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) - - - "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) - - - - - str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) - - - "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) ) - - - - - str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) - - - "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } ) - - - - - - - - container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) - - - { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } ) - - - - - - - - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} - - - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} - - - - - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} - - - std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} - - - - - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} - - - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} - - - - - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} - - - std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} - - + +
+
- std::vector<int>{1, 2} == std::vector<int>{1, 2} + is_true<true>::value - { 1, 2 } == { 1, 2 } - - - - - std::vector<int>{1, 2} == std::vector<int>{1, 2} - - - { 1, 2 } == { 1, 2 } + true - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) + !(is_true<false>::value) - !({ 1, 2 } == { 1, 2, 3 }) + !false - - - !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) - - - !({ 1, 2 } == { 1, 2, 3 }) - - - - - std::vector<int>{1, 2} == std::vector<int>{1, 2} - - - { 1, 2 } == { 1, 2 } - - - - - std::vector<int>{1, 2} == std::vector<int>{1, 2} - - - { 1, 2 } == { 1, 2 } - - - - - true - - - true - - - - - std::vector<int>{1, 2} == std::vector<int>{1, 2} - - - { 1, 2 } == { 1, 2 } - - - - - - - - a - - - 0x - - - - - a == &foo - - - 0x == 0x - - - - - - - - SimplePcg32{} == SimplePcg32{} - - - {?} == {?} - - - - - SimplePcg32{ 0 } != SimplePcg32{} - - - {?} != {?} - - - - - !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) - - - !({?} == {?}) - - - - - !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) - - - !({?} != {?}) - - - - - - - - td == Approx(10.0) - - - StrongDoubleTypedef(10) == Approx( 10.0 ) - - - - - Approx(10.0) == td - - - Approx( 10.0 ) == StrongDoubleTypedef(10) - - - - - td != Approx(11.0) - - - StrongDoubleTypedef(10) != Approx( 11.0 ) - - - - - Approx(11.0) != td - - - Approx( 11.0 ) != StrongDoubleTypedef(10) - - - - - td <= Approx(10.0) - - - StrongDoubleTypedef(10) <= Approx( 10.0 ) - - - - - td <= Approx(11.0) - - - StrongDoubleTypedef(10) <= Approx( 11.0 ) - - - - - Approx(10.0) <= td - - - Approx( 10.0 ) <= StrongDoubleTypedef(10) - - - - - Approx(9.0) <= td - - - Approx( 9.0 ) <= StrongDoubleTypedef(10) - - - - - td >= Approx(9.0) - - - StrongDoubleTypedef(10) >= Approx( 9.0 ) - - - - - td >= Approx(td) - - - StrongDoubleTypedef(10) >= Approx( 10.0 ) - - - - - Approx(td) >= td - - - Approx( 10.0 ) >= StrongDoubleTypedef(10) - - - - - Approx(11.0) >= td - - - Approx( 11.0 ) >= StrongDoubleTypedef(10) - - - - - - - - 54 == 6*9 - - - 54 == 54 - - - - - - - - ( -1 > 2u ) - - - true - - - - - -1 > 2u - - - -1 > 2 - - - - - ( 2u < -1 ) - - - true - - - - - 2u < -1 - - - 2 < -1 - - - - - ( minInt > 2u ) - - - true - - - - - minInt > 2u - - - -2147483648 > 2 - - - - - - - - i == 1 - - - 1 == 1 - - - - - ui == 2 - - - 2 == 2 - - - - - l == 3 - - - 3 == 3 - - - - - ul == 4 - - - 4 == 4 - - - - - c == 5 - - - 5 == 5 - - - - - uc == 6 - - - 6 == 6 - - - - - 1 == i - - - 1 == 1 - - - - - 2 == ui - - - 2 == 2 - - - - - 3 == l - - - 3 == 3 - - - - - 4 == ul - - - 4 == 4 - - - - - 5 == c - - - 5 == 5 - - - - - 6 == uc - - - 6 == 6 - - - - - (std::numeric_limits<uint32_t>::max)() > ul - - - 4294967295 (0x) > 4 - - - - - -
- - - !(matcher.match( 1 )) - - - !false - - - - - first.matchCalled - - - true - - - - - !second.matchCalled - - - true - - - -
-
- - - matcher.match( 1 ) - - - true - - - - - first.matchCalled - - - true - - - - - !second.matchCalled - - - true - - - -
- -
- -
- - - !(matcher.match( 1 )) - - - !false - - - - - first.matchCalled - - - true - - - - - !second.matchCalled - - - true - - - -
-
- - - matcher.match( 1 ) - - - true - - - - - first.matchCalled - - - true - - - - - !second.matchCalled - - - true - - - -
- -
- - - - testStringForMatching(), Contains( "not there", Catch::CaseSensitive::No ) - - - "this string contains 'abc' as a substring" contains: "not there" (case insensitive) - - - - - testStringForMatching(), Contains( "STRING" ) - - - "this string contains 'abc' as a substring" contains: "STRING" - - - - - -
- - - elem % 2 == 1 - - - 1 == 1 - - + +
+ +
+ + + + x < y + + + 1 < 4 + + + + + y < z + + + 4 < 7 + + + + + x < z + + + 1 < 7 + + + + + x < y + + + 1 < 4 + + + + + y < z + + + 4 < 8 + + + + + x < z + + + 1 < 8 + + + + + x < y + + + 1 < 4 + + + + + y < z + + + 4 < 9 + + + + + x < z + + + 1 < 9 + + + + + x < y + + + 1 < 5 + + + + + y < z + + + 5 < 7 + + + + + x < z + + + 1 < 7 + + + + + x < y + + + 1 < 5 + + + + + y < z + + + 5 < 8 + + + + + x < z + + + 1 < 8 + + + + + x < y + + + 1 < 5 + + + + + y < z + + + 5 < 9 + + + + + x < z + + + 1 < 9 + + + + + x < y + + + 1 < 6 + + + + + y < z + + + 6 < 7 + + + + + x < z + + + 1 < 7 + + + + + x < y + + + 1 < 6 + + + + + y < z + + + 6 < 8 + + + + + x < z + + + 1 < 8 + + + + + x < y + + + 1 < 6 + + + + + y < z + + + 6 < 9 + + + + + x < z + + + 1 < 9 + + + + + x < y + + + 2 < 4 + + + + + y < z + + + 4 < 7 + + + + + x < z + + + 2 < 7 + + + + + x < y + + + 2 < 4 + + + + + y < z + + + 4 < 8 + + + + + x < z + + + 2 < 8 + + + + + x < y + + + 2 < 4 + + + + + y < z + + + 4 < 9 + + + + + x < z + + + 2 < 9 + + + + + x < y + + + 2 < 5 + + + + + y < z + + + 5 < 7 + + + + + x < z + + + 2 < 7 + + + + + x < y + + + 2 < 5 + + + + + y < z + + + 5 < 8 + + + + + x < z + + + 2 < 8 + + + + + x < y + + + 2 < 5 + + + + + y < z + + + 5 < 9 + + + + + x < z + + + 2 < 9 + + + + + x < y + + + 2 < 6 + + + + + y < z + + + 6 < 7 + + + + + x < z + + + 2 < 7 + + + + + x < y + + + 2 < 6 + + + + + y < z + + + 6 < 8 + + + + + x < z + + + 2 < 8 + + + + + x < y + + + 2 < 6 + + + + + y < z + + + 6 < 9 + + + + + x < z + + + 2 < 9 + + + + + x < y + + + 3 < 4 + + + + + y < z + + + 4 < 7 + + + + + x < z + + + 3 < 7 + + + + + x < y + + + 3 < 4 + + + + + y < z + + + 4 < 8 + + + + + x < z + + + 3 < 8 + + + + + x < y + + + 3 < 4 + + + + + y < z + + + 4 < 9 + + + + + x < z + + + 3 < 9 + + + + + x < y + + + 3 < 5 + + + + + y < z + + + 5 < 7 + + + + + x < z + + + 3 < 7 + + + + + x < y + + + 3 < 5 + + + + + y < z + + + 5 < 8 + + + + + x < z + + + 3 < 8 + + + + + x < y + + + 3 < 5 + + + + + y < z + + + 5 < 9 + + + + + x < z + + + 3 < 9 + + + + + x < y + + + 3 < 6 + + + + + y < z + + + 6 < 7 + + + + + x < z + + + 3 < 7 + + + + + x < y + + + 3 < 6 + + + + + y < z + + + 6 < 8 + + + + + x < z + + + 3 < 8 + + + + + x < y + + + 3 < 6 + + + + + y < z + + + 6 < 9 + + + + + x < z + + + 3 < 9 + + + + + + + + s == "world" + + + "hello" == "world" + + + + + + + + s == "hello" + + + "hello" == "hello" + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 1 + + + 0 == 1 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 1 + + + 0 == 1 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 1 + + + 0 == 1 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 1 + + + 0 == 1 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 0 + + + 0 == 0 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 0 + + + 0 == 0 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 0 + + + 0 == 0 + + + + + + + + Template_Fixture_2<TestType>::m_a.size() == 0 + + + 0 == 0 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() < 2 + + + 6 < 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() < 2 + + + 2 < 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() < 2 + + + 6 < 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() < 2 + + + 2 < 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() >= 2 + + + 6 >= 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() >= 2 + + + 2 >= 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() >= 2 + + + 6 >= 2 + + + + + + + + Template_Fixture_2<TestType>{}.m_a.size() >= 2 + + + 2 >= 2 + + + + + + + + Template_Fixture<TestType>::m_a == 2 + + + 1.0 == 2 + + + + + + + + Template_Fixture<TestType>::m_a == 2 + + + 1.0f == 2 + + + + + + + + Template_Fixture<TestType>::m_a == 2 + + + 1 == 2 + + + + + + + + Template_Fixture<TestType>::m_a == 1 + + + 1.0 == 1 + + + + + + + + Template_Fixture<TestType>::m_a == 1 + + + 1.0f == 1 + + + + + + + + Template_Fixture<TestType>::m_a == 1 + + + 1 == 1 + + + + + + + + Nttp_Fixture<V>::value == 0 + + + 1 == 0 + + + + + + + + Nttp_Fixture<V>::value == 0 + + + 3 == 0 + + + + + + + + Nttp_Fixture<V>::value == 0 + + + 6 == 0 + + + + + + + + Nttp_Fixture<V>::value > 0 + + + 1 > 0 + + + + + + + + Nttp_Fixture<V>::value > 0 + + + 3 > 0 + + + + + + + + Nttp_Fixture<V>::value > 0 + + + 6 > 0 + + + + + + + + m_a == 2 + + + 1 == 2 + + + + + + + + m_a == 1 + + + 1 == 1 + + + + + + + + x.size() == 0 + + + 0 == 0 + + + + + + + + x.size() == 0 + + + 0 == 0 + + + + + + + + x.size() == 0 + + + 0 == 0 + + + + + + + + x.size() == 0 + + + 0 == 0 + + + + + + + + x.size() > 0 + + + 42 > 0 + + + + + + + + x.size() > 0 + + + 9 > 0 + + + + + + + + x.size() > 0 + + + 42 > 0 + + + + + + + + x.size() > 0 + + + 9 > 0 + + + + + + + + d == 1.23_a + + + 1.23 == Approx( 1.23 ) + + + + + d != 1.22_a + + + 1.23 != Approx( 1.22 ) + + + + + -d == -1.23_a + + + -1.23 == Approx( -1.23 ) + + + + + d == 1.2_a .epsilon(.1) + + + 1.23 == Approx( 1.2 ) + + + + + d != 1.2_a .epsilon(.001) + + + 1.23 != Approx( 1.2 ) + + + + + d == 1_a .epsilon(.3) + + + 1.23 == Approx( 1.0 ) + + + + + +
+
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - elem % 2 == 1 - - - 1 == 1 - - - -
-
- - - call_count == 1 - - - 1 == 1 - - - - - make_data().size() == test_count - - - 6 == 6 - - - -
- - - - - - throwCustom() - - - throwCustom() - - - custom exception - not std - - - - - - - - throwCustom(), std::exception - - - throwCustom(), std::exception - - - custom exception - not std - - - - - + +
+ + to infinity and beyond + + +
+ + + + &o1 == &o2 + + + 0x == 0x + + + + + o1 == o2 + + + {?} == {?} + + + + + + + + 104.0 != Approx(100.0) + + + 104.0 != Approx( 100.0 ) + + + + + 104.0 == Approx(100.0).margin(5) + + + 104.0 == Approx( 100.0 ) + + + + + 104.0 == Approx(100.0).margin(4) + + + 104.0 == Approx( 100.0 ) + + + + + 104.0 != Approx(100.0).margin(3) + + + 104.0 != Approx( 100.0 ) + + + + + 100.3 != Approx(100.0) + + + 100.3 != Approx( 100.0 ) + + + + + 100.3 == Approx(100.0).margin(0.5) + + + 100.3 == Approx( 100.0 ) + + + + + + + + + + + i++ == 7 + + + 7 == 7 + + + + + i++ == 8 + + + 8 == 8 + + + + + + + + 1 == 1 + + + 1 == 1 + + + + + {Unknown expression after the reported line} + + + {Unknown expression after the reported line} + - custom std exception + unexpected exception - - - - + + + + + + + + + + Approx(0).margin(0) + + + Approx(0).margin(0) + + + + + Approx(0).margin(1234656) + + + Approx(0).margin(1234656) + + + + + Approx(0).margin(-2), std::domain_error + + + Approx(0).margin(-2), std::domain_error + + + + + Approx(0).epsilon(0) + + + Approx(0).epsilon(0) + + + + + Approx(0).epsilon(1) + + + Approx(0).epsilon(1) + + + + + Approx(0).epsilon(-0.001), std::domain_error + + + Approx(0).epsilon(-0.001), std::domain_error + + + + + Approx(0).epsilon(1.0001), std::domain_error + + + Approx(0).epsilon(1.0001), std::domain_error + + + + + + + + 0.25f == Approx(0.0f).margin(0.25f) + + + 0.25f == Approx( 0.0 ) + + + + + 0.0f == Approx(0.25f).margin(0.25f) + + + 0.0f == Approx( 0.25 ) + + + + + 0.5f == Approx(0.25f).margin(0.25f) + + + 0.5f == Approx( 0.25 ) + + + + + 245.0f == Approx(245.25f).margin(0.25f) + + + 245.0f == Approx( 245.25 ) + + + + + 245.5f == Approx(245.25f).margin(0.25f) + + + 245.5f == Approx( 245.25 ) + + + + + + + + divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) + + + 3.1428571429 == Approx( 3.141 ) + + + + + divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) + + + 3.1428571429 != Approx( 3.141 ) + + + + + + + + d != Approx( 1.231 ) + + + 1.23 != Approx( 1.231 ) + + + + + d == Approx( 1.231 ).epsilon( 0.1 ) + + + 1.23 == Approx( 1.231 ) + + + + + + + + 1.23f == Approx( 1.23f ) + + + 1.23f == Approx( 1.2300000191 ) + + + + + 0.0f == Approx( 0.0f ) + + + 0.0f == Approx( 0.0 ) + + + + + + + + 1 == Approx( 1 ) + + + 1 == Approx( 1.0 ) + + + + + 0 == Approx( 0 ) + + + 0 == Approx( 0.0 ) + + + + + + + + 1.0f == Approx( 1 ) + + + 1.0f == Approx( 1.0 ) + + + + + 0 == Approx( dZero) + + + 0 == Approx( 0.0 ) + + + + + 0 == Approx( dSmall ).margin( 0.001 ) + + + 0 == Approx( 0.00001 ) + + + + + 1.234f == Approx( dMedium ) + + + 1.234f == Approx( 1.234 ) + + + + + dMedium == Approx( 1.234f ) + + + 1.234 == Approx( 1.2339999676 ) + + + + + +
+ - 101.000001 != Approx(100).epsilon(0.01) + 1, Predicate<int>( alwaysTrue, "always true" ) - 101.000001 != Approx( 100.0 ) + 1 matches predicate: "always true" - + - std::pow(10, -5) != Approx(std::pow(10, -7)) + 1, !Predicate<int>( alwaysFalse, "always false" ) - 0.00001 != Approx( 0.0000001 ) + 1 not matches predicate: "always false" - - - - + +
+
+ - enumInfo->lookup(0) == "Value1" + "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) - Value1 == "Value1" + "Hello olleH" matches predicate: "First and last character should be equal" - + - enumInfo->lookup(1) == "Value2" + "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) - Value2 == "Value2" + "This wouldn't pass" not matches undescribed predicate - + +
+ +
+ + + + lhs | rhs + + + Val: 1 | Val: 2 + + + + + !(lhs & rhs) + + + !(Val: 1 & Val: 2) + + + + + HasBitOperators{ 1 } & HasBitOperators{ 1 } + + + Val: 1 & Val: 1 + + + + + lhs ^ rhs + + + Val: 1 ^ Val: 2 + + + + + !(lhs ^ lhs) + + + !(Val: 1 ^ Val: 1) + + + + + + + + true + + + true + + +
+ - enumInfo->lookup(3) == "{** unexpected enum value **}" + true - {** unexpected enum value **} -== -"{** unexpected enum value **}" + true - - - - +
+ + + true + + + true + + + +
+ +
+ + + true + + + true + + +
+ - testStringForMatching(), EndsWith( "Substring" ) + true - "this string contains 'abc' as a substring" ends with: "Substring" + true - +
+ + + true + + + true + + + +
+ +
+ +
+ +
+ - testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) + a, Contains(1) - "this string contains 'abc' as a substring" ends with: "this" (case insensitive) + { 1, 2, 3 } contains element 1 - - - - + - stringify( EnumClass3::Value1 ) == "Value1" + b, Contains(1) - "Value1" == "Value1" + { 0, 1, 2 } contains element 1 - + - stringify( EnumClass3::Value2 ) == "Value2" + c, !Contains(1) - "Value2" == "Value2" + { 4, 5, 6 } not contains element 1 - + +
+
+ - stringify( EnumClass3::Value3 ) == "Value3" + a, Contains(0, close_enough) - "Value3" == "Value3" + { 1, 2, 3 } contains element 0 - + - stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" + b, Contains(0, close_enough) - "{** unexpected enum value **}" -== -"{** unexpected enum value **}" + { 0, 1, 2 } contains element 0 - + - stringify( ec3 ) == "Value2" + c, !Contains(0, close_enough) - "Value2" == "Value2" + { 4, 5, 6 } not contains element 0 - - - - + +
+
+ - stringify( Bikeshed::Colours::Red ) == "Red" + a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) - "Red" == "Red" + { "abc", "abcd", "abcde" } contains element 4 - + +
+
+ - stringify( Bikeshed::Colours::Blue ) == "Blue" + in, Contains(1) - "Blue" == "Blue" + { 1, 2, 3, 4, 5 } contains element 1 - - - - + - 101.01 != Approx(100).epsilon(0.01) + in, !Contains(8) - 101.01 != Approx( 100.0 ) + { 1, 2, 3, 4, 5 } not contains element 8 - - - - + +
+
+ - data.int_seven == 6 + in, Contains(MoveOnlyTestElement{ 2 }) - 7 == 6 + { 1, 2, 3 } contains element 2 - + - data.int_seven == 8 + in, !Contains(MoveOnlyTestElement{ 9 }) - 7 == 8 + { 1, 2, 3 } not contains element 9 - + +
+
+ - data.int_seven == 0 + in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) - 7 == 0 + { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5 - + +
+ +
+ +
+ - data.float_nine_point_one == Approx( 9.11f ) + empty_array, IsEmpty() - 9.1f == Approx( 9.1099996567 ) + { } is empty - + - data.float_nine_point_one == Approx( 9.0f ) + non_empty_array, !IsEmpty() - 9.1f == Approx( 9.0 ) + { 0.0 } not is empty - + - data.float_nine_point_one == Approx( 1 ) + empty_vec, IsEmpty() - 9.1f == Approx( 1.0 ) + { } is empty - + - data.float_nine_point_one == Approx( 0 ) + non_empty_vec, !IsEmpty() - 9.1f == Approx( 0.0 ) + { 'a', 'b', 'c' } not is empty - + - data.double_pi == Approx( 3.1415 ) + inner_lists_are_empty, !IsEmpty() - 3.1415926535 == Approx( 3.1415 ) + { { } } not is empty - + - data.str_hello == "goodbye" + inner_lists_are_empty.front(), IsEmpty() - "hello" == "goodbye" + { } is empty - + +
+
+ - data.str_hello == "hell" + has_empty{}, !IsEmpty() - "hello" == "hell" + {?} not is empty - + +
+
+ - data.str_hello == "hello1" + unrelated::ADL_empty{}, IsEmpty() - "hello" == "hello1" + {?} is empty - - - data.str_hello.size() == 6 - - - 5 == 6 - - - - - x == Approx( 1.301 ) - - - 1.3 == Approx( 1.301 ) - - - - - - - - data.int_seven == 7 - - - 7 == 7 - - - - - data.float_nine_point_one == Approx( 9.1f ) - - - 9.1f == Approx( 9.1000003815 ) - - - - - data.double_pi == Approx( 3.1415926535 ) - - - 3.1415926535 == Approx( 3.1415926535 ) - - - - - data.str_hello == "hello" - - - "hello" == "hello" - - - - - "hello" == data.str_hello - - - "hello" == "hello" - - - - - data.str_hello.size() == 5 - - - 5 == 5 - - - - - x == Approx( 1.3 ) - - - 1.3 == Approx( 1.3 ) - - - - - - - - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) - - - "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" - - - - - testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) - - - "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive) - - - - - - - - testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) - - - "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring" - - - - - testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) - - - "this string contains 'abc' as a substring" equals: "something else" (case insensitive) - - - - - + +
+ +
+ + + a := 1 + + + b := 2 + + + c := 3 + + + a + b := 3 + + + a+b := 3 + + + c > b := true + + + a == 1 := true + + + + + + std::vector<int>{1, 2, 3}[0, 1, 2] := 3 + + + std::vector<int>{1, 2, 3}[(0, 1)] := 2 + + + std::vector<int>{1, 2, 3}[0] := 1 + + + (helper_1436<int, int>{12, -12}) := { 12, -12 } + + + (helper_1436<int, int>(-12, 12)) := { -12, 12 } + + + (1, 2) := 2 + + + (2, 3) := 3 + + + + + + ("comma, in string", "escaped, \", ") := "escaped, ", " + + + "single quote in string,'," := "single quote in string,'," + + + "some escapes, \\,\\\\" := "some escapes, \,\\" + + + "some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[<" + + + '"' := '"' + + + '\'' := ''' + + + ',' := ',' + + + '}' := '}' + + + ')' := ')' + + + '(' := '(' + + + '{' := '{' + + + + +
+ + i := 2 + - ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" + true - "This exception has overridden what() method" + true + + + +
+
+ + 3 + + + + true + + + true + + + +
+ +
+ +
+ + + tab == '\t' + + + '\t' == '\t' + + + + + newline == '\n' + + + '\n' == '\n' + + + + + carr_return == '\r' + + + '\r' == '\r' + + + + + form_feed == '\f' + + + '\f' == '\f' + + + +
+
+ + + space == ' ' + + + ' ' == ' ' + + + + + c == chars[i] + + + 'a' == 'a' + + + + + c == chars[i] + + + 'z' == 'z' + + + + + c == chars[i] + + + 'A' == 'A' + + + + + c == chars[i] + + + 'Z' == 'Z' + + + +
+
+ + + null_terminator == '\0' + + + 0 == 0 + + + + + c == i + + + 2 == 2 + + + + + c == i + + + 3 == 3 + + + + + c == i + + + 4 == 4 + + + + + c == i + + + 5 == 5 + + + +
+ +
+ + + + name.empty() + + + true + + + + + name == "foo" + + + "foo" == "foo" + + + + + + + + 1, ( MatcherA() && MatcherB() ) && MatcherC() + + + 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 ) + + + + + 1, MatcherA() && ( MatcherB() && MatcherC() ) + + + 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 ) + + + + + 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) + + + 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 and equals: true ) + + + + + + + + 1, ( MatcherA() || MatcherB() ) || MatcherC() + + + 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 ) + + + + + 1, MatcherA() || ( MatcherB() || MatcherC() ) + + + 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 ) + + + + + 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) + + + 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 or equals: (T) 1 or equals: true ) + + + + + + + + 0, !MatcherA() + + + 0 not equals: (int) 1 or (float) 1.0f + + + + + 1, !!MatcherA() + + + 1 equals: (int) 1 or (float) 1.0f + + + + + 0, !!!MatcherA() + + + 0 not equals: (int) 1 or (float) 1.0f + + + + + 1, !!!!MatcherA() + + + 1 equals: (int) 1 or (float) 1.0f + + + + + + + + + + + 1, MatcherA() || MatcherB() + + + 1 ( equals: (int) 1 or (float) 1.0f or equals: (long long) 1 ) + + + + + 1, MatcherA() && MatcherB() + + + 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 ) + + + + + 1, MatcherA() || !MatcherB() + + + 1 ( equals: (int) 1 or (float) 1.0f or not equals: (long long) 1 ) + + + + + + + + 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 ) + + + { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5, 3, 1 } ) + + + + + str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) + + + "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and ends with: "bar" ) + + + + + str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) + + + "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and ends with: "bar" ) + + + + + str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) + + + "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) + + + + + str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) + + + "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with: "foo" and ends with: "bar" ) + + + + + str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) + + + "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo" and ends with: "bar" ) ) + + + + + str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) + + + "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } ) + + + + + + + + container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) + + + { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6 } ) + + + + + + + + std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} + + + std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} + + + + + std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} + + + std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} + + + + + std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} + + + std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} + + + + + std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} + + + std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} + + + + + std::vector<int>{1, 2} == std::vector<int>{1, 2} + + + { 1, 2 } == { 1, 2 } + + + + + std::vector<int>{1, 2} == std::vector<int>{1, 2} + + + { 1, 2 } == { 1, 2 } + + + + + !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) + + + !({ 1, 2 } == { 1, 2, 3 }) + + + + + !(std::vector<int>{1, 2} == std::vector<int>{1, 2, 3}) + + + !({ 1, 2 } == { 1, 2, 3 }) + + + + + std::vector<int>{1, 2} == std::vector<int>{1, 2} + + + { 1, 2 } == { 1, 2 } + + + + + std::vector<int>{1, 2} == std::vector<int>{1, 2} + + + { 1, 2 } == { 1, 2 } + + + + + true + + + true + + + + + std::vector<int>{1, 2} == std::vector<int>{1, 2} + + + { 1, 2 } == { 1, 2 } + + + + + + + + a + + + 0x + + + + + a == &foo + + + 0x == 0x + + + + + + + + SimplePcg32{} == SimplePcg32{} + + + {?} == {?} + + + + + SimplePcg32{ 0 } != SimplePcg32{} + + + {?} != {?} + + + + + !(SimplePcg32{ 1 } == SimplePcg32{ 2 }) + + + !({?} == {?}) + + + + + !(SimplePcg32{ 1 } != SimplePcg32{ 1 }) + + + !({?} != {?}) + + + + + + + + td == Approx(10.0) + + + StrongDoubleTypedef(10) == Approx( 10.0 ) + + + + + Approx(10.0) == td + + + Approx( 10.0 ) == StrongDoubleTypedef(10) + + + + + td != Approx(11.0) + + + StrongDoubleTypedef(10) != Approx( 11.0 ) + + + + + Approx(11.0) != td + + + Approx( 11.0 ) != StrongDoubleTypedef(10) + + + + + td <= Approx(10.0) + + + StrongDoubleTypedef(10) <= Approx( 10.0 ) + + + + + td <= Approx(11.0) + + + StrongDoubleTypedef(10) <= Approx( 11.0 ) + + + + + Approx(10.0) <= td + + + Approx( 10.0 ) <= StrongDoubleTypedef(10) + + + + + Approx(9.0) <= td + + + Approx( 9.0 ) <= StrongDoubleTypedef(10) + + + + + td >= Approx(9.0) + + + StrongDoubleTypedef(10) >= Approx( 9.0 ) + + + + + td >= Approx(td) + + + StrongDoubleTypedef(10) >= Approx( 10.0 ) + + + + + Approx(td) >= td + + + Approx( 10.0 ) >= StrongDoubleTypedef(10) + + + + + Approx(11.0) >= td + + + Approx( 11.0 ) >= StrongDoubleTypedef(10) + + + + + + + + 54 == 6*9 + + + 54 == 54 + + + + + + + + ( -1 > 2u ) + + + true + + + + + -1 > 2u + + + -1 > 2 + + + + + ( 2u < -1 ) + + + true + + + + + 2u < -1 + + + 2 < -1 + + + + + ( minInt > 2u ) + + + true + + + + + minInt > 2u + + + -2147483648 > 2 + + + + + + + + i == 1 + + + 1 == 1 + + + + + ui == 2 + + + 2 == 2 + + + + + l == 3 + + + 3 == 3 + + + + + ul == 4 + + + 4 == 4 + + + + + c == 5 + + + 5 == 5 + + + + + uc == 6 + + + 6 == 6 + + + + + 1 == i + + + 1 == 1 + + + + + 2 == ui + + + 2 == 2 + + + + + 3 == l + + + 3 == 3 + + + + + 4 == ul + + + 4 == 4 + + + + + 5 == c + + + 5 == 5 + + + + + 6 == uc + + + 6 == 6 + + + + + (std::numeric_limits<uint32_t>::max)() > ul + + + 4294967295 (0x) > 4 + + + + + +
+ + + !(matcher.match( 1 )) + + + !false + + + + + first.matchCalled + + + true + + + + + !second.matchCalled + + + true + + + +
+
+ + + matcher.match( 1 ) + + + true + + + + + first.matchCalled + + + true + + + + + !second.matchCalled + + + true + + + +
+ +
+ +
+ + + !(matcher.match( 1 )) + + + !false + + + + + first.matchCalled + + + true + + + + + !second.matchCalled + + + true + + + +
+
+ + + matcher.match( 1 ) + + + true + + + + + first.matchCalled + + + true + + + + + !second.matchCalled + + + true + + + +
+ +
+ + + + testStringForMatching(), Contains( "not there", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" contains: "not there" (case insensitive) + + + + + testStringForMatching(), Contains( "STRING" ) + + + "this string contains 'abc' as a substring" contains: "STRING" + + + + + +
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + elem % 2 == 1 + + + 1 == 1 + + + +
+
+ + + call_count == 1 + + + 1 == 1 + + + + + make_data().size() == test_count + + + 6 == 6 + + + +
+ +
+ + + + throwCustom() + + + throwCustom() + + + custom exception - not std + + + + + + + + throwCustom(), std::exception + + + throwCustom(), std::exception + + + custom exception - not std + + + + + + + custom std exception + + + + + + + 101.000001 != Approx(100).epsilon(0.01) + + + 101.000001 != Approx( 100.0 ) + + + + + std::pow(10, -5) != Approx(std::pow(10, -7)) + + + 0.00001 != Approx( 0.0000001 ) + + + + + + + + enumInfo->lookup(0) == "Value1" + + + Value1 == "Value1" + + + + + enumInfo->lookup(1) == "Value2" + + + Value2 == "Value2" + + + + + enumInfo->lookup(3) == "{** unexpected enum value **}" + + + {** unexpected enum value **} +== +"{** unexpected enum value **}" + + + + + + + + testStringForMatching(), EndsWith( "Substring" ) + + + "this string contains 'abc' as a substring" ends with: "Substring" + + + + + testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" ends with: "this" (case insensitive) + + + + + + + + stringify( EnumClass3::Value1 ) == "Value1" + + + "Value1" == "Value1" + + + + + stringify( EnumClass3::Value2 ) == "Value2" + + + "Value2" == "Value2" + + + + + stringify( EnumClass3::Value3 ) == "Value3" + + + "Value3" == "Value3" + + + + + stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" + + + "{** unexpected enum value **}" +== +"{** unexpected enum value **}" + + + + + stringify( ec3 ) == "Value2" + + + "Value2" == "Value2" + + + + + + + + stringify( Bikeshed::Colours::Red ) == "Red" + + + "Red" == "Red" + + + + + stringify( Bikeshed::Colours::Blue ) == "Blue" + + + "Blue" == "Blue" + + + + + + + + 101.01 != Approx(100).epsilon(0.01) + + + 101.01 != Approx( 100.0 ) + + + + + + + + data.int_seven == 6 + + + 7 == 6 + + + + + data.int_seven == 8 + + + 7 == 8 + + + + + data.int_seven == 0 + + + 7 == 0 + + + + + data.float_nine_point_one == Approx( 9.11f ) + + + 9.1f == Approx( 9.1099996567 ) + + + + + data.float_nine_point_one == Approx( 9.0f ) + + + 9.1f == Approx( 9.0 ) + + + + + data.float_nine_point_one == Approx( 1 ) + + + 9.1f == Approx( 1.0 ) + + + + + data.float_nine_point_one == Approx( 0 ) + + + 9.1f == Approx( 0.0 ) + + + + + data.double_pi == Approx( 3.1415 ) + + + 3.1415926535 == Approx( 3.1415 ) + + + + + data.str_hello == "goodbye" + + + "hello" == "goodbye" + + + + + data.str_hello == "hell" + + + "hello" == "hell" + + + + + data.str_hello == "hello1" + + + "hello" == "hello1" + + + + + data.str_hello.size() == 6 + + + 5 == 6 + + + + + x == Approx( 1.301 ) + + + 1.3 == Approx( 1.301 ) + + + + + + + + data.int_seven == 7 + + + 7 == 7 + + + + + data.float_nine_point_one == Approx( 9.1f ) + + + 9.1f == Approx( 9.1000003815 ) + + + + + data.double_pi == Approx( 3.1415926535 ) + + + 3.1415926535 == Approx( 3.1415926535 ) + + + + + data.str_hello == "hello" + + + "hello" == "hello" + + + + + "hello" == data.str_hello + + + "hello" == "hello" + + + + + data.str_hello.size() == 5 + + + 5 == 5 + + + + + x == Approx( 1.3 ) + + + 1.3 == Approx( 1.3 ) + + + + + + + + testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) + + + "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" + + + + + testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive) + + + + + + + + testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) + + + "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring" + + + + + testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" equals: "something else" (case insensitive) + + + + + + + + ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" + + + "This exception has overridden what() method" == "This exception has overridden what() method" - - - - - ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" - - - "OperatorException" == "OperatorException" - - - - - ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" - - - "StringMakerException" + + + + + ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" + + + "OperatorException" == "OperatorException" + + + + + ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" + + + "StringMakerException" == "StringMakerException" + + + + + +
+ + + doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } + + + doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } - - - -
- - - doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } - - - doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } - - - - - doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } - - - doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } - - - -
-
- - - throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } - - - throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } - - - Unknown exception - - - - - throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } - - - throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } - - - Unknown exception - - - -
-
- - - throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } - - - SpecialException::what special exception has value of 1 - - - - - throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } - - - SpecialException::what special exception has value of 1 - - - -
- -
- - + - throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } + doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } + + + doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } + + + +
+
+ + + throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } + + + throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } + + + Unknown exception + + + + + throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } + + + throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } + + + Unknown exception + + + +
+
+ + + throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } SpecialException::what special exception has value of 1 - + - throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } + throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } - SpecialException::what special exception has value of 2 + SpecialException::what special exception has value of 1 - - - -
- + +
+ +
+ + + + throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } + + + SpecialException::what special exception has value of 1 + + + + + throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } + + + SpecialException::what special exception has value of 2 + + + + + +
+ + + thisThrows(), "expected exception" + + + "expected exception" equals: "expected exception" + + + +
+
+ + + thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) + + + "expected exception" equals: "expected exception" (case insensitive) + + + +
+
+ + + thisThrows(), StartsWith( "expected" ) + + + "expected exception" starts with: "expected" + + + + + thisThrows(), EndsWith( "exception" ) + + + "expected exception" ends with: "exception" + + + + + thisThrows(), Contains( "except" ) + + + "expected exception" contains: "except" + + + + + thisThrows(), Contains( "exCept", Catch::CaseSensitive::No ) + + + "expected exception" contains: "except" (case insensitive) + + + +
+ +
+ + + + throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) + + + DerivedException::what exception message matches "DerivedException::what" + + + + + throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) + + + DerivedException::what not exception message matches "derivedexception::what" + + + + + throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) + + + SpecialException::what not exception message matches "DerivedException::what" + + + + + throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) + + + SpecialException::what exception message matches "SpecialException::what" + + + + + + + + thisThrows(), std::string + + + thisThrows(), std::string + + + expected exception + + + + + thisDoesntThrow(), std::domain_error + + + thisDoesntThrow(), std::domain_error + + + + + thisThrows() + + + thisThrows() + + + expected exception + + + + + + + This is a failure + + + + + + + + + + This is a failure + + + This message appears in the output + + + + + + + Factorial(0) == 1 + + + 1 == 1 + + + + + Factorial(1) == 1 + + + 1 == 1 + + + + + Factorial(2) == 2 + + + 2 == 2 + + + + + Factorial(3) == 6 + + + 6 == 6 + + + + + Factorial(10) == 3628800 + + + 3628800 (0x) == 3628800 (0x) + + + + + +
+ + + 10., WithinRel( 11.1, 0.1 ) + + + 10.0 and 11.1 are within 10% of each other + + + + + 10., !WithinRel( 11.2, 0.1 ) + + + 10.0 not and 11.2 are within 10% of each other + + + + + 1., !WithinRel( 0., 0.99 ) + + + 1.0 not and 0 are within 99% of each other + + + + + -0., WithinRel( 0. ) + + + -0.0 and 0 are within 2.22045e-12% of each other + + +
+ - thisThrows(), "expected exception" + v1, WithinRel( v2 ) - "expected exception" equals: "expected exception" + 0.0 and 2.22507e-308 are within 2.22045e-12% of each other
-
- + +
+
+ + + 1., WithinAbs( 1., 0 ) + + + 1.0 is within 0.0 of 1.0 + + + + + 0., WithinAbs( 1., 1 ) + + + 0.0 is within 1.0 of 1.0 + + + + + 0., !WithinAbs( 1., 0.99 ) + + + 0.0 not is within 0.99 of 1.0 + + + + + 0., !WithinAbs( 1., 0.99 ) + + + 0.0 not is within 0.99 of 1.0 + + + + + 11., !WithinAbs( 10., 0.5 ) + + + 11.0 not is within 0.5 of 10.0 + + + + + 10., !WithinAbs( 11., 0.5 ) + + + 10.0 not is within 0.5 of 11.0 + + + + + -10., WithinAbs( -10., 0.5 ) + + + -10.0 is within 0.5 of -10.0 + + + + + -10., WithinAbs( -9.6, 0.5 ) + + + -10.0 is within 0.5 of -9.6 + + + +
+
+ + + 1., WithinULP( 1., 0 ) + + + 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) + + + + + nextafter( 1., 2. ), WithinULP( 1., 1 ) + + + 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) + + + + + 0., WithinULP( nextafter( 0., 1. ), 1 ) + + + 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) + + + + + 1., WithinULP( nextafter( 1., 0. ), 1 ) + + + 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00]) + + + + + 1., !WithinULP( nextafter( 1., 2. ), 0 ) + + + 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00]) + + + + + 1., WithinULP( 1., 0 ) + + + 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) + + + + + -0., WithinULP( 0., 0 ) + + + -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00]) + + + +
+
+ + + 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) + + + 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) ) + + + + + 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) + + + 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) ) + + + + + 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) + + + 0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other ) + + + +
+
+ + + WithinAbs( 1., 0. ) + + + WithinAbs( 1., 0. ) + + + + + WithinAbs( 1., -1. ), std::domain_error + + + WithinAbs( 1., -1. ), std::domain_error + + + + + WithinULP( 1., 0 ) + + + WithinULP( 1., 0 ) + + + + + WithinRel( 1., 0. ) + + + WithinRel( 1., 0. ) + + + + + WithinRel( 1., -0.2 ), std::domain_error + + + WithinRel( 1., -0.2 ), std::domain_error + + + + + WithinRel( 1., 1. ), std::domain_error + + + WithinRel( 1., 1. ), std::domain_error + + + +
+ + + +
+ + + 10.f, WithinRel( 11.1f, 0.1f ) + + + 10.0f and 11.1 are within 10% of each other + + + + + 10.f, !WithinRel( 11.2f, 0.1f ) + + + 10.0f not and 11.2 are within 10% of each other + + + + + 1.f, !WithinRel( 0.f, 0.99f ) + + + 1.0f not and 0 are within 99% of each other + + + + + -0.f, WithinRel( 0.f ) + + + -0.0f and 0 are within 0.00119209% of each other + + +
+ - thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) + v1, WithinRel( v2 ) - "expected exception" equals: "expected exception" (case insensitive) + 0.0f and 1.17549e-38 are within 0.00119209% of each other
-
- + +
+
+ + + 1.f, WithinAbs( 1.f, 0 ) + + + 1.0f is within 0.0 of 1.0 + + + + + 0.f, WithinAbs( 1.f, 1 ) + + + 0.0f is within 1.0 of 1.0 + + + + + 0.f, !WithinAbs( 1.f, 0.99f ) + + + 0.0f not is within 0.9900000095 of 1.0 + + + + + 0.f, !WithinAbs( 1.f, 0.99f ) + + + 0.0f not is within 0.9900000095 of 1.0 + + + + + 0.f, WithinAbs( -0.f, 0 ) + + + 0.0f is within 0.0 of -0.0 + + + + + 11.f, !WithinAbs( 10.f, 0.5f ) + + + 11.0f not is within 0.5 of 10.0 + + + + + 10.f, !WithinAbs( 11.f, 0.5f ) + + + 10.0f not is within 0.5 of 11.0 + + + + + -10.f, WithinAbs( -10.f, 0.5f ) + + + -10.0f is within 0.5 of -10.0 + + + + + -10.f, WithinAbs( -9.6f, 0.5f ) + + + -10.0f is within 0.5 of -9.6000003815 + + + +
+
+ + + 1.f, WithinULP( 1.f, 0 ) + + + 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) + + + + + -1.f, WithinULP( -1.f, 0 ) + + + -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) + + + + + nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) + + + 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) + + + + + 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) + + + 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) + + + + + 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) + + + 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00]) + + + + + 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) + + + 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00]) + + + + + 1.f, WithinULP( 1.f, 0 ) + + + 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) + + + + + -0.f, WithinULP( 0.f, 0 ) + + + -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00]) + + + +
+
+ + + 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) + + + 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) ) + + + + + 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) + + + 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) + + + + + 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) + + + 0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other ) + + + +
+
+ + + WithinAbs( 1.f, 0.f ) + + + WithinAbs( 1.f, 0.f ) + + + + + WithinAbs( 1.f, -1.f ), std::domain_error + + + WithinAbs( 1.f, -1.f ), std::domain_error + + + + + WithinULP( 1.f, 0 ) + + + WithinULP( 1.f, 0 ) + + + + + WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error + + + WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error + + + + + WithinRel( 1.f, 0.f ) + + + WithinRel( 1.f, 0.f ) + + + + + WithinRel( 1.f, -0.2f ), std::domain_error + + + WithinRel( 1.f, -0.2f ), std::domain_error + + + + + WithinRel( 1.f, 1.f ), std::domain_error + + + WithinRel( 1.f, 1.f ), std::domain_error + + + +
+ + + +
+
+ - thisThrows(), StartsWith( "expected" ) + i % 2 == 0 - "expected exception" starts with: "expected" + 0 == 0 - - - thisThrows(), EndsWith( "exception" ) - - - "expected exception" ends with: "exception" - - - - - thisThrows(), Contains( "except" ) - - - "expected exception" contains: "except" - - - - - thisThrows(), Contains( "exCept", Catch::CaseSensitive::No ) - - - "expected exception" contains: "except" (case insensitive) - - - +
- - - - + +
+
+
+ + + i % 2 == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + i % 2 == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + filter([] (int) {return false; }, value(1)), Catch::GeneratorException + + + filter([] (int) {return false; }, value(1)), Catch::GeneratorException + + + +
+ +
+
+ - throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) + i < 4 - DerivedException::what exception message matches "DerivedException::what" + 1 < 4 - + +
+
+ - throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) + i < 4 - DerivedException::what not exception message matches "derivedexception::what" + 2 < 4 - + +
+
+ - throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) + i < 4 - SpecialException::what not exception message matches "DerivedException::what" + 3 < 4 - + +
+
+
+ + + i % 2 == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + i % 2 == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + i % 2 == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + i.size() == 1 + + + 1 == 1 + + + +
+ +
+
+ - throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) + j > 0 - SpecialException::what exception message matches "SpecialException::what" + 1 > 0 - - - - + +
+
+ - thisThrows(), std::string + j > 0 - thisThrows(), std::string + 2 > 0 - - expected exception - - + +
+
+ - thisDoesntThrow(), std::domain_error + j > 0 - thisDoesntThrow(), std::domain_error + 3 > 0 - + +
+
+ - thisThrows() + j > 0 - thisThrows() + 1 > 0 - - expected exception - - - - - - This is a failure - - - - - - - - - - This is a failure - - - This message appears in the output - - - - - + +
+
+ - Factorial(0) == 1 + j > 0 + + + 2 > 0 + + + +
+
+ + + j > 0 + + + 3 > 0 + + + +
+
+
+ + + chunk2.size() == 2 + + + 2 == 2 + + + + + chunk2.front() == chunk2.back() + + + 1 == 1 + + + +
+ +
+
+
+ + + chunk2.size() == 2 + + + 2 == 2 + + + + + chunk2.front() == chunk2.back() + + + 2 == 2 + + + +
+ +
+
+
+ + + chunk2.size() == 2 + + + 2 == 2 + + + + + chunk2.front() == chunk2.back() + + + 3 == 3 + + + +
+ +
+
+
+ + + chunk2.size() == 2 + + + 2 == 2 + + + + + chunk2.front() == chunk2.back() + + + 1 == 1 + + + + + chunk2.front() < 3 + + + 1 < 3 + + + +
+ +
+
+
+ + + chunk2.size() == 2 + + + 2 == 2 + + + + + chunk2.front() == chunk2.back() + + + 2 == 2 + + + + + chunk2.front() < 3 + + + 2 < 3 + + + +
+ +
+
+
+ + + chunk2.size() == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + chunk2.size() == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + chunk2.size() == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + chunk(2, value(1)), Catch::GeneratorException + + + chunk(2, value(1)), Catch::GeneratorException + + + +
+ +
+ +
+ +
+ + + j < i + + + -3 < 1 + + + +
+
+ + + j < i + + + -2 < 1 + + + +
+
+ + + j < i + + + -1 < 1 + + + +
+
+ + + 4u * i > str.size() + + + 4 > 1 + + + +
+
+ + + 4u * i > str.size() + + + 4 > 2 + + + +
+
+ + + 4u * i > str.size() + + + 4 > 3 + + + +
+
+ + + j < i + + + -3 < 2 + + + +
+
+ + + j < i + + + -2 < 2 + + + +
+
+ + + j < i + + + -1 < 2 + + + +
+
+ + + 4u * i > str.size() + + + 8 > 1 + + + +
+
+ + + 4u * i > str.size() + + + 8 > 2 + + + +
+
+ + + 4u * i > str.size() + + + 8 > 3 + + + +
+
+ + + j < i + + + -3 < 3 + + + +
+
+ + + j < i + + + -2 < 3 + + + +
+
+ + + j < i + + + -1 < 3 + + + +
+
+ + + 4u * i > str.size() + + + 12 > 1 + + + +
+
+ + + 4u * i > str.size() + + + 12 > 2 + + + +
+
+ + + 4u * i > str.size() + + + 12 > 3 + + + +
+ +
+ +
+ + + gen.get() == 123 + + + 123 == 123 + + + + + !(gen.next()) + + + !false + + + +
+
+ + + gen.get() == 1 1 == 1 - + - Factorial(1) == 1 + gen.next() + + + true + + + + + gen.get() == 3 + + + 3 == 3 + + + + + gen.next() + + + true + + + + + gen.get() == 5 + + + 5 == 5 + + + + + !(gen.next()) + + + !false + + + +
+
+ + + gen.get() == 1 1 == 1 - + - Factorial(2) == 2 + gen.next() + + + true + + + + + gen.get() == 5 + + + 5 == 5 + + + + + gen.next() + + + true + + + + + gen.get() == 2 2 == 2 - + - Factorial(3) == 6 + gen.next() - 6 == 6 + true - + - Factorial(10) == 3628800 + gen.get() == 4 - 3628800 (0x) == 3628800 (0x) + 4 == 4 - - - -
- - - 10., WithinRel( 11.1, 0.1 ) - - - 10.0 and 11.1 are within 10% of each other - - - - - 10., !WithinRel( 11.2, 0.1 ) - - - 10.0 not and 11.2 are within 10% of each other - - - - - 1., !WithinRel( 0., 0.99 ) - - - 1.0 not and 0 are within 99% of each other - - - - - -0., WithinRel( 0. ) - - - -0.0 and 0 are within 2.22045e-12% of each other - - -
- - - v1, WithinRel( v2 ) - - - 0.0 and 2.22507e-308 are within 2.22045e-12% of each other - - - -
- -
-
- - - 1., WithinAbs( 1., 0 ) - - - 1.0 is within 0.0 of 1.0 - - - - - 0., WithinAbs( 1., 1 ) - - - 0.0 is within 1.0 of 1.0 - - - - - 0., !WithinAbs( 1., 0.99 ) - - - 0.0 not is within 0.99 of 1.0 - - - - - 0., !WithinAbs( 1., 0.99 ) - - - 0.0 not is within 0.99 of 1.0 - - - - - 11., !WithinAbs( 10., 0.5 ) - - - 11.0 not is within 0.5 of 10.0 - - - - - 10., !WithinAbs( 11., 0.5 ) - - - 10.0 not is within 0.5 of 11.0 - - - - - -10., WithinAbs( -10., 0.5 ) - - - -10.0 is within 0.5 of -10.0 - - - - - -10., WithinAbs( -9.6, 0.5 ) - - - -10.0 is within 0.5 of -9.6 - - - -
-
- - - 1., WithinULP( 1., 0 ) - - - 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) - - - - - nextafter( 1., 2. ), WithinULP( 1., 1 ) - - - 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) - - - - - 0., WithinULP( nextafter( 0., 1. ), 1 ) - - - 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) - - - - - 1., WithinULP( nextafter( 1., 0. ), 1 ) - - - 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00]) - - - - - 1., !WithinULP( nextafter( 1., 2. ), 0 ) - - - 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00]) - - - - - 1., WithinULP( 1., 0 ) - - - 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) - - - - - -0., WithinULP( 0., 0 ) - - - -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.0000000000000000e+00]) - - - -
-
- - - 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) - - - 1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.9999999999999998e+00, 2.0000000000000004e+00]) ) - - - - - 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) - - - 1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) ) - - - - - 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) - - - 0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other ) - - - -
-
- - - WithinAbs( 1., 0. ) - - - WithinAbs( 1., 0. ) - - - - - WithinAbs( 1., -1. ), std::domain_error - - - WithinAbs( 1., -1. ), std::domain_error - - - - - WithinULP( 1., 0 ) - - - WithinULP( 1., 0 ) - - - - - WithinRel( 1., 0. ) - - - WithinRel( 1., 0. ) - - - - - WithinRel( 1., -0.2 ), std::domain_error - - - WithinRel( 1., -0.2 ), std::domain_error - - - - - WithinRel( 1., 1. ), std::domain_error - - - WithinRel( 1., 1. ), std::domain_error - - - -
- -
- -
- - - 10.f, WithinRel( 11.1f, 0.1f ) - - - 10.0f and 11.1 are within 10% of each other - - - - - 10.f, !WithinRel( 11.2f, 0.1f ) - - - 10.0f not and 11.2 are within 10% of each other - - - - - 1.f, !WithinRel( 0.f, 0.99f ) - - - 1.0f not and 0 are within 99% of each other - - - - - -0.f, WithinRel( 0.f ) - - - -0.0f and 0 are within 0.00119209% of each other - - -
- - - v1, WithinRel( v2 ) - - - 0.0f and 1.17549e-38 are within 0.00119209% of each other - - - -
- -
-
- - - 1.f, WithinAbs( 1.f, 0 ) - - - 1.0f is within 0.0 of 1.0 - - - - - 0.f, WithinAbs( 1.f, 1 ) - - - 0.0f is within 1.0 of 1.0 - - - - - 0.f, !WithinAbs( 1.f, 0.99f ) - - - 0.0f not is within 0.9900000095 of 1.0 - - - - - 0.f, !WithinAbs( 1.f, 0.99f ) - - - 0.0f not is within 0.9900000095 of 1.0 - - - - - 0.f, WithinAbs( -0.f, 0 ) - - - 0.0f is within 0.0 of -0.0 - - - - - 11.f, !WithinAbs( 10.f, 0.5f ) - - - 11.0f not is within 0.5 of 10.0 - - - - - 10.f, !WithinAbs( 11.f, 0.5f ) - - - 10.0f not is within 0.5 of 11.0 - - - - - -10.f, WithinAbs( -10.f, 0.5f ) - - - -10.0f is within 0.5 of -10.0 - - - - - -10.f, WithinAbs( -9.6f, 0.5f ) - - - -10.0f is within 0.5 of -9.6000003815 - - - -
-
- - - 1.f, WithinULP( 1.f, 0 ) - - - 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) - - - - - -1.f, WithinULP( -1.f, 0 ) - - - -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) - - - - - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) - - - 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) - - - - - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) - - - 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) - - - - - 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) - - - 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00]) - - - - - 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) - - - 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00]) - - - - - 1.f, WithinULP( 1.f, 0 ) - - - 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) - - - - - -0.f, WithinULP( 0.f, 0 ) - - - -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00]) - - - -
-
- - - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) - - - 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) ) - - - - - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) - - - 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) - - - - - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) - - - 0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other ) - - - -
-
- - - WithinAbs( 1.f, 0.f ) - - - WithinAbs( 1.f, 0.f ) - - - - - WithinAbs( 1.f, -1.f ), std::domain_error - - - WithinAbs( 1.f, -1.f ), std::domain_error - - - - - WithinULP( 1.f, 0 ) - - - WithinULP( 1.f, 0 ) - - - - - WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error - - - WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error - - - - - WithinRel( 1.f, 0.f ) - - - WithinRel( 1.f, 0.f ) - - - - - WithinRel( 1.f, -0.2f ), std::domain_error - - - WithinRel( 1.f, -0.2f ), std::domain_error - - - - - WithinRel( 1.f, 1.f ), std::domain_error - - - WithinRel( 1.f, 1.f ), std::domain_error - - - -
- -
- -
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - filter([] (int) {return false; }, value(1)), Catch::GeneratorException - - - filter([] (int) {return false; }, value(1)), Catch::GeneratorException - - - -
- -
-
- - - i < 4 - - - 1 < 4 - - - -
-
- - - i < 4 - - - 2 < 4 - - - -
-
- - - i < 4 - - - 3 < 4 - - - -
-
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - i % 2 == 0 - - - 0 == 0 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
-
- - - i.size() == 1 - - - 1 == 1 - - - -
- -
-
- - - j > 0 - - - 1 > 0 - - - -
-
- - - j > 0 - - - 2 > 0 - - - -
-
- - - j > 0 - - - 3 > 0 - - - -
-
- - - j > 0 - - - 1 > 0 - - - -
-
- - - j > 0 - - - 2 > 0 - - - -
-
- - - j > 0 - - - 3 > 0 - - - -
-
-
- - - chunk2.size() == 2 - - - 2 == 2 - - - - - chunk2.front() == chunk2.back() - - - 1 == 1 - - - -
- -
-
-
- - - chunk2.size() == 2 - - - 2 == 2 - - - - - chunk2.front() == chunk2.back() - - - 2 == 2 - - - -
- -
-
-
- - - chunk2.size() == 2 - - - 2 == 2 - - - - - chunk2.front() == chunk2.back() - - - 3 == 3 - - - -
- -
-
-
- - - chunk2.size() == 2 - - - 2 == 2 - - - - - chunk2.front() == chunk2.back() - - - 1 == 1 - - - - - chunk2.front() < 3 - - - 1 < 3 - - - -
- -
-
-
- - - chunk2.size() == 2 - - - 2 == 2 - - - - - chunk2.front() == chunk2.back() - - - 2 == 2 - - - - - chunk2.front() < 3 - - - 2 < 3 - - - -
- -
-
-
- - - chunk2.size() == 0 - - - 0 == 0 - - - -
- -
-
-
- - - chunk2.size() == 0 - - - 0 == 0 - - - -
- -
-
-
- - - chunk2.size() == 0 - - - 0 == 0 - - - -
- -
-
-
- - - chunk(2, value(1)), Catch::GeneratorException - - - chunk(2, value(1)), Catch::GeneratorException - - - -
- -
- -
- -
- - - j < i - - - -3 < 1 - - - -
-
- - - j < i - - - -2 < 1 - - - -
-
- - - j < i - - - -1 < 1 - - - -
-
- - - 4u * i > str.size() - - - 4 > 1 - - - -
-
- - - 4u * i > str.size() - - - 4 > 2 - - - -
-
- - - 4u * i > str.size() - - - 4 > 3 - - - -
-
- - - j < i - - - -3 < 2 - - - -
-
- - - j < i - - - -2 < 2 - - - -
-
- - - j < i - - - -1 < 2 - - - -
-
- - - 4u * i > str.size() - - - 8 > 1 - - - -
-
- - - 4u * i > str.size() - - - 8 > 2 - - - -
-
- - - 4u * i > str.size() - - - 8 > 3 - - - -
-
- - - j < i - - - -3 < 3 - - - -
-
- - - j < i - - - -2 < 3 - - - -
-
- - - j < i - - - -1 < 3 - - - -
-
- - - 4u * i > str.size() - - - 12 > 1 - - - -
-
- - - 4u * i > str.size() - - - 12 > 2 - - - -
-
- - - 4u * i > str.size() - - - 12 > 3 - - - -
- -
- -
- - - gen.get() == 123 - - - 123 == 123 - - - - - !(gen.next()) - - - !false - - - -
-
+ + + gen.next() + + + true + + + + + gen.get() == 0 + + + 0 == 0 + + + + + !(gen.next()) + + + !false + + + +
+
+ + + gen.get().size() == 2 + + + 2 == 2 + + + + + gen.get() == "aa" + + + "aa" == "aa" + + + + + gen.next() + + + true + + + + + gen.get() == "bb" + + + "bb" == "bb" + + + + + gen.next() + + + true + + + + + gen.get() == "cc" + + + "cc" == "cc" + + + + + !(gen.next()) + + + !false + + + +
+
+ + + gen.get() == 1 + + + 1 == 1 + + + + + gen.next() + + + true + + + + + gen.get() == 3 + + + 3 == 3 + + + + + !(gen.next()) + + + !false + + + + + filter([] (int) { return false; }, value(1)), Catch::GeneratorException + + + filter([] (int) { return false; }, value(1)), Catch::GeneratorException + + + +
+
+
gen.get() == 1 @@ -5975,6 +6211,152 @@ Nor would this true + + + gen.get() == 2 + + + 2 == 2 + + + + + !(gen.next()) + + + !false + + + +
+ +
+
+
+ + + gen.get() == 1 + + + 1 == 1 + + + + + !(gen.next()) + + + !false + + + +
+ +
+
+ + + gen.get() == 2.0 + + + 2.0 == 2.0 + + + + + gen.next() + + + true + + + + + gen.get() == 4.0 + + + 4.0 == 4.0 + + + + + gen.next() + + + true + + + + + gen.get() == 6.0 + + + 6.0 == 6.0 + + + + + !(gen.next()) + + + !false + + + +
+
+ + + gen.get() == 2.0 + + + 2.0 == 2.0 + + + + + gen.next() + + + true + + + + + gen.get() == 4.0 + + + 4.0 == 4.0 + + + + + gen.next() + + + true + + + + + gen.get() == 6.0 + + + 6.0 == 6.0 + + + + + !(gen.next()) + + + !false + + + +
+
+
gen.get() == 3 @@ -5983,22 +6365,6 @@ Nor would this 3 == 3 - - - gen.next() - - - true - - - - - gen.get() == 5 - - - 5 == 5 - - !(gen.next()) @@ -6007,9 +6373,12 @@ Nor would this !false - +
-
+ +
+
+
gen.get() == 1 @@ -6026,22 +6395,6 @@ Nor would this true - - - gen.get() == 5 - - - 5 == 5 - - - - - gen.next() - - - true - - gen.get() == 2 @@ -6060,10 +6413,10 @@ Nor would this - gen.get() == 4 + gen.get() == 3 - 4 == 4 + 3 == 3 @@ -6074,84 +6427,6 @@ Nor would this true - - - gen.get() == 0 - - - 0 == 0 - - - - - !(gen.next()) - - - !false - - - -
-
- - - gen.get().size() == 2 - - - 2 == 2 - - - - - gen.get() == "aa" - - - "aa" == "aa" - - - - - gen.next() - - - true - - - - - gen.get() == "bb" - - - "bb" == "bb" - - - - - gen.next() - - - true - - - - - gen.get() == "cc" - - - "cc" == "cc" - - - - - !(gen.next()) - - - !false - - - -
-
gen.get() == 1 @@ -6168,6 +6443,22 @@ Nor would this true + + + gen.get() == 2 + + + 2 == 2 + + + + + gen.next() + + + true + + gen.get() == 3 @@ -6184,311 +6475,182 @@ Nor would this !false - - - filter([] (int) { return false; }, value(1)), Catch::GeneratorException - - - filter([] (int) { return false; }, value(1)), Catch::GeneratorException - - - -
-
-
- - - gen.get() == 1 - - - 1 == 1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - !(gen.next()) - - - !false - - - -
- -
-
-
- - - gen.get() == 1 - - - 1 == 1 - - - - - !(gen.next()) - - - !false - - - -
- -
-
- - - gen.get() == 2.0 - - - 2.0 == 2.0 - - - - - gen.next() - - - true - - - - - gen.get() == 4.0 - - - 4.0 == 4.0 - - - - - gen.next() - - - true - - - - - gen.get() == 6.0 - - - 6.0 == 6.0 - - - - - !(gen.next()) - - - !false - - - -
-
- - - gen.get() == 2.0 - - - 2.0 == 2.0 - - - - - gen.next() - - - true - - - - - gen.get() == 4.0 - - - 4.0 == 4.0 - - - - - gen.next() - - - true - - - - - gen.get() == 6.0 - - - 6.0 == 6.0 - - - - - !(gen.next()) - - - !false - - - -
-
-
- - - gen.get() == 3 - - - 3 == 3 - - - - - !(gen.next()) - - - !false - - - -
- -
-
-
- - - gen.get() == 1 - - - 1 == 1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == 3 - - - 3 == 3 - - - - - gen.next() - - - true - - - - - gen.get() == 1 - - - 1 == 1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == 3 - - - 3 == 3 - - - - - !(gen.next()) - - - !false - - - -
-
-
-
+ +
+
+
+
+ + + gen.get() == -2 + + + -2 == -2 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + gen.next() + + + true + + + + + gen.get() == 0 + + + 0 == 0 + + + + + gen.next() + + + true + + + + + gen.get() == 1 + + + 1 == 1 + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+
+
+
+ + + gen.get() == 2 + + + 2 == 2 + + + + + gen.next() + + + true + + + + + gen.get() == 1 + + + 1 == 1 + + + + + gen.next() + + + true + + + + + gen.get() == 0 + + + 0 == 0 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+
+
+
+
- gen.get() == -2 + gen.get() == -7 - -2 == -2 + -7 == -7 + + + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 @@ -6517,26 +6679,10 @@ Nor would this - gen.get() == 0 + gen.get() == 2 - 0 == 0 - - - - - gen.next() - - - true - - - - - gen.get() == 1 - - - 1 == 1 + 2 == 2 @@ -6553,9 +6699,136 @@ Nor would this
-
-
-
+ +
+
+
+
+
+ + + gen.get() == -7 + + + -7 == -7 + + + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + gen.next() + + + true + + + + + gen.get() == 2 + + + 2 == 2 + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+ +
+
+
+
+
+ + + gen.get() == -7 + + + -7 == -7 + + + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + gen.next() + + + true + + gen.get() == 2 @@ -6574,10 +6847,810 @@ Nor would this - gen.get() == 1 + gen.get() == 5 - 1 == 1 + 5 == 5 + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+ +
+
+
+
+
+ + Current expected value is -1 + + + + gen.get() == Approx(expected) + + + -1.0 == Approx( -1.0 ) + + + + Current expected value is -1 + + + + gen.next() + + + true + + + + Current expected value is -0.9 + + + + gen.get() == Approx(expected) + + + -0.9 == Approx( -0.9 ) + + + + Current expected value is -0.9 + + + + gen.next() + + + true + + + + Current expected value is -0.8 + + + + gen.get() == Approx(expected) + + + -0.8 == Approx( -0.8 ) + + + + Current expected value is -0.8 + + + + gen.next() + + + true + + + + Current expected value is -0.7 + + + + gen.get() == Approx(expected) + + + -0.7 == Approx( -0.7 ) + + + + Current expected value is -0.7 + + + + gen.next() + + + true + + + + Current expected value is -0.6 + + + + gen.get() == Approx(expected) + + + -0.6 == Approx( -0.6 ) + + + + Current expected value is -0.6 + + + + gen.next() + + + true + + + + Current expected value is -0.5 + + + + gen.get() == Approx(expected) + + + -0.5 == Approx( -0.5 ) + + + + Current expected value is -0.5 + + + + gen.next() + + + true + + + + Current expected value is -0.4 + + + + gen.get() == Approx(expected) + + + -0.4 == Approx( -0.4 ) + + + + Current expected value is -0.4 + + + + gen.next() + + + true + + + + Current expected value is -0.3 + + + + gen.get() == Approx(expected) + + + -0.3 == Approx( -0.3 ) + + + + Current expected value is -0.3 + + + + gen.next() + + + true + + + + Current expected value is -0.2 + + + + gen.get() == Approx(expected) + + + -0.2 == Approx( -0.2 ) + + + + Current expected value is -0.2 + + + + gen.next() + + + true + + + + Current expected value is -0.1 + + + + gen.get() == Approx(expected) + + + -0.1 == Approx( -0.1 ) + + + + Current expected value is -0.1 + + + + gen.next() + + + true + + + + Current expected value is -1.38778e-16 + + + + gen.get() == Approx(expected) + + + -0.0 == Approx( -0.0 ) + + + + Current expected value is -1.38778e-16 + + + + gen.next() + + + true + + + + Current expected value is 0.1 + + + + gen.get() == Approx(expected) + + + 0.1 == Approx( 0.1 ) + + + + Current expected value is 0.1 + + + + gen.next() + + + true + + + + Current expected value is 0.2 + + + + gen.get() == Approx(expected) + + + 0.2 == Approx( 0.2 ) + + + + Current expected value is 0.2 + + + + gen.next() + + + true + + + + Current expected value is 0.3 + + + + gen.get() == Approx(expected) + + + 0.3 == Approx( 0.3 ) + + + + Current expected value is 0.3 + + + + gen.next() + + + true + + + + Current expected value is 0.4 + + + + gen.get() == Approx(expected) + + + 0.4 == Approx( 0.4 ) + + + + Current expected value is 0.4 + + + + gen.next() + + + true + + + + Current expected value is 0.5 + + + + gen.get() == Approx(expected) + + + 0.5 == Approx( 0.5 ) + + + + Current expected value is 0.5 + + + + gen.next() + + + true + + + + Current expected value is 0.6 + + + + gen.get() == Approx(expected) + + + 0.6 == Approx( 0.6 ) + + + + Current expected value is 0.6 + + + + gen.next() + + + true + + + + Current expected value is 0.7 + + + + gen.get() == Approx(expected) + + + 0.7 == Approx( 0.7 ) + + + + Current expected value is 0.7 + + + + gen.next() + + + true + + + + Current expected value is 0.8 + + + + gen.get() == Approx(expected) + + + 0.8 == Approx( 0.8 ) + + + + Current expected value is 0.8 + + + + gen.next() + + + true + + + + Current expected value is 0.9 + + + + gen.get() == Approx(expected) + + + 0.9 == Approx( 0.9 ) + + + + Current expected value is 0.9 + + + + gen.next() + + + true + + + + + gen.get() == Approx( rangeEnd ) + + + 1.0 == Approx( 1.0 ) + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+ +
+
+
+
+
+ + Current expected value is -1 + + + + gen.get() == Approx(expected) + + + -1.0 == Approx( -1.0 ) + + + + Current expected value is -1 + + + + gen.next() + + + true + + + + Current expected value is -0.7 + + + + gen.get() == Approx(expected) + + + -0.7 == Approx( -0.7 ) + + + + Current expected value is -0.7 + + + + gen.next() + + + true + + + + Current expected value is -0.4 + + + + gen.get() == Approx(expected) + + + -0.4 == Approx( -0.4 ) + + + + Current expected value is -0.4 + + + + gen.next() + + + true + + + + Current expected value is -0.1 + + + + gen.get() == Approx(expected) + + + -0.1 == Approx( -0.1 ) + + + + Current expected value is -0.1 + + + + gen.next() + + + true + + + + Current expected value is 0.2 + + + + gen.get() == Approx(expected) + + + 0.2 == Approx( 0.2 ) + + + + Current expected value is 0.2 + + + + gen.next() + + + true + + + + Current expected value is 0.5 + + + + gen.get() == Approx(expected) + + + 0.5 == Approx( 0.5 ) + + + + Current expected value is 0.5 + + + + gen.next() + + + true + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+ +
+
+
+
+
+ + Current expected value is -1 + + + + gen.get() == Approx(expected) + + + -1.0 == Approx( -1.0 ) + + + + Current expected value is -1 + + + + gen.next() + + + true + + + + Current expected value is -0.7 + + + + gen.get() == Approx(expected) + + + -0.7 == Approx( -0.7 ) + + + + Current expected value is -0.7 + + + + gen.next() + + + true + + + + Current expected value is -0.4 + + + + gen.get() == Approx(expected) + + + -0.4 == Approx( -0.4 ) + + + + Current expected value is -0.4 + + + + gen.next() + + + true + + + + Current expected value is -0.1 + + + + gen.get() == Approx(expected) + + + -0.1 == Approx( -0.1 ) + + + + Current expected value is -0.1 + + + + gen.next() + + + true + + + + Current expected value is 0.2 + + + + gen.get() == Approx(expected) + + + 0.2 == Approx( 0.2 ) + + + + Current expected value is 0.2 + + + + gen.next() + + + true + + + + Current expected value is 0.5 + + + + gen.get() == Approx(expected) + + + 0.5 == Approx( 0.5 ) + + + + Current expected value is 0.5 + + + + gen.next() + + + true + + + + + !(gen.next()) + + + !false + + + +
+ +
+ +
+ +
+
+
+
+
+ + + gen.get() == 5 + + + 5 == 5 @@ -6590,10 +7663,10 @@ Nor would this - gen.get() == 0 + gen.get() == 2 - 0 == 0 + 2 == 2 @@ -6612,6 +7685,22 @@ Nor would this -1 == -1 + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 + + !(gen.next()) @@ -6626,3940 +7715,2929 @@ Nor would this
-
-
-
-
- - - gen.get() == -7 - - - -7 == -7 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - !(gen.next()) - - - !false - - - -
+ +
+
+
+
+
+ + + gen.get() == 5 + + + 5 == 5 + + + + + gen.next() + + + true + + + + + gen.get() == 2 + + + 2 == 2 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 + + + + + !(gen.next()) + + + !false + +
-
-
-
-
- - - gen.get() == -7 - - - -7 == -7 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - - gen.get() == -7 - - - -7 == -7 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == 5 - - - 5 == 5 - - - - - !(gen.next()) - - - !false - - - -
+ +
+
+
+
+
+ + + gen.get() == 5 + + + 5 == 5 + + + + + gen.next() + + + true + + + + + gen.get() == 2 + + + 2 == 2 + + + + + gen.next() + + + true + + + + + gen.get() == -1 + + + -1 == -1 + + + + + gen.next() + + + true + + + + + gen.get() == -4 + + + -4 == -4 + + + + + gen.next() + + + true + + + + + gen.get() == -7 + + + -7 == -7 + + + + + !(gen.next()) + + + !false + +
-
-
-
-
- - Current expected value is -1 - - - - gen.get() == Approx(expected) - - - -1.0 == Approx( -1.0 ) - - - - Current expected value is -1 - - - - gen.next() - - - true - - - - Current expected value is -0.9 - - - - gen.get() == Approx(expected) - - - -0.9 == Approx( -0.9 ) - - - - Current expected value is -0.9 - - - - gen.next() - - - true - - - - Current expected value is -0.8 - - - - gen.get() == Approx(expected) - - - -0.8 == Approx( -0.8 ) - - - - Current expected value is -0.8 - - - - gen.next() - - - true - - - - Current expected value is -0.7 - - - - gen.get() == Approx(expected) - - - -0.7 == Approx( -0.7 ) - - - - Current expected value is -0.7 - - - - gen.next() - - - true - - - - Current expected value is -0.6 - - - - gen.get() == Approx(expected) - - - -0.6 == Approx( -0.6 ) - - - - Current expected value is -0.6 - - - - gen.next() - - - true - - - - Current expected value is -0.5 - - - - gen.get() == Approx(expected) - - - -0.5 == Approx( -0.5 ) - - - - Current expected value is -0.5 - - - - gen.next() - - - true - - - - Current expected value is -0.4 - - - - gen.get() == Approx(expected) - - - -0.4 == Approx( -0.4 ) - - - - Current expected value is -0.4 - - - - gen.next() - - - true - - - - Current expected value is -0.3 - - - - gen.get() == Approx(expected) - - - -0.3 == Approx( -0.3 ) - - - - Current expected value is -0.3 - - - - gen.next() - - - true - - - - Current expected value is -0.2 - - - - gen.get() == Approx(expected) - - - -0.2 == Approx( -0.2 ) - - - - Current expected value is -0.2 - - - - gen.next() - - - true - - - - Current expected value is -0.1 - - - - gen.get() == Approx(expected) - - - -0.1 == Approx( -0.1 ) - - - - Current expected value is -0.1 - - - - gen.next() - - - true - - - - Current expected value is -1.38778e-16 - - - - gen.get() == Approx(expected) - - - -0.0 == Approx( -0.0 ) - - - - Current expected value is -1.38778e-16 - - - - gen.next() - - - true - - - - Current expected value is 0.1 - - - - gen.get() == Approx(expected) - - - 0.1 == Approx( 0.1 ) - - - - Current expected value is 0.1 - - - - gen.next() - - - true - - - - Current expected value is 0.2 - - - - gen.get() == Approx(expected) - - - 0.2 == Approx( 0.2 ) - - - - Current expected value is 0.2 - - - - gen.next() - - - true - - - - Current expected value is 0.3 - - - - gen.get() == Approx(expected) - - - 0.3 == Approx( 0.3 ) - - - - Current expected value is 0.3 - - - - gen.next() - - - true - - - - Current expected value is 0.4 - - - - gen.get() == Approx(expected) - - - 0.4 == Approx( 0.4 ) - - - - Current expected value is 0.4 - - - - gen.next() - - - true - - - - Current expected value is 0.5 - - - - gen.get() == Approx(expected) - - - 0.5 == Approx( 0.5 ) - - - - Current expected value is 0.5 - - - - gen.next() - - - true - - - - Current expected value is 0.6 - - - - gen.get() == Approx(expected) - - - 0.6 == Approx( 0.6 ) - - - - Current expected value is 0.6 - - - - gen.next() - - - true - - - - Current expected value is 0.7 - - - - gen.get() == Approx(expected) - - - 0.7 == Approx( 0.7 ) - - - - Current expected value is 0.7 - - - - gen.next() - - - true - - - - Current expected value is 0.8 - - - - gen.get() == Approx(expected) - - - 0.8 == Approx( 0.8 ) - - - - Current expected value is 0.8 - - - - gen.next() - - - true - - - - Current expected value is 0.9 - - - - gen.get() == Approx(expected) - - - 0.9 == Approx( 0.9 ) - - - - Current expected value is 0.9 - - - - gen.next() - - - true - - - - - gen.get() == Approx( rangeEnd ) - - - 1.0 == Approx( 1.0 ) - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - Current expected value is -1 - - - - gen.get() == Approx(expected) - - - -1.0 == Approx( -1.0 ) - - - - Current expected value is -1 - - - - gen.next() - - - true - - - - Current expected value is -0.7 - - - - gen.get() == Approx(expected) - - - -0.7 == Approx( -0.7 ) - - - - Current expected value is -0.7 - - - - gen.next() - - - true - - - - Current expected value is -0.4 - - - - gen.get() == Approx(expected) - - - -0.4 == Approx( -0.4 ) - - - - Current expected value is -0.4 - - - - gen.next() - - - true - - - - Current expected value is -0.1 - - - - gen.get() == Approx(expected) - - - -0.1 == Approx( -0.1 ) - - - - Current expected value is -0.1 - - - - gen.next() - - - true - - - - Current expected value is 0.2 - - - - gen.get() == Approx(expected) - - - 0.2 == Approx( 0.2 ) - - - - Current expected value is 0.2 - - - - gen.next() - - - true - - - - Current expected value is 0.5 - - - - gen.get() == Approx(expected) - - - 0.5 == Approx( 0.5 ) - - - - Current expected value is 0.5 - - - - gen.next() - - - true - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - Current expected value is -1 - - - - gen.get() == Approx(expected) - - - -1.0 == Approx( -1.0 ) - - - - Current expected value is -1 - - - - gen.next() - - - true - - - - Current expected value is -0.7 - - - - gen.get() == Approx(expected) - - - -0.7 == Approx( -0.7 ) - - - - Current expected value is -0.7 - - - - gen.next() - - - true - - - - Current expected value is -0.4 - - - - gen.get() == Approx(expected) - - - -0.4 == Approx( -0.4 ) - - - - Current expected value is -0.4 - - - - gen.next() - - - true - - - - Current expected value is -0.1 - - - - gen.get() == Approx(expected) - - - -0.1 == Approx( -0.1 ) - - - - Current expected value is -0.1 - - - - gen.next() - - - true - - - - Current expected value is 0.2 - - - - gen.get() == Approx(expected) - - - 0.2 == Approx( 0.2 ) - - - - Current expected value is 0.2 - - - - gen.next() - - - true - - - - Current expected value is 0.5 - - - - gen.get() == Approx(expected) - - - 0.5 == Approx( 0.5 ) - - - - Current expected value is 0.5 - - - - gen.next() - - - true - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - - gen.get() == 5 - - - 5 == 5 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - - gen.get() == 5 - - - 5 == 5 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
-
-
-
-
- - - gen.get() == 5 - - - 5 == 5 - - - - - gen.next() - - - true - - - - - gen.get() == 2 - - - 2 == 2 - - - - - gen.next() - - - true - - - - - gen.get() == -1 - - - -1 == -1 - - - - - gen.next() - - - true - - - - - gen.get() == -4 - - - -4 == -4 - - - - - gen.next() - - - true - - - - - gen.get() == -7 - - - -7 == -7 - - - - - !(gen.next()) - - - !false - - - -
- -
- -
- -
- - - - + +
+ + + + + + d >= Approx( 1.22 ) + + + 1.23 >= Approx( 1.22 ) + + + + + d >= Approx( 1.23 ) + + + 1.23 >= Approx( 1.23 ) + + + + + !(d >= Approx( 1.24 )) + + + !(1.23 >= Approx( 1.24 )) + + + + + d >= Approx( 1.24 ).epsilon(0.1) + + + 1.23 >= Approx( 1.24 ) + + + + + + + this is a message + + + this is a warning + + + + + + this message should be logged + + + so should this + + + + a == 1 + + + 2 == 1 + + + + + + + this message may be logged later + + + + a == 2 + + + 2 == 2 + + + + this message may be logged later + + + this message should be logged + + + + a == 1 + + + 2 == 1 + + + + this message may be logged later + + + this message should be logged + + + and this, but later + + + + a == 0 + + + 2 == 0 + + + + this message may be logged later + + + this message should be logged + + + and this, but later + + + but not this + + + + a == 2 + + + 2 == 2 + + + + + + + current counter 0 + + + i := 0 + + + + i < 10 + + + 0 < 10 + + + + current counter 1 + + + i := 1 + + + + i < 10 + + + 1 < 10 + + + + current counter 2 + + + i := 2 + + + + i < 10 + + + 2 < 10 + + + + current counter 3 + + + i := 3 + + + + i < 10 + + + 3 < 10 + + + + current counter 4 + + + i := 4 + + + + i < 10 + + + 4 < 10 + + + + current counter 5 + + + i := 5 + + + + i < 10 + + + 5 < 10 + + + + current counter 6 + + + i := 6 + + + + i < 10 + + + 6 < 10 + + + + current counter 7 + + + i := 7 + + + + i < 10 + + + 7 < 10 + + + + current counter 8 + + + i := 8 + + + + i < 10 + + + 8 < 10 + + + + current counter 9 + + + i := 9 + + + + i < 10 + + + 9 < 10 + + + + current counter 10 + + + i := 10 + + + + i < 10 + + + 10 < 10 + + + + + + + + data.int_seven != 7 + + + 7 != 7 + + + + + data.float_nine_point_one != Approx( 9.1f ) + + + 9.1f != Approx( 9.1000003815 ) + + + + + data.double_pi != Approx( 3.1415926535 ) + + + 3.1415926535 != Approx( 3.1415926535 ) + + + + + data.str_hello != "hello" + + + "hello" != "hello" + + + + + data.str_hello.size() != 5 + + + 5 != 5 + + + + + + + + data.int_seven != 6 + + + 7 != 6 + + + + + data.int_seven != 8 + + + 7 != 8 + + + + + data.float_nine_point_one != Approx( 9.11f ) + + + 9.1f != Approx( 9.1099996567 ) + + + + + data.float_nine_point_one != Approx( 9.0f ) + + + 9.1f != Approx( 9.0 ) + + + + + data.float_nine_point_one != Approx( 1 ) + + + 9.1f != Approx( 1.0 ) + + + + + data.float_nine_point_one != Approx( 0 ) + + + 9.1f != Approx( 0.0 ) + + + + + data.double_pi != Approx( 3.1415 ) + + + 3.1415926535 != Approx( 3.1415 ) + + + + + data.str_hello != "goodbye" + + + "hello" != "goodbye" + + + + + data.str_hello != "hell" + + + "hello" != "hell" + + + + + data.str_hello != "hello1" + + + "hello" != "hello1" + + + + + data.str_hello.size() != 6 + + + 5 != 6 + + + + + + + + []() { return true; }() + + + true + + + + + + + + d <= Approx( 1.24 ) + + + 1.23 <= Approx( 1.24 ) + + + + + d <= Approx( 1.23 ) + + + 1.23 <= Approx( 1.23 ) + + + + + !(d <= Approx( 1.22 )) + + + !(1.23 <= Approx( 1.22 )) + + + + + d <= Approx( 1.22 ).epsilon(0.1) + + + 1.23 <= Approx( 1.22 ) + + + + + + + + + + + testStringForMatching(), Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) + + + "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) + + + + + + + + testStringForMatching(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) + + + "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) + + + + + testStringForMatching2(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) + + + "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" ) + + + + + + + + testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) + + + "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" ) + + + + + + + + testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) + + + "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" ) + + + + + + + + testStringForMatching(), !Contains( "different" ) + + + "this string contains 'abc' as a substring" not contains: "different" + + + + + + + + testStringForMatching(), !Contains( "substring" ) + + + "this string contains 'abc' as a substring" not contains: "substring" + + + + + + + + thisThrows(), "expected exception" + + + "expected exception" equals: "expected exception" + + + + + thisThrows(), "should fail" + + + "expected exception" equals: "should fail" + + + + + + + + values > -6 + + + 3 > -6 + + + + + values > -6 + + + 4 > -6 + + + + + values > -6 + + + 5 > -6 + + + + + values > -6 + + + 6 > -6 + + + + + values > -6 + + + -5 > -6 + + + + + values > -6 + + + -4 > -6 + + + + + values > -6 + + + 90 > -6 + + + + + values > -6 + + + 91 > -6 + + + + + values > -6 + + + 92 > -6 + + + + + values > -6 + + + 93 > -6 + + + + + values > -6 + + + 94 > -6 + + + + + values > -6 + + + 95 > -6 + + + + + values > -6 + + + 96 > -6 + + + + + values > -6 + + + 97 > -6 + + + + + values > -6 + + + 98 > -6 + + + + + values > -6 + + + 99 > -6 + + + + + + + This one ran + + + + + + custom exception + + + + + + + True + + + {?} + + + + + !False + + + true + + + + + !(False) + + + !{?} + + + + + + + + + + + data.int_seven > 7 + + + 7 > 7 + + + + + data.int_seven < 7 + + + 7 < 7 + + + + + data.int_seven > 8 + + + 7 > 8 + + + + + data.int_seven < 6 + + + 7 < 6 + + + + + data.int_seven < 0 + + + 7 < 0 + + + + + data.int_seven < -1 + + + 7 < -1 + + + + + data.int_seven >= 8 + + + 7 >= 8 + + + + + data.int_seven <= 6 + + + 7 <= 6 + + + + + data.float_nine_point_one < 9 + + + 9.1f < 9 + + + + + data.float_nine_point_one > 10 + + + 9.1f > 10 + + + + + data.float_nine_point_one > 9.2 + + + 9.1f > 9.2 + + + + + data.str_hello > "hello" + + + "hello" > "hello" + + + + + data.str_hello < "hello" + + + "hello" < "hello" + + + + + data.str_hello > "hellp" + + + "hello" > "hellp" + + + + + data.str_hello > "z" + + + "hello" > "z" + + + + + data.str_hello < "hellm" + + + "hello" < "hellm" + + + + + data.str_hello < "a" + + + "hello" < "a" + + + + + data.str_hello >= "z" + + + "hello" >= "z" + + + + + data.str_hello <= "a" + + + "hello" <= "a" + + + + + + + + data.int_seven < 8 + + + 7 < 8 + + + + + data.int_seven > 6 + + + 7 > 6 + + + + + data.int_seven > 0 + + + 7 > 0 + + + + + data.int_seven > -1 + + + 7 > -1 + + + + + data.int_seven >= 7 + + + 7 >= 7 + + + + + data.int_seven >= 6 + + + 7 >= 6 + + + + + data.int_seven <= 7 + + + 7 <= 7 + + + + + data.int_seven <= 8 + + + 7 <= 8 + + + + + data.float_nine_point_one > 9 + + + 9.1f > 9 + + + + + data.float_nine_point_one < 10 + + + 9.1f < 10 + + + + + data.float_nine_point_one < 9.2 + + + 9.1f < 9.2 + + + + + data.str_hello <= "hello" + + + "hello" <= "hello" + + + + + data.str_hello >= "hello" + + + "hello" >= "hello" + + + + + data.str_hello < "hellp" + + + "hello" < "hellp" + + + + + data.str_hello < "zebra" + + + "hello" < "zebra" + + + + + data.str_hello > "hellm" + + + "hello" > "hellm" + + + + + data.str_hello > "a" + + + "hello" > "a" + + + + + +
+ - d >= Approx( 1.22 ) + rng() == 0x - 1.23 >= Approx( 1.22 ) + 4242248763 (0x) +== +4242248763 (0x) - + - d >= Approx( 1.23 ) + rng() == 0x - 1.23 >= Approx( 1.23 ) + 1867888929 (0x) +== +1867888929 (0x) - + - !(d >= Approx( 1.24 )) + rng() == 0x - !(1.23 >= Approx( 1.24 )) + 1276619030 (0x) +== +1276619030 (0x) - + - d >= Approx( 1.24 ).epsilon(0.1) + rng() == 0x - 1.23 >= Approx( 1.24 ) + 1911218783 (0x) +== +1911218783 (0x) - - - - - this is a message - - - this is a warning - - - - - - this message should be logged - - - so should this - - + - a == 1 + rng() == 0x - 2 == 1 + 1827115164 (0x) +== +1827115164 (0x) - - - - - this message may be logged later - - + +
+
+ - a == 2 + rng() == 0x - 2 == 2 + 1472234645 (0x) +== +1472234645 (0x) - - this message may be logged later - - - this message should be logged - - + - a == 1 + rng() == 0x - 2 == 1 + 868832940 (0x) +== +868832940 (0x) - - this message may be logged later - - - this message should be logged - - - and this, but later - - + - a == 0 + rng() == 0x - 2 == 0 + 570883446 (0x) +== +570883446 (0x) - - this message may be logged later - - - this message should be logged - - - and this, but later - - - but not this - - + - a == 2 + rng() == 0x - 2 == 2 + 889299803 (0x) +== +889299803 (0x) - - - - - current counter 0 - - - i := 0 - - + - i < 10 + rng() == 0x - 0 < 10 + 4261393167 (0x) +== +4261393167 (0x) - - current counter 1 - - - i := 1 - - + - i < 10 + rng() == 0x - 1 < 10 + 1472234645 (0x) +== +1472234645 (0x) - - current counter 2 - - - i := 2 - - + - i < 10 + rng() == 0x - 2 < 10 + 868832940 (0x) +== +868832940 (0x) - - current counter 3 - - - i := 3 - - + - i < 10 + rng() == 0x - 3 < 10 + 570883446 (0x) +== +570883446 (0x) - - current counter 4 - - - i := 4 - - + - i < 10 + rng() == 0x - 4 < 10 + 889299803 (0x) +== +889299803 (0x) - - current counter 5 - - - i := 5 - - + - i < 10 + rng() == 0x - 5 < 10 + 4261393167 (0x) +== +4261393167 (0x) - - current counter 6 - - - i := 6 - - + +
+ +
+ +
+ + Message from section one + + +
+
+ + Message from section two + + +
+ +
+ + + + ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed + + + ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed + + + + + &EvilMatcher(), EvilAddressOfOperatorUsed + + + &EvilMatcher(), EvilAddressOfOperatorUsed + + + + + EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) + + + EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) + + + + + ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() + + + ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() + + + + + +
+ - i < 10 + spec.hasFilters() == false - 6 < 10 + false == false - - current counter 7 - - - i := 7 - - + - i < 10 + spec.matches( *tcA ) == false - 7 < 10 + false == false - - current counter 8 - - - i := 8 - - + - i < 10 + spec.matches( *tcB ) == false - 8 < 10 + false == false - - current counter 9 - - - i := 9 - - + +
+
+ - i < 10 + spec.hasFilters() == false - 9 < 10 + false == false - - current counter 10 - - - i := 10 - - + - i < 10 + spec.matches( *tcA ) == false - 10 < 10 + false == false - - - - + - data.int_seven != 7 + spec.matches( *tcB ) == false - 7 != 7 + false == false - + +
+
+ - data.float_nine_point_one != Approx( 9.1f ) + spec.hasFilters() == false - 9.1f != Approx( 9.1000003815 ) + false == false - + - data.double_pi != Approx( 3.1415926535 ) + spec.matches( *tcA ) == false - 3.1415926535 != Approx( 3.1415926535 ) + false == false - + - data.str_hello != "hello" + spec.matches( *tcB ) == false - "hello" != "hello" + false == false - + +
+
+ - data.str_hello.size() != 5 + spec.hasFilters() == true - 5 != 5 + true == true - - - - + - data.int_seven != 6 + spec.matches( *tcA ) == false - 7 != 6 + false == false - + - data.int_seven != 8 + spec.matches( *tcB ) == true - 7 != 8 + true == true - + +
+
+ - data.float_nine_point_one != Approx( 9.11f ) + spec.hasFilters() == true - 9.1f != Approx( 9.1099996567 ) + true == true - + - data.float_nine_point_one != Approx( 9.0f ) + spec.matches( *tcA ) == false - 9.1f != Approx( 9.0 ) + false == false - + - data.float_nine_point_one != Approx( 1 ) + spec.matches( *tcB ) == true - 9.1f != Approx( 1.0 ) + true == true - + +
+
+ - data.float_nine_point_one != Approx( 0 ) + spec.hasFilters() == true - 9.1f != Approx( 0.0 ) + true == true - + - data.double_pi != Approx( 3.1415 ) + spec.matches( *tcA ) == false - 3.1415926535 != Approx( 3.1415 ) + false == false - + - data.str_hello != "goodbye" + spec.matches( *tcB ) == true - "hello" != "goodbye" + true == true - + - data.str_hello != "hell" + spec.matches( *tcC ) == false - "hello" != "hell" + false == false - + +
+
+ - data.str_hello != "hello1" + spec.hasFilters() == true - "hello" != "hello1" + true == true - + - data.str_hello.size() != 6 + spec.matches( *tcA ) == false - 5 != 6 + false == false - - - - + - []() { return true; }() + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + + + parseTestSpec( "*a" ).matches( *tcA ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + + + parseTestSpec( "a*" ).matches( *tcA ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == true + + + true == true + + + + + parseTestSpec( "*a*" ).matches( *tcA ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == true + + + true == true + + + + + spec.matches( *tcB ) == true + + + true == true + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == true + + + true == true + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == false + + + false == false + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == false + + + false == false + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == false + + + false == false + + + +
+
+ + + spec.hasFilters() == true + + + true == true + + + + + spec.matches( *tcA ) == false + + + false == false + + + + + spec.matches( *tcB ) == false + + + false == false + + + + + spec.matches( *tcC ) == false + + + false == false + + + + + spec.matches( *tcD ) == true + + + true == true + + + +
+
+ + + spec.matches( *fakeTestCase( " aardvark " ) ) true - - - - + - d <= Approx( 1.24 ) + spec.matches( *fakeTestCase( " aardvark" ) ) - 1.23 <= Approx( 1.24 ) + true - + - d <= Approx( 1.23 ) + spec.matches( *fakeTestCase( " aardvark " ) ) - 1.23 <= Approx( 1.23 ) + true - + - !(d <= Approx( 1.22 )) + spec.matches( *fakeTestCase( "aardvark " ) ) - !(1.23 <= Approx( 1.22 )) + true - + - d <= Approx( 1.22 ).epsilon(0.1) + spec.matches( *fakeTestCase( "aardvark" ) ) - 1.23 <= Approx( 1.22 ) + true - - - - - - - + +
+
+ - testStringForMatching(), Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) + spec.matches( *fakeTestCase( " aardvark " ) ) - "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) + true - - - - + - testStringForMatching(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) + spec.matches( *fakeTestCase( " aardvark" ) ) - "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) + true - + - testStringForMatching2(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) + spec.matches( *fakeTestCase( " aardvark " ) ) - "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" ) + true - - - - + - testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) + spec.matches( *fakeTestCase( "aardvark " ) ) - "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" ) + true - - - - + - testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) + spec.matches( *fakeTestCase( "aardvark" ) ) - "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" ) + true - - - - + +
+
+ - testStringForMatching(), !Contains( "different" ) + spec.matches(*fakeTestCase("hidden and foo", "[.][foo]")) - "this string contains 'abc' as a substring" not contains: "different" + true - - - - + - testStringForMatching(), !Contains( "substring" ) + !(spec.matches(*fakeTestCase("only foo", "[foo]"))) - "this string contains 'abc' as a substring" not contains: "substring" + !false - - - - + +
+
+ - thisThrows(), "expected exception" + !(spec.matches(*fakeTestCase("hidden and foo", "[.][foo]"))) - "expected exception" equals: "expected exception" + !false - + - thisThrows(), "should fail" + !(spec.matches(*fakeTestCase("only foo", "[foo]"))) - "expected exception" equals: "should fail" + !false - - - - + - values > -6 + !(spec.matches(*fakeTestCase("only hidden", "[.]"))) - 3 > -6 + !false - + - values > -6 + spec.matches(*fakeTestCase("neither foo nor hidden", "[bar]")) - 4 > -6 + true - + +
+ +
+ + + + p == 0 + + + 0 == 0 + + + + + p == pNULL + + + 0 == 0 + + + + + p != 0 + + + 0x != 0 + + + + + cp != 0 + + + 0x != 0 + + + + + cpc != 0 + + + 0x != 0 + + + + + returnsNull() == 0 + + + {null string} == 0 + + + + + returnsConstNull() == 0 + + + {null string} == 0 + + + + + 0 != p + + + 0 != 0x + + + + + +
+ - values > -6 + str1.size() == 3 + 5 - 5 > -6 + 8 == 8 - + - values > -6 + str2.size() == 3 + 10 - 6 > -6 + 13 == 13 - + +
+
+ - values > -6 + str1.size() == 2 + 5 - -5 > -6 + 7 == 7 - + - values > -6 + str2.size() == 2 + 15 - -4 > -6 + 17 == 17 - + +
+ +
+ + + + "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) + + + "foo" matches undescribed predicate + + + + + +
+ - values > -6 - - - 90 > -6 - - - - - values > -6 - - - 91 > -6 - - - - - values > -6 - - - 92 > -6 - - - - - values > -6 - - - 93 > -6 - - - - - values > -6 - - - 94 > -6 - - - - - values > -6 - - - 95 > -6 - - - - - values > -6 - - - 96 > -6 - - - - - values > -6 - - - 97 > -6 - - - - - values > -6 - - - 98 > -6 - - - - - values > -6 - - - 99 > -6 - - - - - - - This one ran - - - - - - custom exception - - - - - - - True + result {?} - + - !False + config.processName == "" - true + "" == "" - + +
+
+ - !(False) + result - !{?} + {?} - - - - - - - + - data.int_seven > 7 + config.processName == "test" - 7 > 7 + "test" == "test" - + - data.int_seven < 7 + config.shouldDebugBreak == false - 7 < 7 + false == false - + - data.int_seven > 8 + config.abortAfter == -1 - 7 > 8 + -1 == -1 - + - data.int_seven < 6 + config.noThrow == false - 7 < 6 + false == false - + - data.int_seven < 0 + config.reporterName == "console" - 7 < 0 + "console" == "console" - + - data.int_seven < -1 + !(cfg.hasTestFilters()) - 7 < -1 + !false - - - data.int_seven >= 8 - - - 7 >= 8 - - - - - data.int_seven <= 6 - - - 7 <= 6 - - - - - data.float_nine_point_one < 9 - - - 9.1f < 9 - - - - - data.float_nine_point_one > 10 - - - 9.1f > 10 - - - - - data.float_nine_point_one > 9.2 - - - 9.1f > 9.2 - - - - - data.str_hello > "hello" - - - "hello" > "hello" - - - - - data.str_hello < "hello" - - - "hello" < "hello" - - - - - data.str_hello > "hellp" - - - "hello" > "hellp" - - - - - data.str_hello > "z" - - - "hello" > "z" - - - - - data.str_hello < "hellm" - - - "hello" < "hellm" - - - - - data.str_hello < "a" - - - "hello" < "a" - - - - - data.str_hello >= "z" - - - "hello" >= "z" - - - - - data.str_hello <= "a" - - - "hello" <= "a" - - - - - - - - data.int_seven < 8 - - - 7 < 8 - - - - - data.int_seven > 6 - - - 7 > 6 - - - - - data.int_seven > 0 - - - 7 > 0 - - - - - data.int_seven > -1 - - - 7 > -1 - - - - - data.int_seven >= 7 - - - 7 >= 7 - - - - - data.int_seven >= 6 - - - 7 >= 6 - - - - - data.int_seven <= 7 - - - 7 <= 7 - - - - - data.int_seven <= 8 - - - 7 <= 8 - - - - - data.float_nine_point_one > 9 - - - 9.1f > 9 - - - - - data.float_nine_point_one < 10 - - - 9.1f < 10 - - - - - data.float_nine_point_one < 9.2 - - - 9.1f < 9.2 - - - - - data.str_hello <= "hello" - - - "hello" <= "hello" - - - - - data.str_hello >= "hello" - - - "hello" >= "hello" - - - - - data.str_hello < "hellp" - - - "hello" < "hellp" - - - - - data.str_hello < "zebra" - - - "hello" < "zebra" - - - - - data.str_hello > "hellm" - - - "hello" > "hellm" - - - - - data.str_hello > "a" - - - "hello" > "a" - - - - - -
- - - rng() == 0x - - - 4242248763 (0x) -== -4242248763 (0x) - - - - - rng() == 0x - - - 1867888929 (0x) -== -1867888929 (0x) - - - - - rng() == 0x - - - 1276619030 (0x) -== -1276619030 (0x) - - - - - rng() == 0x - - - 1911218783 (0x) -== -1911218783 (0x) - - - - - rng() == 0x - - - 1827115164 (0x) -== -1827115164 (0x) - - - -
-
- - - rng() == 0x - - - 1472234645 (0x) -== -1472234645 (0x) - - - - - rng() == 0x - - - 868832940 (0x) -== -868832940 (0x) - - - - - rng() == 0x - - - 570883446 (0x) -== -570883446 (0x) - - - - - rng() == 0x - - - 889299803 (0x) -== -889299803 (0x) - - - - - rng() == 0x - - - 4261393167 (0x) -== -4261393167 (0x) - - - - - rng() == 0x - - - 1472234645 (0x) -== -1472234645 (0x) - - - - - rng() == 0x - - - 868832940 (0x) -== -868832940 (0x) - - - - - rng() == 0x - - - 570883446 (0x) -== -570883446 (0x) - - - - - rng() == 0x - - - 889299803 (0x) -== -889299803 (0x) - - - - - rng() == 0x - - - 4261393167 (0x) -== -4261393167 (0x) - - - -
- -
- -
- - Message from section one - - -
-
- - Message from section two - - -
- -
- - - - ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed - - - ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed - - - - - &EvilMatcher(), EvilAddressOfOperatorUsed - - - &EvilMatcher(), EvilAddressOfOperatorUsed - - - - - EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) - - - EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) - - - - - ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() - - - ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() - - - - - -
- - - spec.hasFilters() == false - - - false == false - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == false - - - false == false - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == false - - - false == false - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - - - parseTestSpec( "*a" ).matches( *tcA ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - - - parseTestSpec( "a*" ).matches( *tcA ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == true - - - true == true - - - - - parseTestSpec( "*a*" ).matches( *tcA ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == true - - - true == true - - - - - spec.matches( *tcB ) == true - - - true == true - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == true - - - true == true - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == false - - - false == false - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == false - - - false == false - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == false - - - false == false - - - -
-
- - - spec.hasFilters() == true - - - true == true - - - - - spec.matches( *tcA ) == false - - - false == false - - - - - spec.matches( *tcB ) == false - - - false == false - - - - - spec.matches( *tcC ) == false - - - false == false - - - - - spec.matches( *tcD ) == true - - - true == true - - - -
-
- - - spec.matches( *fakeTestCase( " aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( " aardvark" ) ) - - - true - - - - - spec.matches( *fakeTestCase( " aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( "aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( "aardvark" ) ) - - - true - - - -
-
- - - spec.matches( *fakeTestCase( " aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( " aardvark" ) ) - - - true - - - - - spec.matches( *fakeTestCase( " aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( "aardvark " ) ) - - - true - - - - - spec.matches( *fakeTestCase( "aardvark" ) ) - - - true - - - -
-
- - - spec.matches(*fakeTestCase("hidden and foo", "[.][foo]")) - - - true - - - - - !(spec.matches(*fakeTestCase("only foo", "[foo]"))) - - - !false - - - -
-
- - - !(spec.matches(*fakeTestCase("hidden and foo", "[.][foo]"))) - - - !false - - - - - !(spec.matches(*fakeTestCase("only foo", "[foo]"))) - - - !false - - - - - !(spec.matches(*fakeTestCase("only hidden", "[.]"))) - - - !false - - - - - spec.matches(*fakeTestCase("neither foo nor hidden", "[bar]")) - - - true - - - -
- -
- - - - p == 0 - - - 0 == 0 - - - - - p == pNULL - - - 0 == 0 - - - - - p != 0 - - - 0x != 0 - - - - - cp != 0 - - - 0x != 0 - - - - - cpc != 0 - - - 0x != 0 - - - - - returnsNull() == 0 - - - {null string} == 0 - - - - - returnsConstNull() == 0 - - - {null string} == 0 - - - - - 0 != p - - - 0 != 0x - - - - - -
- - - str1.size() == 3 + 5 - - - 8 == 8 - - - - - str2.size() == 3 + 10 - - - 13 == 13 - - - -
-
- - - str1.size() == 2 + 5 - - - 7 == 7 - - - - - str2.size() == 2 + 15 - - - 17 == 17 - - - -
- -
- - - - "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) - - - "foo" matches undescribed predicate - - - - - -
+ +
+
+
result @@ -10568,17 +10646,36 @@ Nor would this {?} - + - config.processName == "" + cfg.hasTestFilters() - "" == "" + true - + + + cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false + + + false == false + + + + + cfg.testSpec().matches(*fakeTestCase("test1")) + + + true + + +
-
+ +
+
+
result @@ -10587,39 +10684,83 @@ Nor would this {?} - + - config.processName == "test" + cfg.hasTestFilters() - "test" == "test" + true - + - config.shouldDebugBreak == false + cfg.testSpec().matches(*fakeTestCase("test1")) == false false == false - + - config.abortAfter == -1 + cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) - -1 == -1 + true + +
+ +
+
+
- config.noThrow == false + result + + + {?} + + + + + cfg.hasTestFilters() + + + true + + + + + cfg.testSpec().matches(*fakeTestCase("test1")) == false false == false + + + cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) + + + true + + + +
+ +
+
+
+ + cli.parse({"test", "-r", "console"}) + + + {?} + + + config.reporterName == "console" @@ -10627,212 +10768,303 @@ Nor would this "console" == "console" - + +
+ +
+
+
+ - !(cfg.hasTestFilters()) + cli.parse({"test", "-r", "xml"}) - !false + {?} + + + + + config.reporterName == "xml" + + + "xml" == "xml" - -
-
-
- - - result - - - {?} - - - - - cfg.hasTestFilters() - - - true - - - - - cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false - - - false == false - - - - - cfg.testSpec().matches(*fakeTestCase("test1")) - - - true - - - -
- -
-
-
- - - result - - - {?} - - - - - cfg.hasTestFilters() - - - true - - - - - cfg.testSpec().matches(*fakeTestCase("test1")) == false - - - false == false - - - - - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) - - - true - - - -
- -
-
-
- - - result - - - {?} - - - - - cfg.hasTestFilters() - - - true - - - - - cfg.testSpec().matches(*fakeTestCase("test1")) == false - - - false == false - - - - - cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) - - - true - - - -
- -
-
-
- - - cli.parse({"test", "-r", "console"}) - - - {?} - - - - - config.reporterName == "console" - - - "console" == "console" - - - -
-
-
- - - cli.parse({"test", "-r", "xml"}) - - - {?} - - - - - config.reporterName == "xml" - - - "xml" == "xml" - - - -
+ +
+
+
+ + + cli.parse({"test", "--reporter", "junit"}) + + + {?} + + + + + config.reporterName == "junit" + + + "junit" == "junit" + +
-
-
- - - cli.parse({"test", "--reporter", "junit"}) - - - {?} - - - - - config.reporterName == "junit" - - - "junit" == "junit" - - - -
- -
-
-
- - - !(cli.parse({ "test", "-r", "xml", "-r", "junit" })) - - - !{?} - - - -
+ +
+
+
+ + + !(cli.parse({ "test", "-r", "xml", "-r", "junit" })) + + + !{?} + +
-
-
+ +
+
+
+ + + !result + + + true + + + + + result.errorMessage(), Contains("Unrecognized reporter") + + + "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter" + + + +
+ +
+
+
+ + + cli.parse({"test", "-b"}) + + + {?} + + + + + config.shouldDebugBreak == true + + + true == true + + + +
+ +
+
+
+ + + cli.parse({"test", "--break"}) + + + {?} + + + + + config.shouldDebugBreak + + + true + + + +
+ +
+
+
+ + + cli.parse({"test", "-a"}) + + + {?} + + + + + config.abortAfter == 1 + + + 1 == 1 + + + +
+ +
+
+
+ + + cli.parse({"test", "-x", "2"}) + + + {?} + + + + + config.abortAfter == 2 + + + 2 == 2 + + + +
+ +
+
+
+ + + !result + + + true + + + + + result.errorMessage(), Contains("convert") && Contains("oops") + + + "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" ) + + + +
+ +
+
+
+
+ + + cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) + + + {?} + + + + + config.waitForKeypress == std::get<1>(input) + + + 0 == 0 + + + +
+ +
+ +
+
+
+
+ + + cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) + + + {?} + + + + + config.waitForKeypress == std::get<1>(input) + + + 1 == 1 + + + +
+ +
+ +
+
+
+
+ + + cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) + + + {?} + + + + + config.waitForKeypress == std::get<1>(input) + + + 2 == 2 + + + +
+ +
+ +
+
+
+
+ + + cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) + + + {?} + + + + + config.waitForKeypress == std::get<1>(input) + + + 3 == 3 + + + +
+ +
+ +
+
+
+
!result @@ -10843,1263 +11075,1030 @@ Nor would this - result.errorMessage(), Contains("Unrecognized reporter") + result.errorMessage(), Contains("never") && Contains("both") - "Unrecognized reporter, 'unsupported'. Check available with --list-reporters" contains: "Unrecognized reporter" + "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" )
-
-
- - - cli.parse({"test", "-b"}) - - - {?} - - - - - config.shouldDebugBreak == true - - - true == true - - - -
+ +
+
+
+ + + cli.parse({"test", "-e"}) + + + {?} + + + + + config.noThrow + + + true + +
-
-
- - - cli.parse({"test", "--break"}) - - - {?} - - - - - config.shouldDebugBreak - - - true - - - -
+ +
+
+
+ + + cli.parse({"test", "--nothrow"}) + + + {?} + + + + + config.noThrow + + + true + +
-
-
- - - cli.parse({"test", "-a"}) - - - {?} - - - - - config.abortAfter == 1 - - - 1 == 1 - - - -
+ +
+
+
+ + + cli.parse({"test", "-o", "filename.ext"}) + + + {?} + + + + + config.outputFilename == "filename.ext" + + + "filename.ext" == "filename.ext" + +
-
-
- - - cli.parse({"test", "-x", "2"}) - - - {?} - - - - - config.abortAfter == 2 - - - 2 == 2 - - - -
+ +
+
+
+ + + cli.parse({"test", "--out", "filename.ext"}) + + + {?} + + + + + config.outputFilename == "filename.ext" + + + "filename.ext" == "filename.ext" + +
-
-
- - - !result - - - true - - - - - result.errorMessage(), Contains("convert") && Contains("oops") - - - "Unable to convert 'oops' to destination type" ( contains: "convert" and contains: "oops" ) - - - -
- -
-
-
-
- - - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) - - - {?} - - - - - config.waitForKeypress == std::get<1>(input) - - - 0 == 0 - - - -
- -
- -
-
-
-
- - - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) - - - {?} - - - - - config.waitForKeypress == std::get<1>(input) - - - 1 == 1 - - - -
- -
- -
-
-
-
- - - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) - - - {?} - - - - - config.waitForKeypress == std::get<1>(input) - - - 2 == 2 - - - -
- -
- -
-
-
-
- - - cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) - - - {?} - - - - - config.waitForKeypress == std::get<1>(input) - - - 3 == 3 - - - -
- -
- -
-
-
-
- - - !result - - - true - - - - - result.errorMessage(), Contains("never") && Contains("both") - - - "keypress argument must be one of: never, start, exit or both. 'sometimes' not recognised" ( contains: "never" and contains: "both" ) - - - -
- -
- -
-
-
- - - cli.parse({"test", "-e"}) - - - {?} - - - - - config.noThrow - - - true - - - -
- -
-
-
- - - cli.parse({"test", "--nothrow"}) - - - {?} - - - - - config.noThrow - - - true - - - -
- -
-
-
- - - cli.parse({"test", "-o", "filename.ext"}) - - - {?} - - - - - config.outputFilename == "filename.ext" - - - "filename.ext" == "filename.ext" - - - -
- -
-
-
- - - cli.parse({"test", "--out", "filename.ext"}) - - - {?} - - - - - config.outputFilename == "filename.ext" - - - "filename.ext" == "filename.ext" - - - -
- -
-
-
- - - cli.parse({"test", "-abe"}) - - - {?} - - - - - config.abortAfter == 1 - - - 1 == 1 - - - - - config.shouldDebugBreak - - - true - - - - - config.noThrow == true - - - true == true - - - -
+ +
+
+
+ + + cli.parse({"test", "-abe"}) + + + {?} + + + + + config.abortAfter == 1 + + + 1 == 1 + + + + + config.shouldDebugBreak + + + true + + + + + config.noThrow == true + + + true == true + +
-
-
- - - cli.parse({"test"}) - - - {?} - - - - - config.useColour == UseColour::Auto - - - 0 == 0 - - - -
- -
-
-
- - - cli.parse({"test", "--use-colour", "auto"}) - - - {?} - - - - - config.useColour == UseColour::Auto - - - 0 == 0 - - - -
- -
-
-
- - - cli.parse({"test", "--use-colour", "yes"}) - - - {?} - - - - - config.useColour == UseColour::Yes - - - 1 == 1 - - - -
- -
-
-
- - - cli.parse({"test", "--use-colour", "no"}) - - - {?} - - - - - config.useColour == UseColour::No - - - 2 == 2 - - - -
- -
-
-
- - - !result - - - true - - - - - result.errorMessage(), Contains( "colour mode must be one of" ) - - - "colour mode must be one of: auto, yes or no. 'wrong' not recognised" contains: "colour mode must be one of" - - - -
- -
-
-
- - - cli.parse({ "test", "--benchmark-samples=200" }) - - - {?} - - - - - config.benchmarkSamples == 200 - - - 200 == 200 - - - -
- -
-
-
- - - cli.parse({ "test", "--benchmark-resamples=20000" }) - - - {?} - - - - - config.benchmarkResamples == 20000 - - - 20000 (0x) == 20000 (0x) - - - -
- -
-
-
- - - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) - - - {?} - - - - - config.benchmarkConfidenceInterval == Catch::Approx(0.99) - - - 0.99 == Approx( 0.99 ) - - - -
- -
-
-
- - - cli.parse({ "test", "--benchmark-no-analysis" }) - - - {?} - - - - - config.benchmarkNoAnalysis - - - true - - - -
- -
-
-
- - - cli.parse({ "test", "--benchmark-warmup-time=10" }) - - - {?} - - - - - config.benchmarkWarmupTime == 10 - - - 10 == 10 - - - -
- -
- - - - - - std::tuple_size<TestType>::value >= 1 - - - 3 >= 1 - - - - - - - - std::tuple_size<TestType>::value >= 1 - - - 2 >= 1 - - - - - - - - std::tuple_size<TestType>::value >= 1 - - - 1 >= 1 - - - - - - - - Catch::Detail::stringify(UsesSentinel{}) == "{ }" - - - "{ }" == "{ }" - - - - - - - - truthy(false) - - - Hey, its truthy! - - - - - - - - testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) - - - "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively - - - - - testStringForMatching(), Matches( "contains 'abc' as a substring" ) - - - "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively - - - - - testStringForMatching(), Matches( "this string contains 'abc' as a" ) - - - "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively - - - - - - - - actual, !UnorderedEquals( expected ) - - - { 'a', 'b' } not UnorderedEquals: { 'c', 'b' } - - - - - - - - !(factories.empty()) - - - !false - - -
- - Tested reporter: automake - - + +
+
+
+ - listingString, Contains("fakeTag"s) + cli.parse({"test"}) - "All available tags: + {?} + + + + + config.useColour == UseColour::Auto + + + 0 == 0 + + + +
+ +
+
+
+ + + cli.parse({"test", "--use-colour", "auto"}) + + + {?} + + + + + config.useColour == UseColour::Auto + + + 0 == 0 + + + +
+ +
+
+
+ + + cli.parse({"test", "--use-colour", "yes"}) + + + {?} + + + + + config.useColour == UseColour::Yes + + + 1 == 1 + + + +
+ +
+
+
+ + + cli.parse({"test", "--use-colour", "no"}) + + + {?} + + + + + config.useColour == UseColour::No + + + 2 == 2 + + + +
+ +
+
+
+ + + !result + + + true + + + + + result.errorMessage(), Contains( "colour mode must be one of" ) + + + "colour mode must be one of: auto, yes or no. 'wrong' not recognised" contains: "colour mode must be one of" + + + +
+ +
+
+
+ + + cli.parse({ "test", "--benchmark-samples=200" }) + + + {?} + + + + + config.benchmarkSamples == 200 + + + 200 == 200 + + + +
+ +
+
+
+ + + cli.parse({ "test", "--benchmark-resamples=20000" }) + + + {?} + + + + + config.benchmarkResamples == 20000 + + + 20000 (0x) == 20000 (0x) + + + +
+ +
+
+
+ + + cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) + + + {?} + + + + + config.benchmarkConfidenceInterval == Catch::Approx(0.99) + + + 0.99 == Approx( 0.99 ) + + + +
+ +
+
+
+ + + cli.parse({ "test", "--benchmark-no-analysis" }) + + + {?} + + + + + config.benchmarkNoAnalysis + + + true + + + +
+ +
+
+
+ + + cli.parse({ "test", "--benchmark-warmup-time=10" }) + + + {?} + + + + + config.benchmarkWarmupTime == 10 + + + 10 == 10 + + + +
+ +
+ +
+ + + + std::tuple_size<TestType>::value >= 1 + + + 3 >= 1 + + + + + + + + std::tuple_size<TestType>::value >= 1 + + + 2 >= 1 + + + + + + + + std::tuple_size<TestType>::value >= 1 + + + 1 >= 1 + + + + + + + + Catch::Detail::stringify(UsesSentinel{}) == "{ }" + + + "{ }" == "{ }" + + + + + + + + truthy(false) + + + Hey, its truthy! + + + + + + + + testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) + + + "this string contains 'abc' as a substring" matches "this STRING contains 'abc' as a substring" case sensitively + + + + + testStringForMatching(), Matches( "contains 'abc' as a substring" ) + + + "this string contains 'abc' as a substring" matches "contains 'abc' as a substring" case sensitively + + + + + testStringForMatching(), Matches( "this string contains 'abc' as a" ) + + + "this string contains 'abc' as a substring" matches "this string contains 'abc' as a" case sensitively + + + + + + + + actual, !UnorderedEquals( expected ) + + + { 'a', 'b' } not UnorderedEquals: { 'c', 'b' } + + + + + + + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: automake + + + + listingString, Contains("fakeTag"s) + + + "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: automake - - - - listingString, Contains("fake reporter"s) - - - "Available reporters: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: automake + + + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: automake - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: automake + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: compact - - - - listingString, Contains("fakeTag"s) - - - "All available tags: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: compact + + + + listingString, Contains("fakeTag"s) + + + "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: compact - - - - listingString, Contains("fake reporter"s) - - - "Available reporters: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: compact + + + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: compact - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: compact + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: console - - - - listingString, Contains("fakeTag"s) - - - "All available tags: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: console + + + + listingString, Contains("fakeTag"s) + + + "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: console - - - - listingString, Contains("fake reporter"s) - - - "Available reporters: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: console + + + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: console - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: console + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: junit - - - - listingString, Contains("fakeTag"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: junit + + + + listingString, Contains("fakeTag"s) + + + "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: junit - - - - listingString, Contains("fake reporter"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: junit + + + + listingString, Contains("fake reporter"s) + + + "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: junit - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: junit + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "<?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" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: sonarqube - - - - listingString, Contains("fakeTag"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: sonarqube + + + + listingString, Contains("fakeTag"s) + + + "<?xml version="1.0" encoding="UTF-8"?> All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: sonarqube - - - - listingString, Contains("fake reporter"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: sonarqube + + + + listingString, Contains("fake reporter"s) + + + "<?xml version="1.0" encoding="UTF-8"?> Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: sonarqube - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: sonarqube + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "<?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" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: tap - - - - listingString, Contains("fakeTag"s) - - - "All available tags: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: tap + + + + listingString, Contains("fakeTag"s) + + + "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: tap - - - - listingString, Contains("fake reporter"s) - - - "Available reporters: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: tap + + + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: tap - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: tap + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: teamcity - - - - listingString, Contains("fakeTag"s) - - - "All available tags: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: teamcity + + + + listingString, Contains("fakeTag"s) + + + "All available tags: 1 [fakeTag] 1 tag " contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: teamcity - - - - listingString, Contains("fake reporter"s) - - - "Available reporters: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: teamcity + + + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: teamcity - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: teamcity + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: xml - - - - listingString, Contains("fakeTag"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: xml + + + + listingString, Contains("fakeTag"s) + + + "<?xml version="1.0" encoding="UTF-8"?> <TagsFromMatchingTests> <Tag> <Count>1</Count> @@ -12108,56 +12107,56 @@ All available test cases: </Aliases> </Tag> </TagsFromMatchingTests>" contains: "fakeTag" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: xml - - - - listingString, Contains("fake reporter"s) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: xml + + + + listingString, Contains("fake reporter"s) + + + "<?xml version="1.0" encoding="UTF-8"?> <AvailableReporters> <Reporter> <Name>fake reporter</Name> <Description>fake description</Description> </Reporter> </AvailableReporters>" contains: "fake reporter" - - - -
- - - !(factories.empty()) - - - !false -
- - Tested reporter: xml - - - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "<?xml version="1.0" encoding="UTF-8"?> + +
+ + + !(factories.empty()) + + + !false + + +
+ + Tested reporter: xml + + + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "<?xml version="1.0" encoding="UTF-8"?> <MatchingTests> <TestCase> <Name>fake test name</Name> @@ -12169,71 +12168,69 @@ All available test cases: </SourceInfo> </TestCase> </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- -
- - - - - - - -
- - - before == 0 - - - 0 == 0 - - -
-
- - - after > before - - - 1 > 0 - - - -
+ + + +
+ + + + + + + + + +
+ + + before == 0 + + + 0 == 0 + + +
+
+ + + after > before + + + 1 > 0 + +
- +
- - - -
-
-
-
+ +
+ + + +
+
+
+
+ + + itDoesThis() + + + true + + +
- itDoesThis() + itDoesThat() true -
- - - itDoesThat() - - - true - - - -
- +
@@ -12241,359 +12238,416 @@ All available test cases:
- - - -
-
-
- -
+ +
+ + + +
+
+
- - - -
- - - v.size() == 0 - - - 0 == 0 - - -
-
- - - v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - -
-
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
+ +
+ + + +
+ + + v.size() == 0 + + + 0 == 0 + + +
+
+ + + v.size() == 10 + + + 10 == 10 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + +
+
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + +
- +
- +
-
- - - v.size() == 0 - - - 0 == 0 - - -
-
- - - v.capacity() >= 10 - - - 10 >= 10 - - - - - v.size() == 0 - - - 0 == 0 - - - -
+ +
+
+ + + v.size() == 0 + + + 0 == 0 + + +
+
+ + + v.capacity() >= 10 + + + 10 >= 10 + + + + + v.size() == 0 + + + 0 == 0 + +
- +
- - - - - + +
+ + + + + A string sent directly to stdout - - + + A string sent directly to stderr A string sent to stderr via clog - - - - - - - d == Approx( 1.23 ) - - - 1.23 == Approx( 1.23 ) - - - - - d != Approx( 1.22 ) - - - 1.23 != Approx( 1.22 ) - - - - - d != Approx( 1.24 ) - - - 1.23 != Approx( 1.24 ) - - - - - d == 1.23_a - - - 1.23 == Approx( 1.23 ) - - - - - d != 1.22_a - - - 1.23 != Approx( 1.22 ) - - - - - Approx( d ) == 1.23 - - - Approx( 1.23 ) == 1.23 - - - - - Approx( d ) != 1.22 - - - Approx( 1.23 ) != 1.22 - - - - - Approx( d ) != 1.24 - - - Approx( 1.23 ) != 1.24 - - - - - -
- -
-
- -
- - + + +
+ + + + d == Approx( 1.23 ) + + + 1.23 == Approx( 1.23 ) + + + + + d != Approx( 1.22 ) + + + 1.23 != Approx( 1.22 ) + + + + + d != Approx( 1.24 ) + + + 1.23 != Approx( 1.24 ) + + + + + d == 1.23_a + + + 1.23 == Approx( 1.23 ) + + + + + d != 1.22_a + + + 1.23 != Approx( 1.22 ) + + + + + Approx( d ) == 1.23 + + + Approx( 1.23 ) == 1.23 + + + + + Approx( d ) != 1.22 + + + Approx( 1.23 ) != 1.22 + + + + + Approx( d ) != 1.24 + + + Approx( 1.23 ) != 1.24 + + + + + +
+ +
+
+ +
+ + Message from section one Message from section two - - -
- - + +
+ + + + + testStringForMatching(), StartsWith( "This String" ) + + + "this string contains 'abc' as a substring" starts with: "This String" + + + + + testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" starts with: "string" (case insensitive) + + + + + +
+ - testStringForMatching(), StartsWith( "This String" ) + Catch::Detail::stringify(singular) == "{ 1 }" - "this string contains 'abc' as a substring" starts with: "This String" + "{ 1 }" == "{ 1 }" - + +
+
+ - testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) + Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" - "this string contains 'abc' as a substring" starts with: "string" (case insensitive) + "{ 3, 2, 1 }" == "{ 3, 2, 1 }" - - - -
- - - Catch::Detail::stringify(singular) == "{ 1 }" - - - "{ 1 }" == "{ 1 }" - - - -
-
- - - Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" - - - "{ 3, 2, 1 }" == "{ 3, 2, 1 }" - - - -
-
- - - Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" - - - "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" + +
+
+ + + Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" + + + "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" == "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }" - - - -
- -
- - - - testStringForMatching(), Contains( "string" ) - - - "this string contains 'abc' as a substring" contains: "string" - + +
+ +
+ + + + testStringForMatching(), Contains( "string" ) + + + "this string contains 'abc' as a substring" contains: "string" + + + + + testStringForMatching(), Contains( "string", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" contains: "string" (case insensitive) + + + + + testStringForMatching(), Contains( "abc" ) + + + "this string contains 'abc' as a substring" contains: "abc" + + + + + testStringForMatching(), Contains( "aBC", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" contains: "abc" (case insensitive) + + + + + testStringForMatching(), StartsWith( "this" ) + + + "this string contains 'abc' as a substring" starts with: "this" + + + + + testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" starts with: "this" (case insensitive) + + + + + testStringForMatching(), EndsWith( "substring" ) + + + "this string contains 'abc' as a substring" ends with: "substring" + + + + + testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) + + + "this string contains 'abc' as a substring" ends with: " substring" (case insensitive) + + + + + +
+ - testStringForMatching(), Contains( "string", Catch::CaseSensitive::No ) + empty.empty() - "this string contains 'abc' as a substring" contains: "string" (case insensitive) + true - + - testStringForMatching(), Contains( "abc" ) + empty.size() == 0 - "this string contains 'abc' as a substring" contains: "abc" + 0 == 0 - + - testStringForMatching(), Contains( "aBC", Catch::CaseSensitive::No ) + std::strcmp( empty.data(), "" ) == 0 - "this string contains 'abc' as a substring" contains: "abc" (case insensitive) + 0 == 0 - + +
+
+ - testStringForMatching(), StartsWith( "this" ) + s.empty() == false - "this string contains 'abc' as a substring" starts with: "this" + false == false - + - testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) + s.size() == 5 - "this string contains 'abc' as a substring" starts with: "this" (case insensitive) + 5 == 5 - + - testStringForMatching(), EndsWith( "substring" ) + std::strcmp( rawChars, "hello" ) == 0 - "this string contains 'abc' as a substring" ends with: "substring" + 0 == 0 - + - testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) + s.data() == rawChars - "this string contains 'abc' as a substring" ends with: " substring" (case insensitive) + "hello" == "hello" - - - -
+ +
+
+ + + original == "original" + + + original == "original" + + + + + original.data() + + + original.data() + + + +
+
+
- empty.empty() - - - true - - - - - empty.size() == 0 - - - 0 == 0 - - - - - std::strcmp( empty.data(), "" ) == 0 - - - 0 == 0 - - - -
-
- - - s.empty() == false + ss.empty() == false false == false @@ -12601,7 +12655,7 @@ Message from section two - s.size() == 5 + ss.size() == 5 5 == 5 @@ -12609,7 +12663,7 @@ Message from section two - std::strcmp( rawChars, "hello" ) == 0 + std::strncmp( ss.data(), "hello", 5 ) == 0 0 == 0 @@ -12617,466 +12671,411 @@ Message from section two - s.data() == rawChars + ss == "hello" - "hello" == "hello" + hello == "hello"
-
+ +
+
+
- original == "original" + ss.size() == 6 - original == "original" - - - - - original.data() - - - original.data() - - - -
-
-
- - - ss.empty() == false - - - false == false - - - - - ss.size() == 5 - - - 5 == 5 - - - - - std::strncmp( ss.data(), "hello", 5 ) == 0 - - - 0 == 0 - - - - - ss == "hello" - - - hello == "hello" - - - -
- -
-
-
- - - ss.size() == 6 - - - 6 == 6 - - - - - std::strcmp( ss.data(), "world!" ) == 0 - - - 0 == 0 - - - -
- -
-
-
- - - s.data() == s2.data() - - - "hello world!" == "hello world!" - - - -
- -
-
-
- - - s.data() == ss.data() - - - "hello world!" == "hello world!" - - - -
- -
-
-
- - - s.substr(s.size() + 1, 123).empty() - - - true - - - -
- -
-
-
- - - std::strcmp(ss.data(), "world!") == 0 - - - 0 == 0 - - - -
- -
-
-
- - - s.substr(1'000'000, 1).empty() - - - true - - - -
- -
-
- - - reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) - - - "Hello" != "Hello" + 6 == 6 - left == right + std::strcmp( ss.data(), "world!" ) == 0 - Hello == Hello + 0 == 0 + + + +
+ +
+
+
+ + + s.data() == s2.data() + + + "hello world!" == "hello world!" + + + +
+ +
+
+
+ + + s.data() == ss.data() + + + "hello world!" == "hello world!" + + + +
+ +
+
+
+ + + s.substr(s.size() + 1, 123).empty() + + + true + + + +
+ +
+
+
+ + + std::strcmp(ss.data(), "world!") == 0 + + + 0 == 0 + + + +
+ +
+
+
+ + + s.substr(1'000'000, 1).empty() + + + true + + + +
+ +
+
+ + + reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) + + + "Hello" != "Hello" + + + + + left == right + + + Hello == Hello + + + + + left != left.substr(0, 3) + + + Hello != Hel + + + +
+
+
+ + + sr == "a standard string" + + + a standard string == "a standard string" - left != left.substr(0, 3) + sr.size() == stdStr.size() - Hello != Hel + 17 == 17 - -
-
-
- - - sr == "a standard string" - - - a standard string == "a standard string" - - - - - sr.size() == stdStr.size() - - - 17 == 17 - - - -
-
-
- - - sr == "a standard string" - - - a standard string == "a standard string" - - - - - sr.size() == stdStr.size() - - - 17 == 17 - - - -
- -
-
-
- - - sr == "a standard string" - - - a standard string == "a standard string" - - - - - sr.size() == stdStr.size() - - - 17 == 17 - - - -
- -
-
-
- - - stdStr == "a stringref" - - - "a stringref" == "a stringref" - - - - - stdStr.size() == sr.size() - - - 11 == 11 - - - -
- -
-
-
- - - stdStr == "a stringref" - - - "a stringref" == "a stringref" - - - - - stdStr.size() == sr.size() - - - 11 == 11 - - - -
- -
-
+ +
+
+
- lhs == "some string += the stringref contents" + sr == "a standard string" - "some string += the stringref contents" + a standard string == "a standard string" + + + + + sr.size() == stdStr.size() + + + 17 == 17 + + + +
+ +
+
+
+ + + sr == "a standard string" + + + a standard string == "a standard string" + + + + + sr.size() == stdStr.size() + + + 17 == 17 + + + +
+ +
+
+
+ + + stdStr == "a stringref" + + + "a stringref" == "a stringref" + + + + + stdStr.size() == sr.size() + + + 11 == 11 + + + +
+ +
+
+
+ + + stdStr == "a stringref" + + + "a stringref" == "a stringref" + + + + + stdStr.size() == sr.size() + + + 11 == 11 + + + +
+ +
+
+ + + lhs == "some string += the stringref contents" + + + "some string += the stringref contents" == "some string += the stringref contents" - - - -
-
- - - together == "abrakadabra" - - - "abrakadabra" == "abrakadabra" - - - -
- - - -
- -
-
- -
- -
- - - - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s - - - ""abc"" == ""abc"" - + +
+
+ - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s + together == "abrakadabra" - ""abc"" == ""abc"" + "abrakadabra" == "abrakadabra" - - - - - - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s - - - ""abc"" == ""abc"" - - - - - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s - - - ""abc"" == ""abc"" - - - - - - - - ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s - - - ""abc"" == ""abc"" - - - - - ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s - - - ""abc"" == ""abc"" - - - - - - - - minute == seconds - - - 1 m == 60 s - - - - - hour != seconds - - - 1 h != 60 s - - - - - micro != milli - - - 1 us != 1 ms - - - - - nano != micro - - - 1 ns != 1 us - - - - - - - - half_minute != femto_second - - - 1 [30/1]s != 1 fs - - - - - pico_second != atto_second - - - 1 ps != 1 as - - - - - - - - now != later - - - {iso8601-timestamp} + +
+ + + +
+ +
+
+ +
+ +
+ + + + ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + + + + ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + + + + ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s + + + ""abc"" == ""abc"" + + + + + + + + minute == seconds + + + 1 m == 60 s + + + + + hour != seconds + + + 1 h != 60 s + + + + + micro != milli + + + 1 us != 1 ms + + + + + nano != micro + + + 1 ns != 1 us + + + + + + + + half_minute != femto_second + + + 1 [30/1]s != 1 fs + + + + + pico_second != atto_second + + + 1 ps != 1 as + + + + + + + + now != later + + + {iso8601-timestamp} != {iso8601-timestamp} - - - - - - - - s1 == s2 - - - "if ($b == 10) { + + + + + + + + s1 == s2 + + + "if ($b == 10) { $a = 20; }" == @@ -13084,208 +13083,260 @@ Message from section two $a = 20; } " - - - - - -
- - - what, Contains( "[@zzz]" ) - - - "error: tag alias, '[@zzz]' already registered. + + + + + +
+ + + what, Contains( "[@zzz]" ) + + + "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "[@zzz]" - - - - - what, Contains( "file" ) - - - "error: tag alias, '[@zzz]' already registered. + + + + + what, Contains( "file" ) + + + "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "file" - - - - - what, Contains( "2" ) - - - "error: tag alias, '[@zzz]' already registered. + + + + + what, Contains( "2" ) + + + "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "2" - - - - - what, Contains( "10" ) - - - "error: tag alias, '[@zzz]' already registered. + + + + + what, Contains( "10" ) + + + "error: tag alias, '[@zzz]' already registered. First seen at: file:2 Redefined at: file:10" contains: "10" - - - -
-
- - - registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - - - registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - - - registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - - - registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) - - - registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) - - - -
- -
- - - - Template_Fixture<TestType>::m_a == 1 - - - 1 == 1 - - - - + +
+
+ - Template_Fixture<TestType>::m_a == 1 + registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) - 1 == 1 + registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - - + - Template_Fixture<TestType>::m_a == 1 + registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) - 1.0 == 1 + registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) - - - + + + registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) + + + registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) + + + + + registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) + + + registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) + + + +
+ +
+ + + + Template_Fixture<TestType>::m_a == 1 + + + 1 == 1 + + + + + + + + Template_Fixture<TestType>::m_a == 1 + + + 1 == 1 + + + + + + + + Template_Fixture<TestType>::m_a == 1 + + + 1.0 == 1 + + + + + + + + sizeof(TestType) > 0 + + + 1 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 4 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 1 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 4 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 4 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 1 > 0 + + + + + + + + sizeof(TestType) > 0 + + + 4 > 0 + + + + + + + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- sizeof(TestType) > 0 + v.size() == 10 - 1 > 0 + 10 == 10 - - - - sizeof(TestType) > 0 + v.capacity() >= 10 - 4 > 0 + 10 >= 10 - - - + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- sizeof(TestType) > 0 + v.size() == 0 - 1 > 0 - - - - - - - - sizeof(TestType) > 0 - - - 4 > 0 - - - - - - - - sizeof(TestType) > 0 - - - 4 > 0 - - - - - - - - sizeof(TestType) > 0 - - - 1 > 0 - - - - - - - - sizeof(TestType) > 0 - - - 4 > 0 - - - - - - - - v.size() == 5 - - - 5 == 5 + 0 == 0 @@ -13296,71 +13347,71 @@ Message from section two 5 >= 5 -
+
- v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
v.size() == 5 @@ -13377,31 +13428,69 @@ Message from section two 5 >= 5 -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
+ +
+ +
+ + + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- v.size() == 5 + v.size() == 10 - 5 == 5 + 10 == 10 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -13412,109 +13501,71 @@ Message from section two 5 >= 5 -
+
- v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - - -
- - - - - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
v.size() == 5 @@ -13531,31 +13582,69 @@ Message from section two 5 >= 5 -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
+ +
+ + + + + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- v.size() == 5 + v.size() == 10 - 5 == 5 + 10 == 10 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -13566,109 +13655,71 @@ Message from section two 5 >= 5 -
+
- v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - - -
- - - - - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
v.size() == 5 @@ -13685,31 +13736,69 @@ Message from section two 5 >= 5 -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
+ +
+ + + + + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- v.size() == 5 + v.size() == 10 - 5 == 5 + 10 == 10 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -13720,109 +13809,71 @@ Message from section two 5 >= 5 -
+
- v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - - -
- - - - - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
v.size() == 5 @@ -13839,63 +13890,144 @@ Message from section two 5 >= 5 -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
+ +
+ + + + + + v.size() == V + + + 6 == 6 + + + + + v.capacity() >= V + + + 6 >= 6 + + +
- v.size() == 5 + v.size() == 2 * V - 5 == 5 + 12 == 12 - v.capacity() >= 5 + v.capacity() >= 2 * V - 5 >= 5 + 12 >= 12 -
+ +
+ + + v.size() == V + + + 6 == 6 + + + + + v.capacity() >= V + + + 6 >= 6 + + +
+ + + v.size() == 0 + + + 0 == 0 + + + + + v.capacity() >= V + + + 6 >= 6 + + +
- v.size() == 5 + v.capacity() == 0 - 5 == 5 + 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - - +
- - - + +
+ + + v.size() == V + + + 6 == 6 + + + + + v.capacity() >= V + + + 6 >= 6 + + +
+ + + v.size() == V + + + 6 == 6 + + + + + v.capacity() >= 2 * V + + + 12 >= 12 + + + +
+ + + v.size() == V + + + 6 == 6 + + + + + v.capacity() >= V + + + 6 >= 6 + + +
v.size() == V @@ -13912,31 +14044,69 @@ Message from section two 6 >= 6 -
- - - v.size() == 2 * V - - - 12 == 12 - - - - - v.capacity() >= 2 * V - - - 12 >= 12 - - - -
+ +
+ + + + + + v.size() == V + + + 4 == 4 + + + + + v.capacity() >= V + + + 4 >= 4 + + +
- v.size() == V + v.size() == 2 * V - 6 == 6 + 8 == 8 + + + + + v.capacity() >= 2 * V + + + 8 >= 8 + + + +
+ + + v.size() == V + + + 4 == 4 + + + + + v.capacity() >= V + + + 4 >= 4 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -13944,112 +14114,74 @@ Message from section two v.capacity() >= V - 6 >= 6 + 4 >= 4 -
+
- v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= V - - - 6 >= 6 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == V + + + 4 == 4 + + + + + v.capacity() >= V + + + 4 >= 4 + + +
v.size() == V - 6 == 6 + 4 == 4 - v.capacity() >= V + v.capacity() >= 2 * V - 6 >= 6 + 8 >= 8 -
- - - v.size() == V - - - 6 == 6 - - - - - v.capacity() >= 2 * V - - - 12 >= 12 - - - -
- - - v.size() == V - - - 6 == 6 - - - - - v.capacity() >= V - - - 6 >= 6 - - -
- - - v.size() == V - - - 6 == 6 - - - - - v.capacity() >= V - - - 6 >= 6 - - - -
- - - + +
+ + + v.size() == V + + + 4 == 4 + + + + + v.capacity() >= V + + + 4 >= 4 + + +
v.size() == V @@ -14066,31 +14198,69 @@ Message from section two 4 >= 4 -
- - - v.size() == 2 * V - - - 8 == 8 - - - - - v.capacity() >= 2 * V - - - 8 >= 8 - - - -
+ +
+ + + + + + v.size() == V + + + 5 == 5 + + + + + v.capacity() >= V + + + 5 >= 5 + + +
- v.size() == V + v.size() == 2 * V - 4 == 4 + 10 == 10 + + + + + v.capacity() >= 2 * V + + + 10 >= 10 + + + +
+ + + v.size() == V + + + 5 == 5 + + + + + v.capacity() >= V + + + 5 >= 5 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -14098,112 +14268,74 @@ Message from section two v.capacity() >= V - 4 >= 4 + 5 >= 5 -
+
- v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= V - - - 4 >= 4 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == V + + + 5 == 5 + + + + + v.capacity() >= V + + + 5 >= 5 + + +
v.size() == V - 4 == 4 + 5 == 5 - v.capacity() >= V + v.capacity() >= 2 * V - 4 >= 4 + 10 >= 10 -
- - - v.size() == V - - - 4 == 4 - - - - - v.capacity() >= 2 * V - - - 8 >= 8 - - - -
- - - v.size() == V - - - 4 == 4 - - - - - v.capacity() >= V - - - 4 >= 4 - - -
- - - v.size() == V - - - 4 == 4 - - - - - v.capacity() >= V - - - 4 >= 4 - - - -
- - - + +
+ + + v.size() == V + + + 5 == 5 + + + + + v.capacity() >= V + + + 5 >= 5 + + +
v.size() == V @@ -14220,31 +14352,69 @@ Message from section two 5 >= 5 -
- - - v.size() == 2 * V - - - 10 == 10 - - - - - v.capacity() >= 2 * V - - - 10 >= 10 - - - -
+ +
+ + + + + + v.size() == V + + + 15 == 15 + + + + + v.capacity() >= V + + + 15 >= 15 + + +
- v.size() == V + v.size() == 2 * V - 5 == 5 + 30 == 30 + + + + + v.capacity() >= 2 * V + + + 30 >= 30 + + + +
+ + + v.size() == V + + + 15 == 15 + + + + + v.capacity() >= V + + + 15 >= 15 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -14252,112 +14422,74 @@ Message from section two v.capacity() >= V - 5 >= 5 + 15 >= 15 -
+
- v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= V - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == V + + + 15 == 15 + + + + + v.capacity() >= V + + + 15 >= 15 + + +
v.size() == V - 5 == 5 + 15 == 15 - v.capacity() >= V + v.capacity() >= 2 * V - 5 >= 5 + 30 >= 30 -
- - - v.size() == V - - - 5 == 5 - - - - - v.capacity() >= 2 * V - - - 10 >= 10 - - - -
- - - v.size() == V - - - 5 == 5 - - - - - v.capacity() >= V - - - 5 >= 5 - - -
- - - v.size() == V - - - 5 == 5 - - - - - v.capacity() >= V - - - 5 >= 5 - - - -
- - - + +
+ + + v.size() == V + + + 15 == 15 + + + + + v.capacity() >= V + + + 15 >= 15 + + +
v.size() == V @@ -14374,291 +14506,175 @@ Message from section two 15 >= 15 -
- - - v.size() == 2 * V - - - 30 == 30 - - - - - v.capacity() >= 2 * V - - - 30 >= 30 - - - -
- + +
+ + + + + + + + + 0x == bit30and31 + + + 3221225472 (0x) == 3221225472 + + + + + + + + + + + true + + + true + + + + + false + + + false + + + + + true + + + true + + + + + false + + + false + + + + + + + + true + + + true + + + + + + + + + false + + + false + + + + + + + + + 1 == 2 + + + 1 == 2 + + + + + +
+ - v.size() == V + listingString, Contains("[fakeTag]"s) - 15 == 15 - - - - - v.capacity() >= V - - - 15 >= 15 - - -
- - - v.size() == 0 - - - 0 == 0 - - - - - v.capacity() >= V - - - 15 >= 15 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- -
- - - v.size() == V - - - 15 == 15 - - - - - v.capacity() >= V - - - 15 >= 15 - - -
- - - v.size() == V - - - 15 == 15 - - - - - v.capacity() >= 2 * V - - - 30 >= 30 - - - -
- - - v.size() == V - - - 15 == 15 - - - - - v.capacity() >= V - - - 15 >= 15 - - -
- - - v.size() == V - - - 15 == 15 - - - - - v.capacity() >= V - - - 15 >= 15 - - - -
- - - - - - - - - 0x == bit30and31 - - - 3221225472 (0x) == 3221225472 - - - - - - - - - - - true - - - true - - - - - false - - - false - - - - - true - - - true - - - - - false - - - false - - - - - - - - true - - - true - - - - - - - - - false - - - false - - - - - - - - - 1 == 2 - - - 1 == 2 - - - - - -
- - - listingString, Contains("[fakeTag]"s) - - - "All available tags: + "All available tags: 1 [fakeTag] 1 tag " contains: "[fakeTag]" - - - -
-
- - - listingString, Contains("fake reporter"s) - - - "Available reporters: + + + +
+
+ + + listingString, Contains("fake reporter"s) + + + "Available reporters: fake reporter: fake description " contains: "fake reporter" - - - -
-
- - - listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) - - - "All available test cases: + + + +
+
+ + + listingString, Contains( "fake test name"s ) && Contains( "fakeTestTag"s ) + + + "All available test cases: fake test name [fakeTestTag] 1 test case " ( contains: "fake test name" and contains: "fakeTestTag" ) - - - -
- -
- - - - - - For some reason someone is throwing a string literal! - - - - + + + +
+ +
+ + + + + + For some reason someone is throwing a string literal! + + + + + + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
- testCase.isOpen() + s1.isSuccessfullyCompleted() true @@ -14666,16 +14682,91 @@ Message from section two - s1.isOpen() + testCase.isComplete() == false + + + false == false + + + + + ctx.completedCycle() true -
+ + + testCase.isSuccessfullyCompleted() + + + true + + + +
+ + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
+ + + s1.isComplete() + + + true + + + + + s1.isSuccessfullyCompleted() == false + + + false == false + + + + + testCase.isComplete() == false + + + false == false + + + + + ctx.completedCycle() + + + true + + + + + testCase.isSuccessfullyCompleted() == false + + + false == false + + +
- s1.isSuccessfullyCompleted() + testCase2.isOpen() true @@ -14683,7 +14774,7 @@ Message from section two - testCase.isComplete() == false + s1b.isOpen() == false false == false @@ -14697,6 +14788,14 @@ Message from section two true + + + testCase.isComplete() + + + true + + testCase.isSuccessfullyCompleted() @@ -14705,11 +14804,30 @@ Message from section two true - +
+ +
+ + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
- testCase.isOpen() + s1.isComplete() true @@ -14717,16 +14835,40 @@ Message from section two - s1.isOpen() + s1.isSuccessfullyCompleted() == false + + + false == false + + + + + testCase.isComplete() == false + + + false == false + + + + + ctx.completedCycle() true -
+ + + testCase.isSuccessfullyCompleted() == false + + + false == false + + +
- s1.isComplete() + testCase2.isOpen() true @@ -14734,450 +14876,12 @@ Message from section two - s1.isSuccessfullyCompleted() == false + s1b.isOpen() == false false == false - - - testCase.isComplete() == false - - - false == false - - - - - ctx.completedCycle() - - - true - - - - - testCase.isSuccessfullyCompleted() == false - - - false == false - - -
- - - testCase2.isOpen() - - - true - - - - - s1b.isOpen() == false - - - false == false - - - - - ctx.completedCycle() - - - true - - - - - testCase.isComplete() - - - true - - - - - testCase.isSuccessfullyCompleted() - - - true - - - -
- -
- - - testCase.isOpen() - - - true - - - - - s1.isOpen() - - - true - - -
- - - s1.isComplete() - - - true - - - - - s1.isSuccessfullyCompleted() == false - - - false == false - - - - - testCase.isComplete() == false - - - false == false - - - - - ctx.completedCycle() - - - true - - - - - testCase.isSuccessfullyCompleted() == false - - - false == false - - -
- - - testCase2.isOpen() - - - true - - - - - s1b.isOpen() == false - - - false == false - - - - - s2.isOpen() - - - true - - - - - ctx.completedCycle() - - - true - - - - - testCase.isComplete() - - - true - - - - - testCase.isSuccessfullyCompleted() - - - true - - - -
- -
- - - testCase.isOpen() - - - true - - - - - s1.isOpen() - - - true - - -
- - - s2.isOpen() == false - - - false == false - - - - - testCase.isComplete() == false - - - false == false - - -
- - - testCase2.isOpen() - - - true - - - - - s1b.isOpen() == false - - - false == false - - - - - s2b.isOpen() - - - true - - - - - ctx.completedCycle() == false - - - false == false - - -
- - - ctx.completedCycle() - - - true - - - - - s2b.isSuccessfullyCompleted() - - - true - - - - - testCase2.isComplete() == false - - - false == false - - - - - testCase2.isSuccessfullyCompleted() - - - true - - - -
- -
- -
- - - testCase.isOpen() - - - true - - - - - s1.isOpen() - - - true - - -
- - - s2.isOpen() == false - - - false == false - - - - - testCase.isComplete() == false - - - false == false - - -
- - - testCase2.isOpen() - - - true - - - - - s1b.isOpen() == false - - - false == false - - - - - s2b.isOpen() - - - true - - - - - ctx.completedCycle() == false - - - false == false - - -
- - - ctx.completedCycle() - - - true - - - - - s2b.isComplete() - - - true - - - - - s2b.isSuccessfullyCompleted() == false - - - false == false - - - - - testCase2.isSuccessfullyCompleted() == false - - - false == false - - - - - testCase3.isOpen() - - - true - - - - - s1c.isOpen() == false - - - false == false - - - - - s2c.isOpen() == false - - - false == false - - - - - testCase3.isSuccessfullyCompleted() - - - true - - - -
- -
- -
- - - testCase.isOpen() - - - true - - - - - s1.isOpen() - - - true - - -
s2.isOpen() @@ -15188,36 +14892,12 @@ Message from section two - s2.isComplete() + ctx.completedCycle() true - - - s1.isComplete() == false - - - false == false - - - - - s1.isComplete() - - - true - - - - - testCase.isComplete() == false - - - false == false - - testCase.isComplete() @@ -15226,3013 +14906,2925 @@ Message from section two true - -
- - - - - - trim(std::string(no_whitespace)) == no_whitespace - - - "There is no extra whitespace here" -== -"There is no extra whitespace here" - - - - - trim(std::string(leading_whitespace)) == no_whitespace - - - "There is no extra whitespace here" -== -"There is no extra whitespace here" - - - - - trim(std::string(trailing_whitespace)) == no_whitespace - - - "There is no extra whitespace here" -== -"There is no extra whitespace here" - - - - - trim(std::string(whitespace_at_both_ends)) == no_whitespace - - - "There is no extra whitespace here" -== -"There is no extra whitespace here" - - - - - trim(StringRef(no_whitespace)) == StringRef(no_whitespace) - - - There is no extra whitespace here -== -There is no extra whitespace here - - - - - trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) - - - There is no extra whitespace here -== -There is no extra whitespace here - - - - - trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) - - - There is no extra whitespace here -== -There is no extra whitespace here - - - - - trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) - - - There is no extra whitespace here -== -There is no extra whitespace here - - - - - - - 3.14 - - - - -
- + - bptr->i == 3 - - - 3 == 3 - - - -
-
- - - bptr->i == 3 - - - 3 == 3 - - - -
- -
- -
- - - data, AllMatch(SizeIs(5)) - - - { { 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 - - - - - data, !AllMatch(Contains(0) && Contains(1)) - - - { { 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 ) - - - -
-
- - - needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) - - - { 1, 2, 3, 4, 5 } all match matches undescribed predicate - - - -
-
-
- - - mocked, allMatch - - - { 1, 2, 3, 4, 5 } all match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - mocked.derefed[1] - - - true - - - - - mocked.derefed[2] - - - true - - - - - mocked.derefed[3] - - - true - - - - - mocked.derefed[4] - - - true - - - -
- -
-
-
- - - mocked, !allMatch - - - { 1, 2, 3, 4, 5 } not all match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - mocked.derefed[1] - - - true - - - - - mocked.derefed[2] - - - true - - - - - !(mocked.derefed[3]) - - - !false - - - - - !(mocked.derefed[4]) - - - !false - - - -
- -
- -
- -
- - - data, AnyMatch(SizeIs(5)) - - - { { 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 - - - - - data, !AnyMatch(Contains(0) && Contains(10)) - - - { { 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 ) - - - -
-
- - - needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) - - - { 1, 2, 3, 4, 5 } any match matches undescribed predicate - - - -
-
-
- - - mocked, !anyMatch - - - { 1, 2, 3, 4, 5 } not any match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - mocked.derefed[1] - - - true - - - - - mocked.derefed[2] - - - true - - - - - mocked.derefed[3] - - - true - - - - - mocked.derefed[4] - - - true - - - -
- -
-
-
- - - mocked, anyMatch - - - { 1, 2, 3, 4, 5 } any match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - !(mocked.derefed[1]) - - - !false - - - - - !(mocked.derefed[2]) - - - !false - - - - - !(mocked.derefed[3]) - - - !false - - - - - !(mocked.derefed[4]) - - - !false - - - -
- -
- -
- -
- - - data, NoneMatch(SizeIs(6)) - - - { { 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 - - - - - data, !NoneMatch(Contains(0) && Contains(1)) - - - { { 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 ) - - - -
-
- - - needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) - - - { 1, 2, 3, 4, 5 } none match matches undescribed predicate - - - -
-
-
- - - mocked, noneMatch - - - { 1, 2, 3, 4, 5 } none match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - mocked.derefed[1] - - - true - - - - - mocked.derefed[2] - - - true - - - - - mocked.derefed[3] - - - true - - - - - mocked.derefed[4] - - - true - - - -
- -
-
-
- - - mocked, !noneMatch - - - { 1, 2, 3, 4, 5 } not none match matches undescribed predicate - - - - - mocked.derefed[0] - - - true - - - - - !(mocked.derefed[1]) - - - !false - - - - - !(mocked.derefed[2]) - - - !false - - - - - !(mocked.derefed[3]) - - - !false - - - - - !(mocked.derefed[4]) - - - !false - - - -
- -
- -
- -
- - - empty_vec, SizeIs(0) - - - { } has size == 0 - - - - - empty_vec, !SizeIs(2) - - - { } not has size == 2 - - - - - empty_vec, SizeIs(Lt(2)) - - - { } size matches is less than 2 - - - - - arr, SizeIs(2) - - - { 0, 0 } has size == 2 - - - - - arr, SizeIs( Lt(3)) - - - { 0, 0 } size matches is less than 3 - - - - - arr, !SizeIs(!Lt(3)) - - - { 0, 0 } not size matches not is less than 3 - - - - - map, SizeIs(3) - - - { {?}, {?}, {?} } has size == 3 - - - -
-
- - - unrelated::ADL_size{}, SizeIs(12) - - - {?} has size == 12 - - - -
-
- - - has_size{}, SizeIs(13) - - - {?} has size == 13 - - - -
- -
- - - - d == approx( 1.23 ) - - - 1.23 == Approx( 1.23 ) - - - - - d == approx( 1.22 ) - - - 1.23 == Approx( 1.22 ) - - - - - d == approx( 1.24 ) - - - 1.23 == Approx( 1.24 ) - - - - - d != approx( 1.25 ) - - - 1.23 != Approx( 1.25 ) - - - - - approx( d ) == 1.23 - - - Approx( 1.23 ) == 1.23 - - - - - approx( d ) == 1.22 - - - Approx( 1.23 ) == 1.22 - - - - - approx( d ) == 1.24 - - - Approx( 1.23 ) == 1.24 - - - - - approx( d ) != 1.25 - - - Approx( 1.23 ) != 1.25 - - - - - -
- -
- -
- -
- - - empty, Approx( empty ) - - - { } is approx: { } - - - -
-
-
- - - v1, Approx( v1 ) - - - { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } - - - - - v1, Approx<double>( { 1., 2., 3. } ) - - - { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } - - - -
- -
-
-
- - - v1, !Approx( temp ) - - - { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 } - - - -
- -
-
-
- - - v1, !Approx( v2 ) - - - { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 } - - - - - v1, Approx( v2 ).margin( 0.5 ) - - - { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } - - - - - v1, Approx( v2 ).epsilon( 0.5 ) - - - { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } - - - - - v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) - - - { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } - - - -
- -
- -
- -
- - - empty, Approx( t1 ) - - - { } is approx: { 1.0, 2.0 } - - - -
-
- - - v1, Approx( v2 ) - - - { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 } - - - -
- -
- -
- - - v, VectorContains( 1 ) - - - { 1, 2, 3 } Contains: 1 - - - - - v, VectorContains( 2 ) - - - { 1, 2, 3 } Contains: 2 - - - - - v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) - - - { 1, 2, 3 } Contains: 2 - - - -
-
- - - v, Contains( v2 ) - - - { 1, 2, 3 } Contains: { 1, 2 } - - - - - v, Contains<int>( { 1, 2 } ) - - - { 1, 2, 3 } Contains: { 1, 2 } - - - - - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) - - - { 1, 2, 3 } Contains: { 1, 2 } - - - - - v, Contains( v2 ) - - - { 1, 2, 3 } Contains: { 1, 2, 3 } - - - - - v, Contains( empty ) - - - { 1, 2, 3 } Contains: { } - - - - - empty, Contains( empty ) - - - { } Contains: { } - - - - - v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) - - - { 1, 2, 3 } Contains: { 1, 2, 3 } - - - - - v5, Contains( v6 ) - - - { 1, 2, 3 } Contains: { 1, 2 } - - - -
-
- - - v, VectorContains( 1 ) && VectorContains( 2 ) - - - { 1, 2, 3 } ( Contains: 1 and Contains: 2 ) - - - -
-
- - - v, Equals( v ) - - - { 1, 2, 3 } Equals: { 1, 2, 3 } - - - - - empty, Equals( empty ) - - - { } Equals: { } - - - - - v, Equals<int>( { 1, 2, 3 } ) - - - { 1, 2, 3 } Equals: { 1, 2, 3 } - - - - - v, Equals( v2 ) - - - { 1, 2, 3 } Equals: { 1, 2, 3 } - - - - - v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) - - - { 1, 2, 3 } Equals: { 1, 2, 3 } - - - - - v5, Equals( v6 ) - - - { 1, 2, 3 } Equals: { 1, 2, 3 } - - - -
-
- - - v, UnorderedEquals( v ) - - - { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 } - - - - - v, UnorderedEquals<int>( { 3, 2, 1 } ) - - - { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 } - - - - - empty, UnorderedEquals( empty ) - - - { } UnorderedEquals: { } - - - - - permuted, UnorderedEquals( v ) - - - { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } - - - - - permuted, UnorderedEquals( v ) - - - { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 } - - - - - v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) - - - { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 } - - - - - v5_permuted, UnorderedEquals( v5 ) - - - { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } - - - -
- -
- -
- - - v, VectorContains( -1 ) - - - { 1, 2, 3 } Contains: -1 - - - - - empty, VectorContains( 1 ) - - - { } Contains: 1 - - - -
-
- - - empty, Contains( v ) - - - { } Contains: { 1, 2, 3 } - - - - - v, Contains( v2 ) - - - { 1, 2, 3 } Contains: { 1, 2, 4 } - - - -
-
- - - v, Equals( v2 ) - - - { 1, 2, 3 } Equals: { 1, 2 } - - - - - v2, Equals( v ) - - - { 1, 2 } Equals: { 1, 2, 3 } - - - - - empty, Equals( v ) - - - { } Equals: { 1, 2, 3 } - - - - - v, Equals( empty ) - - - { 1, 2, 3 } Equals: { } - - - -
-
- - - v, UnorderedEquals( empty ) - - - { 1, 2, 3 } UnorderedEquals: { } - - - - - empty, UnorderedEquals( v ) - - - { } UnorderedEquals: { 1, 2, 3 } - - - - - permuted, UnorderedEquals( v ) - - - { 1, 3 } UnorderedEquals: { 1, 2, 3 } - - - - - permuted, UnorderedEquals( v ) - - - { 3, 1 } UnorderedEquals: { 1, 2, 3 } - - - -
- -
- - - - thisThrows(), std::domain_error - - - thisThrows(), std::domain_error - - - - - thisDoesntThrow() - - - thisDoesntThrow() - - - - - thisThrows() - - - thisThrows() - - - - - - - unexpected exception - - - - - - - thisThrows() == 0 - - - thisThrows() == 0 - - - expected exception - - - - - - - - thisThrows() == 0 - - - thisThrows() == 0 - - - expected exception - - - - - - - - thisThrows() == 0 - - - thisThrows() == 0 - - - expected exception - - - - - -
- - unexpected exception - - -
- -
- - - - - - Uncomment the code in this test to check that it gives a sensible compiler error - - - - - - Uncomment the code in this test to check that it gives a sensible compiler error - - - - - - - - - - - - - - - - -
- - - encode( "normal string" ) == "normal string" - - - "normal string" == "normal string" - - - -
-
- - - encode( "" ) == "" - - - "" == "" - - - -
-
- - - encode( "smith & jones" ) == "smith &amp; jones" - - - "smith &amp; jones" == "smith &amp; jones" - - - -
-
- - - encode( "smith < jones" ) == "smith &lt; jones" - - - "smith &lt; jones" == "smith &lt; jones" - - - -
-
- - - encode( "smith > jones" ) == "smith > jones" - - - "smith > jones" == "smith > jones" - - - - - encode( "smith ]]> jones" ) == "smith ]]&gt; jones" - - - "smith ]]&gt; jones" -== -"smith ]]&gt; jones" - - - -
-
- - - encode( stringWithQuotes ) == stringWithQuotes - - - "don't "quote" me on that" -== -"don't "quote" me on that" - - - - - encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" - - - "don't &quot;quote&quot; me on that" -== -"don't &quot;quote&quot; me on that" - - - -
-
- - - encode( "[\x01]" ) == "[\\x01]" - - - "[\x01]" == "[\x01]" - - - -
-
- - - encode( "[\x7F]" ) == "[\\x7F]" - - - "[\x7F]" == "[\x7F]" - - - -
- -
- - - - stream.str(), Contains(R"(attr1="true")") && Contains(R"(attr2="false")") - - - "<?xml version="1.0" encoding="UTF-8"?> -<Element1 attr1="true" attr2="false"/> -" ( contains: "attr1="true"" and contains: "attr2="false"" ) - - - - - - - - analysis.mean.point.count() == 23 - - - 23.0 == 23 - - - - - analysis.mean.lower_bound.count() == 23 - - - 23.0 == 23 - - - - - analysis.mean.upper_bound.count() == 23 - - - 23.0 == 23 - - - - - analysis.standard_deviation.point.count() == 0 - - - 0.0 == 0 - - - - - analysis.standard_deviation.lower_bound.count() == 0 - - - 0.0 == 0 - - - - - analysis.standard_deviation.upper_bound.count() == 0 - - - 0.0 == 0 - - - - - analysis.outliers.total() == 0 - - - 0 == 0 - - - - - analysis.outliers.low_mild == 0 - - - 0 == 0 - - - - - analysis.outliers.low_severe == 0 - - - 0 == 0 - - - - - analysis.outliers.high_mild == 0 - - - 0 == 0 - - - - - analysis.outliers.high_severe == 0 - - - 0 == 0 - - - - - analysis.outliers.samples_seen == 0 - - - 0 == 0 - - - - - analysis.outlier_variance == 0 - - - 0.0 == 0 - - - - - - - - Catch::Detail::stringify( empty ) == "{ }" - - - "{ }" == "{ }" - - - - - Catch::Detail::stringify( oneValue ) == "{ 42 }" - - - "{ 42 }" == "{ 42 }" - - - - - Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" - - - "{ 42, 250 }" == "{ 42, 250 }" - - - - - - - - x == 0 - - - 0 == 0 - - - - - -
- - - model.started == 1 - - - 1 == 1 - - - - - model.finished == 0 - - - 0 == 0 - - - - - model.started == 1 - - - 1 == 1 - - - - - model.finished == 1 - - - 1 == 1 - - - - - called == 1 - - - 1 == 1 - - - -
-
- - - model.started == 0 - - - 0 == 0 - - - - - model.finished == 0 - - - 0 == 0 - - - - - model.started == 0 - - - 0 == 0 - - - - - model.finished == 0 - - - 0 == 0 - - - - - called == 1 - - - 1 == 1 - - - -
- -
- - - - obj.prop != 0 - - - 0x != 0 - - - - - - - - flag - - - true - - - - - testCheckedElse( true ) - - - true - - - - - - - - flag - - - false - - - - - testCheckedElse( false ) - - - false - - - - - - - - flag - - - true - - - - - testCheckedIf( true ) - - - true - - - - - - - - flag - - - false - - - - - testCheckedIf( false ) - - - false - - - - - -
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 0 == 0 - - - - - o.low_mild == lom - - - 0 == 0 - - - - - o.high_mild == him - - - 0 == 0 - - - - - o.high_severe == his - - - 0 == 0 - - - - - o.total() == los + lom + him + his - - - 0 == 0 - - - -
-
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 1 == 1 - - - - - o.low_mild == lom - - - 0 == 0 - - - - - o.high_mild == him - - - 0 == 0 - - - - - o.high_severe == his - - - 0 == 0 - - - - - o.total() == los + lom + him + his - - - 1 == 1 - - - -
-
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 0 == 0 - - - - - o.low_mild == lom - - - 1 == 1 - - - - - o.high_mild == him - - - 0 == 0 - - - - - o.high_severe == his - - - 0 == 0 - - - - - o.total() == los + lom + him + his - - - 1 == 1 - - - -
-
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 0 == 0 - - - - - o.low_mild == lom - - - 0 == 0 - - - - - o.high_mild == him - - - 1 == 1 - - - - - o.high_severe == his - - - 0 == 0 - - - - - o.total() == los + lom + him + his - - - 1 == 1 - - - -
-
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 0 == 0 - - - - - o.low_mild == lom - - - 0 == 0 - - - - - o.high_mild == him - - - 0 == 0 - - - - - o.high_severe == his - - - 1 == 1 - - - - - o.total() == los + lom + him + his - - - 1 == 1 - - - -
-
- - - o.samples_seen == static_cast<int>(x.size()) - - - 6 == 6 - - - - - o.low_severe == los - - - 1 == 1 - - - - - o.low_mild == lom - - - 0 == 0 - - - - - o.high_mild == him - - - 1 == 1 - - - - - o.high_severe == his - - - 0 == 0 - - - - - o.total() == los + lom + him + his - - - 2 == 2 - - - -
- -
- - - - unsigned_char_var == 1 - - - 1 == 1 - - - - - unsigned_short_var == 1 - - - 1 == 1 - - - - - unsigned_int_var == 1 - - - 1 == 1 - - - - - unsigned_long_var == 1 - - - 1 == 1 - - - - - - - - long_var == unsigned_char_var - - - 1 == 1 - - - - - long_var == unsigned_short_var - - - 1 == 1 - - - - - long_var == unsigned_int_var - - - 1 == 1 - - - - - long_var == unsigned_long_var - - - 1 == 1 - - - - - - - - convertToBits( 0.f ) == 0 - - - 0 == 0 - - - - - convertToBits( -0.f ) == ( 1ULL << 31 ) - - - 2147483648 (0x) -== -2147483648 (0x) - - - - - convertToBits( 0. ) == 0 - - - 0 == 0 - - - - - convertToBits( -0. ) == ( 1ULL << 63 ) - - - 9223372036854775808 (0x) -== -9223372036854775808 (0x) - - - - - convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 - - - 1 == 1 - - - - - convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 - - - 1 == 1 - - - - - - - - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) - - - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) - - - - - - - - erfc_inv(1.103560) == Approx(-0.09203687623843015) - - - -0.0920368762 == Approx( -0.0920368762 ) - - - - - erfc_inv(1.067400) == Approx(-0.05980291115763361) - - - -0.0598029112 == Approx( -0.0598029112 ) - - - - - erfc_inv(0.050000) == Approx(1.38590382434967796) - - - 1.3859038243 == Approx( 1.3859038243 ) - - - - - - - - res.mean.count() == rate - - - 2000.0 == 2000 (0x) - - - - - res.outliers.total() == 0 - - - 0 == 0 - - - - - -
-
- -
- -
-
-
- -
- -
-
- -
- -
- - - - -loose text artifact - - - - - Previous info should not be seen - - - - - - previous unscoped info SHOULD not be seen - - - - - - - - - - - - - l == std::numeric_limits<long long>::max() - - - 9223372036854775807 (0x) -== -9223372036854775807 (0x) - - - - - -
- - - b > a - - - 0 > 1 - - - -
-
- - - b > a - - - 1 > 1 - - - -
-
- - - b > a - - - 2 > 1 - - - -
-
- - - b > a - - - 3 > 1 - - - -
-
- - - b > a - - - 4 > 1 - - - -
-
- - - b > a - - - 5 > 1 - - - -
-
- - - b > a - - - 6 > 1 - - - -
-
- - - b > a - - - 7 > 1 - - - -
-
- - - b > a - - - 8 > 1 - - - -
-
- - - b > a - - - 9 > 1 - - - -
- -
- - - Testing if fib[0] (1) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - Testing if fib[1] (1) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - Testing if fib[2] (2) is even - - - - ( fib[i] % 2 ) == 0 - - - 0 == 0 - - - - Testing if fib[3] (3) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - Testing if fib[4] (5) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - Testing if fib[5] (8) is even - - - - ( fib[i] % 2 ) == 0 - - - 0 == 0 - - - - Testing if fib[6] (13) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - Testing if fib[7] (21) is even - - - - ( fib[i] % 2 ) == 0 - - - 1 == 0 - - - - - -
- - - !(lval.has_moved) - - - !false - - - -
-
- - - rval.has_moved + testCase.isSuccessfullyCompleted() true - +
-
- + +
+ + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
+ + + s2.isOpen() == false + + + false == false + + + + + testCase.isComplete() == false + + + false == false + + +
+ - *ptr == std::tuple<int, double, int>{1, 2., 3} + testCase2.isOpen() - {?} == {?} + true + + + + + s1b.isOpen() == false + + + false == false + + + + + s2b.isOpen() + + + true + + + + + ctx.completedCycle() == false + + + false == false + + +
+ + + ctx.completedCycle() + + + true + + + + + s2b.isSuccessfullyCompleted() + + + true + + + + + testCase2.isComplete() == false + + + false == false + + + + + testCase2.isSuccessfullyCompleted() + + + true + + + +
+ +
+ +
+ + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
+ + + s2.isOpen() == false + + + false == false + + + + + testCase.isComplete() == false + + + false == false + + +
+ + + testCase2.isOpen() + + + true + + + + + s1b.isOpen() == false + + + false == false + + + + + s2b.isOpen() + + + true + + + + + ctx.completedCycle() == false + + + false == false + + +
+ + + ctx.completedCycle() + + + true + + + + + s2b.isComplete() + + + true + + + + + s2b.isSuccessfullyCompleted() == false + + + false == false + + + + + testCase2.isSuccessfullyCompleted() == false + + + false == false + + + + + testCase3.isOpen() + + + true + + + + + s1c.isOpen() == false + + + false == false + + + + + s2c.isOpen() == false + + + false == false + + + + + testCase3.isSuccessfullyCompleted() + + + true + + + +
+ +
+ +
+ + + testCase.isOpen() + + + true + + + + + s1.isOpen() + + + true + + +
+ + + s2.isOpen() + + + true + + + + + s2.isComplete() + + + true + + + + + s1.isComplete() == false + + + false == false + + + + + s1.isComplete() + + + true + + + + + testCase.isComplete() == false + + + false == false + + + + + testCase.isComplete() + + + true + + + +
+ +
+ + + + trim(std::string(no_whitespace)) == no_whitespace + + + "There is no extra whitespace here" +== +"There is no extra whitespace here" + + + + + trim(std::string(leading_whitespace)) == no_whitespace + + + "There is no extra whitespace here" +== +"There is no extra whitespace here" + + + + + trim(std::string(trailing_whitespace)) == no_whitespace + + + "There is no extra whitespace here" +== +"There is no extra whitespace here" + + + + + trim(std::string(whitespace_at_both_ends)) == no_whitespace + + + "There is no extra whitespace here" +== +"There is no extra whitespace here" + + + + + trim(StringRef(no_whitespace)) == StringRef(no_whitespace) + + + There is no extra whitespace here +== +There is no extra whitespace here + + + + + trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) + + + There is no extra whitespace here +== +There is no extra whitespace here + + + + + trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) + + + There is no extra whitespace here +== +There is no extra whitespace here + + + + + trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) + + + There is no extra whitespace here +== +There is no extra whitespace here + + + + + + + 3.14 + + + + +
+ + + bptr->i == 3 + + + 3 == 3 + + + +
+
+ + + bptr->i == 3 + + + 3 == 3 + + + +
+ +
+ +
+ + + data, AllMatch(SizeIs(5)) + + + { { 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 + + + + + data, !AllMatch(Contains(0) && Contains(1)) + + + { { 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 ) + + + +
+
+ + + needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) + + + { 1, 2, 3, 4, 5 } all match matches undescribed predicate + + + +
+
+
+ + + mocked, allMatch + + + { 1, 2, 3, 4, 5 } all match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + mocked.derefed[1] + + + true + + + + + mocked.derefed[2] + + + true + + + + + mocked.derefed[3] + + + true + + + + + mocked.derefed[4] + + + true + + + +
+ +
+
+
+ + + mocked, !allMatch + + + { 1, 2, 3, 4, 5 } not all match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + mocked.derefed[1] + + + true + + + + + mocked.derefed[2] + + + true + + + + + !(mocked.derefed[3]) + + + !false + + + + + !(mocked.derefed[4]) + + + !false + + + +
+ +
+ +
+ +
+ + + data, AnyMatch(SizeIs(5)) + + + { { 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 + + + + + data, !AnyMatch(Contains(0) && Contains(10)) + + + { { 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 ) + + + +
+
+ + + needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) + + + { 1, 2, 3, 4, 5 } any match matches undescribed predicate + + + +
+
+
+ + + mocked, !anyMatch + + + { 1, 2, 3, 4, 5 } not any match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + mocked.derefed[1] + + + true + + + + + mocked.derefed[2] + + + true + + + + + mocked.derefed[3] + + + true + + + + + mocked.derefed[4] + + + true + + + +
+ +
+
+
+ + + mocked, anyMatch + + + { 1, 2, 3, 4, 5 } any match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + !(mocked.derefed[1]) + + + !false + + + + + !(mocked.derefed[2]) + + + !false + + + + + !(mocked.derefed[3]) + + + !false + + + + + !(mocked.derefed[4]) + + + !false + + + +
+ +
+ +
+ +
+ + + data, NoneMatch(SizeIs(6)) + + + { { 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 + + + + + data, !NoneMatch(Contains(0) && Contains(1)) + + + { { 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 ) + + + +
+
+ + + needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) + + + { 1, 2, 3, 4, 5 } none match matches undescribed predicate + + + +
+
+
+ + + mocked, noneMatch + + + { 1, 2, 3, 4, 5 } none match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + mocked.derefed[1] + + + true + + + + + mocked.derefed[2] + + + true + + + + + mocked.derefed[3] + + + true + + + + + mocked.derefed[4] + + + true + + + +
+ +
+
+
+ + + mocked, !noneMatch + + + { 1, 2, 3, 4, 5 } not none match matches undescribed predicate + + + + + mocked.derefed[0] + + + true + + + + + !(mocked.derefed[1]) + + + !false + + + + + !(mocked.derefed[2]) + + + !false + + + + + !(mocked.derefed[3]) + + + !false + + + + + !(mocked.derefed[4]) + + + !false + + + +
+ +
+ +
+ +
+ + + empty_vec, SizeIs(0) + + + { } has size == 0 + + + + + empty_vec, !SizeIs(2) + + + { } not has size == 2 + + + + + empty_vec, SizeIs(Lt(2)) + + + { } size matches is less than 2 + + + + + arr, SizeIs(2) + + + { 0, 0 } has size == 2 + + + + + arr, SizeIs( Lt(3)) + + + { 0, 0 } size matches is less than 3 + + + + + arr, !SizeIs(!Lt(3)) + + + { 0, 0 } not size matches not is less than 3 + + + + + map, SizeIs(3) + + + { {?}, {?}, {?} } has size == 3 + + + +
+
+ + + unrelated::ADL_size{}, SizeIs(12) + + + {?} has size == 12 + + + +
+
+ + + has_size{}, SizeIs(13) + + + {?} has size == 13 + + + +
+ +
+ + + + d == approx( 1.23 ) + + + 1.23 == Approx( 1.23 ) + + + + + d == approx( 1.22 ) + + + 1.23 == Approx( 1.22 ) + + + + + d == approx( 1.24 ) + + + 1.23 == Approx( 1.24 ) + + + + + d != approx( 1.25 ) + + + 1.23 != Approx( 1.25 ) + + + + + approx( d ) == 1.23 + + + Approx( 1.23 ) == 1.23 + + + + + approx( d ) == 1.22 + + + Approx( 1.23 ) == 1.22 + + + + + approx( d ) == 1.24 + + + Approx( 1.23 ) == 1.24 + + + + + approx( d ) != 1.25 + + + Approx( 1.23 ) != 1.25 + + + + + +
+ +
+ +
+ +
+ + + empty, Approx( empty ) + + + { } is approx: { } + + + +
+
+
+ + + v1, Approx( v1 ) + + + { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } + + + + + v1, Approx<double>( { 1., 2., 3. } ) + + + { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } + + + +
+ +
+
+
+ + + v1, !Approx( temp ) + + + { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }
- - - + +
+
+
+ + + v1, !Approx( v2 ) + + + { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 } + + + + + v1, Approx( v2 ).margin( 0.5 ) + + + { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } + + + + + v1, Approx( v2 ).epsilon( 0.5 ) + + + { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } + + + + + v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) + + + { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 } + + + +
+ +
+ +
+ +
+ + + empty, Approx( t1 ) + + + { } is approx: { 1.0, 2.0 } + + + +
+
+ + + v1, Approx( v2 ) + + + { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 } + + + +
+ +
+ +
+ + + v, VectorContains( 1 ) + + + { 1, 2, 3 } Contains: 1 + + + + + v, VectorContains( 2 ) + + + { 1, 2, 3 } Contains: 2 + + + + + v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) + + + { 1, 2, 3 } Contains: 2 + + + +
+
+ + + v, Contains( v2 ) + + + { 1, 2, 3 } Contains: { 1, 2 } + + + + + v, Contains<int>( { 1, 2 } ) + + + { 1, 2, 3 } Contains: { 1, 2 } + + + + + v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) + + + { 1, 2, 3 } Contains: { 1, 2 } + + + + + v, Contains( v2 ) + + + { 1, 2, 3 } Contains: { 1, 2, 3 } + + + + + v, Contains( empty ) + + + { 1, 2, 3 } Contains: { } + + + + + empty, Contains( empty ) + + + { } Contains: { } + + + + + v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) + + + { 1, 2, 3 } Contains: { 1, 2, 3 } + + + + + v5, Contains( v6 ) + + + { 1, 2, 3 } Contains: { 1, 2 } + + + +
+
+ + + v, VectorContains( 1 ) && VectorContains( 2 ) + + + { 1, 2, 3 } ( Contains: 1 and Contains: 2 ) + + + +
+
+ + + v, Equals( v ) + + + { 1, 2, 3 } Equals: { 1, 2, 3 } + + + + + empty, Equals( empty ) + + + { } Equals: { } + + + + + v, Equals<int>( { 1, 2, 3 } ) + + + { 1, 2, 3 } Equals: { 1, 2, 3 } + + + + + v, Equals( v2 ) + + + { 1, 2, 3 } Equals: { 1, 2, 3 } + + + + + v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) + + + { 1, 2, 3 } Equals: { 1, 2, 3 } + + + + + v5, Equals( v6 ) + + + { 1, 2, 3 } Equals: { 1, 2, 3 } + + + +
+
+ + + v, UnorderedEquals( v ) + + + { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 } + + + + + v, UnorderedEquals<int>( { 3, 2, 1 } ) + + + { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 } + + + + + empty, UnorderedEquals( empty ) + + + { } UnorderedEquals: { } + + + + + permuted, UnorderedEquals( v ) + + + { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } + + + + + permuted, UnorderedEquals( v ) + + + { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 } + + + + + v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) + + + { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 } + + + + + v5_permuted, UnorderedEquals( v5 ) + + + { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 } + + + +
+ +
+ +
+ + + v, VectorContains( -1 ) + + + { 1, 2, 3 } Contains: -1 + + + + + empty, VectorContains( 1 ) + + + { } Contains: 1 + + + +
+
+ + + empty, Contains( v ) + + + { } Contains: { 1, 2, 3 } + + + + + v, Contains( v2 ) + + + { 1, 2, 3 } Contains: { 1, 2, 4 } + + + +
+
+ + + v, Equals( v2 ) + + + { 1, 2, 3 } Equals: { 1, 2 } + + + + + v2, Equals( v ) + + + { 1, 2 } Equals: { 1, 2, 3 } + + + + + empty, Equals( v ) + + + { } Equals: { 1, 2, 3 } + + + + + v, Equals( empty ) + + + { 1, 2, 3 } Equals: { } + + + +
+
+ + + v, UnorderedEquals( empty ) + + + { 1, 2, 3 } UnorderedEquals: { } + + + + + empty, UnorderedEquals( v ) + + + { } UnorderedEquals: { 1, 2, 3 } + + + + + permuted, UnorderedEquals( v ) + + + { 1, 3 } UnorderedEquals: { 1, 2, 3 } + + + + + permuted, UnorderedEquals( v ) + + + { 3, 1 } UnorderedEquals: { 1, 2, 3 } + + + +
+ +
+ + + + thisThrows(), std::domain_error + + + thisThrows(), std::domain_error + + + + + thisDoesntThrow() + + + thisDoesntThrow() + + + + + thisThrows() + + + thisThrows() + + + + + + + unexpected exception + + + + + + + thisThrows() == 0 + + + thisThrows() == 0 + + + expected exception + + + + + + + + thisThrows() == 0 + + + thisThrows() == 0 + + + expected exception + + + + + + + + thisThrows() == 0 + + + thisThrows() == 0 + + + expected exception + + + + + +
+ + unexpected exception + + +
+ +
+ + + + + + Uncomment the code in this test to check that it gives a sensible compiler error + + + + + + Uncomment the code in this test to check that it gives a sensible compiler error + + + + + + + + + + + + + + + + +
+ + + encode( "normal string" ) == "normal string" + + + "normal string" == "normal string" + + + +
+
+ + + encode( "" ) == "" + + + "" == "" + + + +
+
+ + + encode( "smith & jones" ) == "smith &amp; jones" + + + "smith &amp; jones" == "smith &amp; jones" + + + +
+
+ + + encode( "smith < jones" ) == "smith &lt; jones" + + + "smith &lt; jones" == "smith &lt; jones" + + + +
+
+ + + encode( "smith > jones" ) == "smith > jones" + + + "smith > jones" == "smith > jones" + + + + + encode( "smith ]]> jones" ) == "smith ]]&gt; jones" + + + "smith ]]&gt; jones" +== +"smith ]]&gt; jones" + + + +
+
+ + + encode( stringWithQuotes ) == stringWithQuotes + + + "don't "quote" me on that" +== +"don't "quote" me on that" + + + + + encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" + + + "don't &quot;quote&quot; me on that" +== +"don't &quot;quote&quot; me on that" + + + +
+
+ + + encode( "[\x01]" ) == "[\\x01]" + + + "[\x01]" == "[\x01]" + + + +
+
+ + + encode( "[\x7F]" ) == "[\\x7F]" + + + "[\x7F]" == "[\x7F]" + + + +
+ +
+ + + + stream.str(), Contains(R"(attr1="true")") && Contains(R"(attr2="false")") + + + "<?xml version="1.0" encoding="UTF-8"?> +<Element1 attr1="true" attr2="false"/> +" ( contains: "attr1="true"" and contains: "attr2="false"" ) + + + + + + + + analysis.mean.point.count() == 23 + + + 23.0 == 23 + + + + + analysis.mean.lower_bound.count() == 23 + + + 23.0 == 23 + + + + + analysis.mean.upper_bound.count() == 23 + + + 23.0 == 23 + + + + + analysis.standard_deviation.point.count() == 0 + + + 0.0 == 0 + + + + + analysis.standard_deviation.lower_bound.count() == 0 + + + 0.0 == 0 + + + + + analysis.standard_deviation.upper_bound.count() == 0 + + + 0.0 == 0 + + + + + analysis.outliers.total() == 0 + + + 0 == 0 + + + + + analysis.outliers.low_mild == 0 + + + 0 == 0 + + + + + analysis.outliers.low_severe == 0 + + + 0 == 0 + + + + + analysis.outliers.high_mild == 0 + + + 0 == 0 + + + + + analysis.outliers.high_severe == 0 + + + 0 == 0 + + + + + analysis.outliers.samples_seen == 0 + + + 0 == 0 + + + + + analysis.outlier_variance == 0 + + + 0.0 == 0 + + + + + + + + Catch::Detail::stringify( empty ) == "{ }" + + + "{ }" == "{ }" + + + + + Catch::Detail::stringify( oneValue ) == "{ 42 }" + + + "{ 42 }" == "{ 42 }" + + + + + Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" + + + "{ 42, 250 }" == "{ 42, 250 }" + + + + + + + + x == 0 + + + 0 == 0 + + + + + +
+ + + model.started == 1 + + + 1 == 1 + + + + + model.finished == 0 + + + 0 == 0 + + + + + model.started == 1 + + + 1 == 1 + + + + + model.finished == 1 + + + 1 == 1 + + + + + called == 1 + + + 1 == 1 + + + +
+
+ + + model.started == 0 + + + 0 == 0 + + + + + model.finished == 0 + + + 0 == 0 + + + + + model.started == 0 + + + 0 == 0 + + + + + model.finished == 0 + + + 0 == 0 + + + + + called == 1 + + + 1 == 1 + + + +
+ +
+ + + + obj.prop != 0 + + + 0x != 0 + + + + + + + + flag + + + true + + + + + testCheckedElse( true ) + + + true + + + + + + + + flag + + + false + + + + + testCheckedElse( false ) + + + false + + + + + + + + flag + + + true + + + + + testCheckedIf( true ) + + + true + + + + + + + + flag + + + false + + + + + testCheckedIf( false ) + + + false + + + + + +
- m == 19. + o.samples_seen == static_cast<int>(x.size()) - 19.0 == 19.0 + 6 == 6 - - - - + - x == 17 + o.low_severe == los - 17 == 17 + 0 == 0 - + - x == 23 + o.low_mild == lom - 23 == 23 + 0 == 0 - + - r.elapsed.count() == 42 + o.high_mild == him - 42 == 42 + 0 == 0 - + - r.result == 23 + o.high_severe == his - 23 == 23 + 0 == 0 - + - r.iterations == 1 + o.total() == los + lom + him + his + + + 0 == 0 + + + +
+
+ + + o.samples_seen == static_cast<int>(x.size()) + + + 6 == 6 + + + + + o.low_severe == los 1 == 1 - + - s.elapsed.count() == 69 + o.low_mild == lom - 69 == 69 + 0 == 0 - + - s.result == 17 + o.high_mild == him - 17 == 17 + 0 == 0 - + - s.iterations == 1 + o.high_severe == his + + + 0 == 0 + + + + + o.total() == los + lom + him + his 1 == 1 - - - - - info - - - unscoped info - - - and warn may mix - - - info - - - unscoped info - - - they are not cleared after warnings - - - - -
-
- - - a == b - - - 1 == 2 - - - -
- -
-
-
- - - a != b - - - 1 != 2 - - - -
- -
-
-
- - - a < b - - - 1 < 2 - - - -
- -
- -
- -
- - - a != b - - - 1 != 2 - - - - - b != a - - - 2 != 1 - - -
- - - a != b - - - 1 != 2 - - - -
- -
- -
- - + +
+
+ - s == "7" + o.samples_seen == static_cast<int>(x.size()) - "7" == "7" + 6 == 6 - - - - + - ti == typeid(int) + o.low_severe == los + + + 0 == 0 + + + + + o.low_mild == lom + + + 1 == 1 + + + + + o.high_mild == him + + + 0 == 0 + + + + + o.high_severe == his + + + 0 == 0 + + + + + o.total() == los + lom + him + his + + + 1 == 1 + + + +
+
+ + + o.samples_seen == static_cast<int>(x.size()) + + + 6 == 6 + + + + + o.low_severe == los + + + 0 == 0 + + + + + o.low_mild == lom + + + 0 == 0 + + + + + o.high_mild == him + + + 1 == 1 + + + + + o.high_severe == his + + + 0 == 0 + + + + + o.total() == los + lom + him + his + + + 1 == 1 + + + +
+
+ + + o.samples_seen == static_cast<int>(x.size()) + + + 6 == 6 + + + + + o.low_severe == los + + + 0 == 0 + + + + + o.low_mild == lom + + + 0 == 0 + + + + + o.high_mild == him + + + 0 == 0 + + + + + o.high_severe == his + + + 1 == 1 + + + + + o.total() == los + lom + him + his + + + 1 == 1 + + + +
+
+ + + o.samples_seen == static_cast<int>(x.size()) + + + 6 == 6 + + + + + o.low_severe == los + + + 1 == 1 + + + + + o.low_mild == lom + + + 0 == 0 + + + + + o.high_mild == him + + + 1 == 1 + + + + + o.high_severe == his + + + 0 == 0 + + + + + o.total() == los + lom + him + his + + + 2 == 2 + + + +
+ +
+ + + + unsigned_char_var == 1 + + + 1 == 1 + + + + + unsigned_short_var == 1 + + + 1 == 1 + + + + + unsigned_int_var == 1 + + + 1 == 1 + + + + + unsigned_long_var == 1 + + + 1 == 1 + + + + + + + + long_var == unsigned_char_var + + + 1 == 1 + + + + + long_var == unsigned_short_var + + + 1 == 1 + + + + + long_var == unsigned_int_var + + + 1 == 1 + + + + + long_var == unsigned_long_var + + + 1 == 1 + + + + + + + + convertToBits( 0.f ) == 0 + + + 0 == 0 + + + + + convertToBits( -0.f ) == ( 1ULL << 31 ) + + + 2147483648 (0x) +== +2147483648 (0x) + + + + + convertToBits( 0. ) == 0 + + + 0 == 0 + + + + + convertToBits( -0. ) == ( 1ULL << 63 ) + + + 9223372036854775808 (0x) +== +9223372036854775808 (0x) + + + + + convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 + + + 1 == 1 + + + + + convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 + + + 1 == 1 + + + + + + + + Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) + + + Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) + + + + + + + + erfc_inv(1.103560) == Approx(-0.09203687623843015) + + + -0.0920368762 == Approx( -0.0920368762 ) + + + + + erfc_inv(1.067400) == Approx(-0.05980291115763361) + + + -0.0598029112 == Approx( -0.0598029112 ) + + + + + erfc_inv(0.050000) == Approx(1.38590382434967796) + + + 1.3859038243 == Approx( 1.3859038243 ) + + + + + + + + res.mean.count() == rate + + + 2000.0 == 2000 (0x) + + + + + res.outliers.total() == 0 + + + 0 == 0 + + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ + + + +loose text artifact + + + + + Previous info should not be seen + + + + + + previous unscoped info SHOULD not be seen + + + + + + + + + + + + + l == std::numeric_limits<long long>::max() + + + 9223372036854775807 (0x) +== +9223372036854775807 (0x) + + + + + +
+ + + b > a + + + 0 > 1 + + + +
+
+ + + b > a + + + 1 > 1 + + + +
+
+ + + b > a + + + 2 > 1 + + + +
+
+ + + b > a + + + 3 > 1 + + + +
+
+ + + b > a + + + 4 > 1 + + + +
+
+ + + b > a + + + 5 > 1 + + + +
+
+ + + b > a + + + 6 > 1 + + + +
+
+ + + b > a + + + 7 > 1 + + + +
+
+ + + b > a + + + 8 > 1 + + + +
+
+ + + b > a + + + 9 > 1 + + + +
+ +
+ + + Testing if fib[0] (1) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + Testing if fib[1] (1) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + Testing if fib[2] (2) is even + + + + ( fib[i] % 2 ) == 0 + + + 0 == 0 + + + + Testing if fib[3] (3) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + Testing if fib[4] (5) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + Testing if fib[5] (8) is even + + + + ( fib[i] % 2 ) == 0 + + + 0 == 0 + + + + Testing if fib[6] (13) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + Testing if fib[7] (21) is even + + + + ( fib[i] % 2 ) == 0 + + + 1 == 0 + + + + + +
+ + + !(lval.has_moved) + + + !false + + + +
+
+ + + rval.has_moved + + + true + + + +
+
+ + + *ptr == std::tuple<int, double, int>{1, 2., 3} {?} == {?} - - - - - - normal_cdf(0.000000) == Approx(0.50000000000000000) - - - 0.5 == Approx( 0.5 ) - - - - - normal_cdf(1.000000) == Approx(0.84134474606854293) - - - 0.8413447461 == Approx( 0.8413447461 ) - - - - - normal_cdf(-1.000000) == Approx(0.15865525393145705) - - - 0.1586552539 == Approx( 0.1586552539 ) - - - - - normal_cdf(2.809729) == Approx(0.99752083845315409) - - - 0.9975208385 == Approx( 0.9975208385 ) - - - - - normal_cdf(-1.352570) == Approx(0.08809652095066035) - - - 0.088096521 == Approx( 0.088096521 ) - - - - - - - - normal_quantile(0.551780) == Approx(0.13015979861484198) - - - 0.1301597986 == Approx( 0.1301597986 ) - - - - - normal_quantile(0.533700) == Approx(0.08457408802851875) - - - 0.084574088 == Approx( 0.084574088 ) - - - - - normal_quantile(0.025000) == Approx(-1.95996398454005449) - - - -1.9599639845 == Approx( -1.9599639845 ) - - - - - - - - - - this MAY be seen only for the FIRST assertion IF info is printed for passing assertions - - - - true - - - true - - - - this MAY be seen only for the SECOND assertion IF info is printed for passing assertions - - - - true - - - true - - - - this SHOULD be seen - - - - false - - - false - - - - - - - - makeString( false ) != static_cast<char*>(0) - - - "valid string" != {null string} - - - - - makeString( true ) == static_cast<char*>(0) - - - {null string} == {null string} - - - - - - - - ptr.get() == 0 - - - 0 == 0 - - - - - - - - ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" - - - "{ { 42, "Arthur" }, { "Ford", 24 } }" -== -"{ { 42, "Arthur" }, { "Ford", 24 } }" - - - - - -
- + +
+ +
+ + + + m == 19. + + + 19.0 == 19.0 + + + + + + + + x == 17 + + + 17 == 17 + + + + + x == 23 + + + 23 == 23 + + + + + r.elapsed.count() == 42 + + + 42 == 42 + + + + + r.result == 23 + + + 23 == 23 + + + + + r.iterations == 1 + + + 1 == 1 + + + + + s.elapsed.count() == 69 + + + 69 == 69 + + + + + s.result == 17 + + + 17 == 17 + + + + + s.iterations == 1 + + + 1 == 1 + + + + + + + info + + + unscoped info + + + and warn may mix + + + info + + + unscoped info + + + they are not cleared after warnings + + + + +
+
+ - parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) + a == b - { } Equals: { } + 1 == 2 - -
-
- - - parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) - - - { Value1 } Equals: { Value1 } - - - - - parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) - - - { Value1 } Equals: { Value1 } - - - - - parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) - - - { Value1 } Equals: { Value1 } - - - -
-
- - - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) - - - { Value1, Value2 } Equals: { Value1, Value2 } - - - - - parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) - - - { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } - - - - - parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) - - - { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } - - - -
- - - - - - p == 0 - - - 0 == 0 - - - - - - - this MAY be seen IF info is printed for passing assertions - - - - true - - - true - - - - - - - this SHOULD be seen - - - this SHOULD also be seen - - - - false - - - false - - - - - - - this SHOULD be seen only ONCE - - - - false - - - false - - - - - true - - - true - - - - this MAY also be seen only ONCE IF info is printed for passing assertions - - - - true - - - true - - - - - true - - - true - - - - - -
- - - a != b - - - 1 != 2 - - - - - b != a - - - 2 != 1 - - - +
+ +
+
@@ -18244,1487 +17836,1946 @@ loose text artifact
- - - -
- + +
+
+
+ - Catch::replaceInPlace(letters, "b", "z") + a < b - true + 1 < 2 - - - letters == "azcdefcg" - - - "azcdefcg" == "azcdefcg" - - - +
-
- + +
+ + + +
+ + + a != b + + + 1 != 2 + + + + + b != a + + + 2 != 1 + + +
+ - Catch::replaceInPlace(letters, "c", "z") + a != b - true + 1 != 2 - - - letters == "abzdefzg" - - - "abzdefzg" == "abzdefzg" - - - +
-
- - - Catch::replaceInPlace(letters, "a", "z") - - - true - - - - - letters == "zbcdefcg" - - - "zbcdefcg" == "zbcdefcg" - - - -
-
- - - Catch::replaceInPlace(letters, "g", "z") - - - true - - - - - letters == "abcdefcz" - - - "abcdefcz" == "abcdefcz" - - - -
-
- - - Catch::replaceInPlace(letters, letters, "replaced") - - - true - - - - - letters == "replaced" - - - "replaced" == "replaced" - - - -
-
- - - !(Catch::replaceInPlace(letters, "x", "z")) - - - !false - - - - - letters == letters - - - "abcdefcg" == "abcdefcg" - - - -
-
- - - Catch::replaceInPlace(s, "'", "|'") - - - true - - - - - s == "didn|'t" - - - "didn|'t" == "didn|'t" - - - -
- - - - + +
+ +
+ + + + s == "7" + + + "7" == "7" + + + + + + + + ti == typeid(int) + + + {?} == {?} + + + + + + + + normal_cdf(0.000000) == Approx(0.50000000000000000) + + + 0.5 == Approx( 0.5 ) + + + + + normal_cdf(1.000000) == Approx(0.84134474606854293) + + + 0.8413447461 == Approx( 0.8413447461 ) + + + + + normal_cdf(-1.000000) == Approx(0.15865525393145705) + + + 0.1586552539 == Approx( 0.1586552539 ) + + + + + normal_cdf(2.809729) == Approx(0.99752083845315409) + + + 0.9975208385 == Approx( 0.9975208385 ) + + + + + normal_cdf(-1.352570) == Approx(0.08809652095066035) + + + 0.088096521 == Approx( 0.088096521 ) + + + + + + + + normal_quantile(0.551780) == Approx(0.13015979861484198) + + + 0.1301597986 == Approx( 0.1301597986 ) + + + + + normal_quantile(0.533700) == Approx(0.08457408802851875) + + + 0.084574088 == Approx( 0.084574088 ) + + + + + normal_quantile(0.025000) == Approx(-1.95996398454005449) + + + -1.9599639845 == Approx( -1.9599639845 ) + + + + + + + + + + this MAY be seen only for the FIRST assertion IF info is printed for passing assertions + + + + true + + + true + + + + this MAY be seen only for the SECOND assertion IF info is printed for passing assertions + + + + true + + + true + + + + this SHOULD be seen + + + + false + + + false + + + + + + + + makeString( false ) != static_cast<char*>(0) + + + "valid string" != {null string} + + + + + makeString( true ) == static_cast<char*>(0) + + + {null string} == {null string} + + + + + + + + ptr.get() == 0 + + + 0 == 0 + + + + + + + + ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" + + + "{ { 42, "Arthur" }, { "Ford", 24 } }" +== +"{ { 42, "Arthur" }, { "Ford", 24 } }" + + + + + +
+ - res.size() == count - - - 10 == 10 - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - res[i] == rate - - - 1000.0 == 1000 (0x) - - - - - - - - meter.runs() >= old_runs - - - 1 >= 1 - - - - - meter.runs() >= old_runs - - - 2 >= 1 - - - - - meter.runs() >= old_runs - - - 4 >= 2 - - - - - meter.runs() >= old_runs - - - 8 >= 4 - - - - - meter.runs() >= old_runs - - - 16 >= 8 - - - - - meter.runs() >= old_runs - - - 32 >= 16 - - - - - meter.runs() >= old_runs - - - 64 >= 32 - - - - - meter.runs() >= old_runs - - - 128 >= 64 - - - - - Timing.elapsed >= time - - - 128 ns >= 100 ns - - - - - Timing.result == Timing.iterations + 17 - - - 145 == 145 - - - - - Timing.iterations >= time.count() - - - 128 >= 100 - - - - - - - - x >= old_x - - - 1 >= 1 - - - - - x >= old_x - - - 2 >= 1 - - - - - x >= old_x - - - 4 >= 2 - - - - - x >= old_x - - - 8 >= 4 - - - - - x >= old_x - - - 16 >= 8 - - - - - x >= old_x - - - 32 >= 16 - - - - - x >= old_x - - - 64 >= 32 - - - - - x >= old_x - - - 128 >= 64 - - - - - Timing.elapsed >= time - - - 128 ns >= 100 ns - - - - - Timing.result == Timing.iterations + 17 - - - 145 == 145 - - - - - Timing.iterations >= time.count() - - - 128 >= 100 - - - - - - - - - - 3 - - - - false - - - false - - - - - - - hi - - - i := 7 - - - - false - - - false - - - - - - - - tags, VectorContains("magic-tag"_catch_sr) && VectorContains("."_catch_sr) - - - { ., magic-tag } ( Contains: magic-tag and Contains: . ) - - - - - - - - splitStringRef("", ','), Equals(std::vector<StringRef>()) + parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) { } Equals: { } - + +
+
+ - splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) + parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) - { abc } Equals: { abc } + { Value1 } Equals: { Value1 } - + - splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) + parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) - { abc, def } Equals: { abc, def } + { Value1 } Equals: { Value1 } - - - - - Count 1 to 3... - - - 1 - - - 2 - - - 3 - - + - false + parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) - false + { Value1 } Equals: { Value1 } - - Count 4 to 6... - - - 4 - - - 5 - - - 6 - - + +
+
+ - false + parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) - false + { Value1, Value2 } Equals: { Value1, Value2 } - - - -
- - - Catch::Detail::stringify( emptyMap ) == "{ }" - - - "{ }" == "{ }" - - - -
-
- - - Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" - - - "{ { "one", 1 } }" == "{ { "one", 1 } }" - - - -
-
- - - Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" - - - "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" + + + parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) + + + { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } + + + + + parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) + + + { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 } + + + +
+ +
+ + + + p == 0 + + + 0 == 0 + + + + + + + this MAY be seen IF info is printed for passing assertions + + + + true + + + true + + + + + + + this SHOULD be seen + + + this SHOULD also be seen + + + + false + + + false + + + + + + + this SHOULD be seen only ONCE + + + + false + + + false + + + + + true + + + true + + + + this MAY also be seen only ONCE IF info is printed for passing assertions + + + + true + + + true + + + + + true + + + true + + + + + +
+ + + a != b + + + 1 != 2 + + + + + b != a + + + 2 != 1 + + + +
+
+ + + a != b + + + 1 != 2 + + + +
+ +
+ +
+ + + Catch::replaceInPlace(letters, "b", "z") + + + true + + + + + letters == "azcdefcg" + + + "azcdefcg" == "azcdefcg" + + + +
+
+ + + Catch::replaceInPlace(letters, "c", "z") + + + true + + + + + letters == "abzdefzg" + + + "abzdefzg" == "abzdefzg" + + + +
+
+ + + Catch::replaceInPlace(letters, "a", "z") + + + true + + + + + letters == "zbcdefcg" + + + "zbcdefcg" == "zbcdefcg" + + + +
+
+ + + Catch::replaceInPlace(letters, "g", "z") + + + true + + + + + letters == "abcdefcz" + + + "abcdefcz" == "abcdefcz" + + + +
+
+ + + Catch::replaceInPlace(letters, letters, "replaced") + + + true + + + + + letters == "replaced" + + + "replaced" == "replaced" + + + +
+
+ + + !(Catch::replaceInPlace(letters, "x", "z")) + + + !false + + + + + letters == letters + + + "abcdefcg" == "abcdefcg" + + + +
+
+ + + Catch::replaceInPlace(s, "'", "|'") + + + true + + + + + s == "didn|'t" + + + "didn|'t" == "didn|'t" + + + +
+ +
+ + + + res.size() == count + + + 10 == 10 + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + res[i] == rate + + + 1000.0 == 1000 (0x) + + + + + + + + meter.runs() >= old_runs + + + 1 >= 1 + + + + + meter.runs() >= old_runs + + + 2 >= 1 + + + + + meter.runs() >= old_runs + + + 4 >= 2 + + + + + meter.runs() >= old_runs + + + 8 >= 4 + + + + + meter.runs() >= old_runs + + + 16 >= 8 + + + + + meter.runs() >= old_runs + + + 32 >= 16 + + + + + meter.runs() >= old_runs + + + 64 >= 32 + + + + + meter.runs() >= old_runs + + + 128 >= 64 + + + + + Timing.elapsed >= time + + + 128 ns >= 100 ns + + + + + Timing.result == Timing.iterations + 17 + + + 145 == 145 + + + + + Timing.iterations >= time.count() + + + 128 >= 100 + + + + + + + + x >= old_x + + + 1 >= 1 + + + + + x >= old_x + + + 2 >= 1 + + + + + x >= old_x + + + 4 >= 2 + + + + + x >= old_x + + + 8 >= 4 + + + + + x >= old_x + + + 16 >= 8 + + + + + x >= old_x + + + 32 >= 16 + + + + + x >= old_x + + + 64 >= 32 + + + + + x >= old_x + + + 128 >= 64 + + + + + Timing.elapsed >= time + + + 128 ns >= 100 ns + + + + + Timing.result == Timing.iterations + 17 + + + 145 == 145 + + + + + Timing.iterations >= time.count() + + + 128 >= 100 + + + + + + + + + + 3 + + + + false + + + false + + + + + + + hi + + + i := 7 + + + + false + + + false + + + + + + + + tags, VectorContains("magic-tag"_catch_sr) && VectorContains("."_catch_sr) + + + { ., magic-tag } ( Contains: magic-tag and Contains: . ) + + + + + + + + splitStringRef("", ','), Equals(std::vector<StringRef>()) + + + { } Equals: { } + + + + + splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) + + + { abc } Equals: { abc } + + + + + splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) + + + { abc, def } Equals: { abc, def } + + + + + + + Count 1 to 3... + + + 1 + + + 2 + + + 3 + + + + false + + + false + + + + Count 4 to 6... + + + 4 + + + 5 + + + 6 + + + + false + + + false + + + + + +
+ + + Catch::Detail::stringify( emptyMap ) == "{ }" + + + "{ }" == "{ }" + + + +
+
+ + + Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" + + + "{ { "one", 1 } }" == "{ { "one", 1 } }" + + + +
+
+ + + Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" + + + "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" == "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }" - - - -
- -
- - - - ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" - - - "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" - - - - + +
+ +
+ + + + ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" + + + "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" + + + + + + + + ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" + + + "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" + + + + + +
+ - ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" + Catch::Detail::stringify( emptySet ) == "{ }" - "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }" + "{ }" == "{ }" - - - -
- - - Catch::Detail::stringify( emptySet ) == "{ }" - - - "{ }" == "{ }" - - - -
-
- - - Catch::Detail::stringify( set ) == "{ \"one\" }" - - - "{ "one" }" == "{ "one" }" - - - -
-
- - - Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" - - - "{ "abc", "def", "ghi" }" + +
+
+ + + Catch::Detail::stringify( set ) == "{ \"one\" }" + + + "{ "one" }" == "{ "one" }" + + + +
+
+ + + Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" + + + "{ "abc", "def", "ghi" }" == "{ "abc", "def", "ghi" }" - - - -
- -
- - - - ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" - - - "{ { "green", 55 } }" + + + +
+ +
+ + + + ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" + + + "{ { "green", 55 } }" == "{ { "green", 55 } }" - - - - - - - - std::string( "first" ) == "second" - - - "first" == "second" - - - - - - - - ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" - - - "op<<(streamable_range)" + + + + + + + + std::string( "first" ) == "second" + + + "first" == "second" + + + + + + + + ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" + + + "op<<(streamable_range)" == "op<<(streamable_range)" - - - - - ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" - - - "stringmaker(streamable_range)" + + + + + ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" + + + "stringmaker(streamable_range)" == "stringmaker(streamable_range)" - - - - - ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" - - - "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }" - - - - - ::Catch::Detail::stringify(disabled_range{}) == "{?}" - - - "{?}" == "{?}" - - - - - - - - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" - - - "StringMaker<has_maker>" + + + + + ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" + + + "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }" + + + + + ::Catch::Detail::stringify(disabled_range{}) == "{?}" + + + "{?}" == "{?}" + + + + + + + + ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" + + + "StringMaker<has_maker>" == "StringMaker<has_maker>" - - - - - - - - ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" - - - "StringMaker<has_maker_and_operator>" + + + + + + + + ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" + + + "StringMaker<has_maker_and_operator>" == "StringMaker<has_maker_and_operator>" - - - - - - - - ::Catch::Detail::stringify(item) == "{?}" - - - "{?}" == "{?}" - - - - - - - - ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" - - - "operator<<( has_operator )" + + + + + + + + ::Catch::Detail::stringify(item) == "{?}" + + + "{?}" == "{?}" + + + + + + + + ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" + + + "operator<<( has_operator )" == "operator<<( has_operator )" - - - - - - - - ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" - - - "operator<<( has_template_operator )" + + + + + + + + ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" + + + "operator<<( has_template_operator )" == "operator<<( has_template_operator )" - - - - - - - - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" - - - "{ StringMaker<has_maker> }" + + + + + + + + ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" + + + "{ StringMaker<has_maker> }" == "{ StringMaker<has_maker> }" - - - - - - - - ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" - - - "{ StringMaker<has_maker_and_operator> }" + + + + + + + + ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" + + + "{ StringMaker<has_maker_and_operator> }" == "{ StringMaker<has_maker_and_operator> }" - - - - - - - - ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" - - - "{ operator<<( has_operator ) }" + + + + + + + + ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" + + + "{ operator<<( has_operator ) }" == "{ operator<<( has_operator ) }" - - - - - - + + + + + + + + data.str.size() == data.len + + + 3 == 3 + + + + + data.str.size() == data.len + + + 3 == 3 + + + + + data.str.size() == data.len + + + 5 == 5 + + + + + data.str.size() == data.len + + + 4 == 4 + + + + + + + + strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + + + 5 == 5 + + + + + strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + + + 6 == 6 + + + + + strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + + + 5 == 5 + + + + + strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + + + 6 == 6 + + + + + + + + testcase.tags.size() == 1 + + + 1 == 1 + + + + + testcase.tags[0].original == "magic.tag"_catch_sr + + + magic.tag == magic.tag + + + + + + + Why would you throw a std::string? + + + + + + + result == "\"wide load\"" + + + ""wide load"" == ""wide load"" + + + + + + + + result == "\"wide load\"" + + + ""wide load"" == ""wide load"" + + + + + + + + result == "\"wide load\"" + + + ""wide load"" == ""wide load"" + + + + + + + + result == "\"wide load\"" + + + ""wide load"" == ""wide load"" + + + + + + + + ::Catch::Detail::stringify(e0) == "E2/V0" + + + "E2/V0" == "E2/V0" + + + + + ::Catch::Detail::stringify(e1) == "E2/V1" + + + "E2/V1" == "E2/V1" + + + + + ::Catch::Detail::stringify(e3) == "Unknown enum value 10" + + + "Unknown enum value 10" +== +"Unknown enum value 10" + + + + + + + + ::Catch::Detail::stringify(e0) == "0" + + + "0" == "0" + + + + + ::Catch::Detail::stringify(e1) == "1" + + + "1" == "1" + + + + + + + + ::Catch::Detail::stringify(e0) == "E2{0}" + + + "E2{0}" == "E2{0}" + + + + + ::Catch::Detail::stringify(e1) == "E2{1}" + + + "E2{1}" == "E2{1}" + + + + + + + + ::Catch::Detail::stringify(e0) == "0" + + + "0" == "0" + + + + + ::Catch::Detail::stringify(e1) == "1" + + + "1" == "1" + + + + + + + + "{ }" == ::Catch::Detail::stringify(type{}) + + + "{ }" == "{ }" + + + + + "{ }" == ::Catch::Detail::stringify(value) + + + "{ }" == "{ }" + + + + + + + + "1.2f" == ::Catch::Detail::stringify(float(1.2)) + + + "1.2f" == "1.2f" + + + + + "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) + + + "{ 1.2f, 0 }" == "{ 1.2f, 0 }" + + + + + + + + "{ 0 }" == ::Catch::Detail::stringify(type{0}) + + + "{ 0 }" == "{ 0 }" + + + + + + + + "{ 0, 42, \"Catch me\" }" == ::Catch::Detail::stringify(value) + + + "{ 0, 42, "Catch me" }" +== +"{ 0, 42, "Catch me" }" + + + + + + + + "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) + + + "{ "hello", "world" }" +== +"{ "hello", "world" }" + + + + + + + + "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) + + + "{ { 42 }, { }, 1.2f }" +== +"{ { 42 }, { }, 1.2f }" + + + + + + + + e.point == 23 + + + 23.0 == 23 + + + + + e.upper_bound == 23 + + + 23.0 == 23 + + + + + e.lower_bound == 23 + + + 23.0 == 23 + + + + + e.confidence_interval == 0.95 + + + 0.95 == 0.95 + + + + + +
+ - data.str.size() == data.len + !(ptr) - 3 == 3 + !{?} - + - data.str.size() == data.len + ptr.get() == 0 - 3 == 3 + 0 == 0 - + +
+
+ - data.str.size() == data.len + ptr - 5 == 5 + {?} - + - data.str.size() == data.len + *ptr == 0 - 4 == 4 + 0 == 0 - - - - + - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + ptr.get() == naked_ptr - 5 == 5 + 0x == 0x - +
+ + + !(ptr) + + + !{?} + + + + + ptr.get() == 0 + + + 0 == 0 + + + +
+ +
+
+ - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + ptr - 6 == 6 + {?} - + - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + *ptr == 0 - 5 == 5 + 0 == 0 - + - strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) + ptr.get() == naked_ptr - 6 == 6 + 0x == 0x - - - - +
+ + + ptr + + + {?} + + + + + ptr.get() != 0 + + + 0x != 0 + + + + + *ptr == 2 + + + 2 == 2 + + + +
+ +
+
+ - testcase.tags.size() == 1 + !(ptr) + + + !{?} + + + + + ptr.get() == 0 + + + 0 == 0 + + + +
+
+ + + !(ptr1) + + + !{?} + + + + + ptr2 + + + {?} + + + + + *ptr2 == 1 1 == 1 - + +
+
+ - testcase.tags[0].original == "magic.tag"_catch_sr + !(ptr2) - magic.tag == magic.tag + !{?} - - - - - Why would you throw a std::string? - - - - - + - result == "\"wide load\"" + ptr1 - ""wide load"" == ""wide load"" + {?} - - - - + - result == "\"wide load\"" + *ptr1 == 2 - ""wide load"" == ""wide load"" + 2 == 2 - - - - + +
+
+ - result == "\"wide load\"" + *ptr1 == 2 - ""wide load"" == ""wide load"" + 2 == 2 - - - - + - result == "\"wide load\"" + *ptr2 == 1 - ""wide load"" == ""wide load"" + 1 == 1 - - - - - - ::Catch::Detail::stringify(e0) == "E2/V0" - - - "E2/V0" == "E2/V0" - - - - - ::Catch::Detail::stringify(e1) == "E2/V1" - - - "E2/V1" == "E2/V1" - - - - - ::Catch::Detail::stringify(e3) == "Unknown enum value 10" - - - "Unknown enum value 10" -== -"Unknown enum value 10" - - - - - - - - ::Catch::Detail::stringify(e0) == "0" - - - "0" == "0" - - - - - ::Catch::Detail::stringify(e1) == "1" - - - "1" == "1" - - - - - - - - ::Catch::Detail::stringify(e0) == "E2{0}" - - - "E2{0}" == "E2{0}" - - - - - ::Catch::Detail::stringify(e1) == "E2{1}" - - - "E2{1}" == "E2{1}" - - - - - - - - ::Catch::Detail::stringify(e0) == "0" - - - "0" == "0" - - - - - ::Catch::Detail::stringify(e1) == "1" - - - "1" == "1" - - - - - - - - "{ }" == ::Catch::Detail::stringify(type{}) - - - "{ }" == "{ }" - - - - - "{ }" == ::Catch::Detail::stringify(value) - - - "{ }" == "{ }" - - - - - - - - "1.2f" == ::Catch::Detail::stringify(float(1.2)) - - - "1.2f" == "1.2f" - - - - - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) - - - "{ 1.2f, 0 }" == "{ 1.2f, 0 }" - - - - - - - - "{ 0 }" == ::Catch::Detail::stringify(type{0}) - - - "{ 0 }" == "{ 0 }" - - - - - - - - "{ 0, 42, \"Catch me\" }" == ::Catch::Detail::stringify(value) - - - "{ 0, 42, "Catch me" }" -== -"{ 0, 42, "Catch me" }" - - - - - - - - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) - - - "{ "hello", "world" }" -== -"{ "hello", "world" }" - - - - - - - - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) - - - "{ { 42 }, { }, 1.2f }" -== -"{ { 42 }, { }, 1.2f }" - - - - - - - - e.point == 23 - - - 23.0 == 23 - - - - - e.upper_bound == 23 - - - 23.0 == 23 - - - - - e.lower_bound == 23 - - - 23.0 == 23 - - - - - e.confidence_interval == 0.95 - - - 0.95 == 0.95 - - - - - -
- - - !(ptr) - - - !{?} - - - - - ptr.get() == 0 - - - 0 == 0 - - - -
-
- - - ptr - - - {?} - - - - - *ptr == 0 - - - 0 == 0 - - - - - ptr.get() == naked_ptr - - - 0x == 0x - - -
- - - !(ptr) - - - !{?} - - - - - ptr.get() == 0 - - - 0 == 0 - - - -
- -
-
- - - ptr - - - {?} - - - - - *ptr == 0 - - - 0 == 0 - - - - - ptr.get() == naked_ptr - - - 0x == 0x - - -
- - - ptr - - - {?} - - - - - ptr.get() != 0 - - - 0x != 0 - - - - - *ptr == 2 - - - 2 == 2 - - - -
- -
-
- - - !(ptr) - - - !{?} - - - - - ptr.get() == 0 - - - 0 == 0 - - - -
-
- - - !(ptr1) - - - !{?} - - - - - ptr2 - - - {?} - - - - - *ptr2 == 1 - - - 1 == 1 - - - -
-
- - - !(ptr2) - - - !{?} - - - - - ptr1 - - - {?} - - - - - *ptr1 == 2 - - - 2 == 2 - - - -
-
- - - *ptr1 == 2 - - - 2 == 2 - - - - - *ptr2 == 1 - - - 1 == 1 - - - -
- -
- - - - ::Catch::Detail::stringify(v) == "{ }" - - - "{ }" == "{ }" - - - - - ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" - - - "{ { "hello" }, { "world" } }" + +
+ +
+ + + + ::Catch::Detail::stringify(v) == "{ }" + + + "{ }" == "{ }" + + + + + ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" + + + "{ { "hello" }, { "world" } }" == "{ { "hello" }, { "world" } }" - - - - - - - - ::Catch::Detail::stringify(bools) == "{ }" - - - "{ }" == "{ }" - - - - - ::Catch::Detail::stringify(bools) == "{ true }" - - - "{ true }" == "{ true }" - - - - - ::Catch::Detail::stringify(bools) == "{ true, false }" - - - "{ true, false }" == "{ true, false }" - - - - - - - - ::Catch::Detail::stringify(vv) == "{ }" - - - "{ }" == "{ }" - - - - - ::Catch::Detail::stringify(vv) == "{ 42 }" - - - "{ 42 }" == "{ 42 }" - - - - - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" - - - "{ 42, 250 }" == "{ 42, 250 }" - - - - - - - - ::Catch::Detail::stringify(vv) == "{ }" - - - "{ }" == "{ }" - - - - - ::Catch::Detail::stringify(vv) == "{ 42 }" - - - "{ 42 }" == "{ 42 }" - - - - - ::Catch::Detail::stringify(vv) == "{ 42, 250 }" - - - "{ 42, 250 }" == "{ 42, 250 }" - - - - - - - - ::Catch::Detail::stringify(vv) == "{ }" - - - "{ }" == "{ }" - - - - - ::Catch::Detail::stringify(vv) == "{ \"hello\" }" - - - "{ "hello" }" == "{ "hello" }" - - - - - ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" - - - "{ "hello", "world" }" + + + + + + + + ::Catch::Detail::stringify(bools) == "{ }" + + + "{ }" == "{ }" + + + + + ::Catch::Detail::stringify(bools) == "{ true }" + + + "{ true }" == "{ true }" + + + + + ::Catch::Detail::stringify(bools) == "{ true, false }" + + + "{ true, false }" == "{ true, false }" + + + + + + + + ::Catch::Detail::stringify(vv) == "{ }" + + + "{ }" == "{ }" + + + + + ::Catch::Detail::stringify(vv) == "{ 42 }" + + + "{ 42 }" == "{ 42 }" + + + + + ::Catch::Detail::stringify(vv) == "{ 42, 250 }" + + + "{ 42, 250 }" == "{ 42, 250 }" + + + + + + + + ::Catch::Detail::stringify(vv) == "{ }" + + + "{ }" == "{ }" + + + + + ::Catch::Detail::stringify(vv) == "{ 42 }" + + + "{ 42 }" == "{ 42 }" + + + + + ::Catch::Detail::stringify(vv) == "{ 42, 250 }" + + + "{ 42, 250 }" == "{ 42, 250 }" + + + + + + + + ::Catch::Detail::stringify(vv) == "{ }" + + + "{ }" == "{ }" + + + + + ::Catch::Detail::stringify(vv) == "{ \"hello\" }" + + + "{ "hello" }" == "{ "hello" }" + + + + + ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" + + + "{ "hello", "world" }" == "{ "hello", "world" }" - - - - - + + + + + + + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
- v.size() == 5 + v.size() == 10 - 5 == 5 + 10 == 10 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 0 + + + 0 == 0 @@ -19735,71 +19786,71 @@ loose text artifact 5 >= 5 -
+
- v.size() == 10 - - - 10 == 10 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 0 + v.capacity() == 0 0 == 0 - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.capacity() == 0 - - - 0 == 0 - - - -
- +
+ +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 10 + + + 10 >= 10 + + + +
+ + + v.size() == 5 + + + 5 == 5 + + + + + v.capacity() >= 5 + + + 5 >= 5 + + +
v.size() == 5 @@ -19816,120 +19867,65 @@ loose text artifact 5 >= 5 -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 10 - - - 10 >= 10 - - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - -
- - - v.size() == 5 - - - 5 == 5 - - - - - v.capacity() >= 5 - - - 5 >= 5 - - - -
- - - - - - (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() - - - 160000000 (0x) > 100 - - - - - (end - start) > Catch::Benchmark::Detail::warmup_time - - - 310016000 ns > 100 ms - - - - - - - - q1 == 14.5 - - - 14.5 == 14.5 - - - - - med == 18. - - - 18.0 == 18.0 - - - - - q3 == 23. - - - 23.0 == 23.0 - - - - - -
- -
-
- -
- -
- - - + +
+ + + + + + (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() + + + 160000000 (0x) > 100 + + + + + (end - start) > Catch::Benchmark::Detail::warmup_time + + + 310016000 ns > 100 ms + + + + + + + + q1 == 14.5 + + + 14.5 == 14.5 + + + + + med == 18. + + + 18.0 == 18.0 + + + + + q3 == 23. + + + 23.0 == 23.0 + + + + + +
+ +
+
+ +
+ +
- +