mirror of https://github.com/catchorg/Catch2.git
First cut of Timer class.
- started integrating with reporters (now (optionally) supported in console reporter). - introduced Node<> template to help with cumulative reporting and used it instead of ThreadedSectionInfo.
This commit is contained in:
parent
649f8c24b1
commit
6339254cb2
|
@ -24,15 +24,21 @@ namespace Catch {
|
||||||
|
|
||||||
inline void addWarning( ConfigData& config, std::string const& _warning ) {
|
inline void addWarning( ConfigData& config, std::string const& _warning ) {
|
||||||
if( _warning == "NoAssertions" )
|
if( _warning == "NoAssertions" )
|
||||||
config.warnings = (ConfigData::WarnAbout::What)( config.warnings | ConfigData::WarnAbout::NoAssertions );
|
config.warnings = (WarnAbout::What)( config.warnings | WarnAbout::NoAssertions );
|
||||||
else
|
else
|
||||||
throw std::runtime_error( "Unrecognised warning: '" + _warning + "'" );
|
throw std::runtime_error( "Unrecognised warning: '" + _warning + "'" );
|
||||||
|
|
||||||
}
|
}
|
||||||
inline void setVerbosity( ConfigData& config, int level ) {
|
inline void setVerbosity( ConfigData& config, int level ) {
|
||||||
// !TBD: accept strings?
|
// !TBD: accept strings?
|
||||||
config.verbosity = (ConfigData::Verbosity::Level)level;
|
config.verbosity = (Verbosity::Level)level;
|
||||||
}
|
}
|
||||||
|
inline void setShowDurations( ConfigData& config, bool _showDurations ) {
|
||||||
|
config.showDurations = _showDurations
|
||||||
|
? ShowDurations::Always
|
||||||
|
: ShowDurations::Never;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline Clara::CommandLine<ConfigData> makeCommandLineParser() {
|
inline Clara::CommandLine<ConfigData> makeCommandLineParser() {
|
||||||
|
|
||||||
|
@ -121,6 +127,12 @@ namespace Catch {
|
||||||
.describe( "which test or tests to use" )
|
.describe( "which test or tests to use" )
|
||||||
.argName( "test name, pattern or tags" );
|
.argName( "test name, pattern or tags" );
|
||||||
|
|
||||||
|
cli.bind( &setShowDurations )
|
||||||
|
.describe( "show test durations" )
|
||||||
|
.shortOpt( "d")
|
||||||
|
.longOpt( "durations" )
|
||||||
|
.argName( "durations" );
|
||||||
|
|
||||||
return cli;
|
return cli;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,17 +26,6 @@ namespace Catch {
|
||||||
|
|
||||||
struct ConfigData {
|
struct ConfigData {
|
||||||
|
|
||||||
struct Verbosity { enum Level {
|
|
||||||
NoOutput = 0,
|
|
||||||
Quiet,
|
|
||||||
Normal
|
|
||||||
}; };
|
|
||||||
|
|
||||||
struct WarnAbout { enum What {
|
|
||||||
Nothing = 0x00,
|
|
||||||
NoAssertions = 0x01
|
|
||||||
}; };
|
|
||||||
|
|
||||||
ConfigData()
|
ConfigData()
|
||||||
: listTests( false ),
|
: listTests( false ),
|
||||||
listTags( false ),
|
listTags( false ),
|
||||||
|
@ -47,7 +36,8 @@ namespace Catch {
|
||||||
showHelp( false ),
|
showHelp( false ),
|
||||||
abortAfter( -1 ),
|
abortAfter( -1 ),
|
||||||
verbosity( Verbosity::Normal ),
|
verbosity( Verbosity::Normal ),
|
||||||
warnings( WarnAbout::Nothing )
|
warnings( WarnAbout::Nothing ),
|
||||||
|
showDurations( ShowDurations::DefaultForReporter )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool listTests;
|
bool listTests;
|
||||||
|
@ -63,6 +53,7 @@ namespace Catch {
|
||||||
|
|
||||||
Verbosity::Level verbosity;
|
Verbosity::Level verbosity;
|
||||||
WarnAbout::What warnings;
|
WarnAbout::What warnings;
|
||||||
|
ShowDurations::OrNot showDurations;
|
||||||
|
|
||||||
std::string reporterName;
|
std::string reporterName;
|
||||||
std::string outputFilename;
|
std::string outputFilename;
|
||||||
|
@ -166,7 +157,9 @@ namespace Catch {
|
||||||
virtual std::ostream& stream() const { return m_os; }
|
virtual std::ostream& stream() const { return m_os; }
|
||||||
virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; }
|
virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; }
|
||||||
virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; }
|
virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; }
|
||||||
virtual bool warnAboutMissingAssertions() const { return m_data.warnings & ConfigData::WarnAbout::NoAssertions; }
|
virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; }
|
||||||
|
virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; }
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ConfigData m_data;
|
ConfigData m_data;
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "catch_text.hpp"
|
#include "catch_text.hpp"
|
||||||
#include "catch_message.hpp"
|
#include "catch_message.hpp"
|
||||||
#include "catch_legacy_reporter_adapter.hpp"
|
#include "catch_legacy_reporter_adapter.hpp"
|
||||||
|
#include "catch_timer.hpp"
|
||||||
|
|
||||||
#include "../reporters/catch_reporter_basic.hpp"
|
#include "../reporters/catch_reporter_basic.hpp"
|
||||||
#include "../reporters/catch_reporter_xml.hpp"
|
#include "../reporters/catch_reporter_xml.hpp"
|
||||||
|
@ -57,7 +58,6 @@ namespace Catch {
|
||||||
TestCaseStats::~TestCaseStats() {}
|
TestCaseStats::~TestCaseStats() {}
|
||||||
TestGroupStats::~TestGroupStats() {}
|
TestGroupStats::~TestGroupStats() {}
|
||||||
TestRunStats::~TestRunStats() {}
|
TestRunStats::~TestRunStats() {}
|
||||||
ThreadedSectionInfo::~ThreadedSectionInfo() {}
|
|
||||||
TestGroupNode::~TestGroupNode() {}
|
TestGroupNode::~TestGroupNode() {}
|
||||||
TestRunNode::~TestRunNode() {}
|
TestRunNode::~TestRunNode() {}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace Catch {
|
||||||
virtual void assertionEnded( AssertionResult const& result ) = 0;
|
virtual void assertionEnded( AssertionResult const& result ) = 0;
|
||||||
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
||||||
Counts& assertions ) = 0;
|
Counts& assertions ) = 0;
|
||||||
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0;
|
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions, double _durationInSeconds ) = 0;
|
||||||
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
|
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
|
||||||
virtual void popScopedMessage( MessageInfo const& message ) = 0;
|
virtual void popScopedMessage( MessageInfo const& message ) = 0;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,23 @@
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
|
struct Verbosity { enum Level {
|
||||||
|
NoOutput = 0,
|
||||||
|
Quiet,
|
||||||
|
Normal
|
||||||
|
}; };
|
||||||
|
|
||||||
|
struct WarnAbout { enum What {
|
||||||
|
Nothing = 0x00,
|
||||||
|
NoAssertions = 0x01
|
||||||
|
}; };
|
||||||
|
|
||||||
|
struct ShowDurations { enum OrNot {
|
||||||
|
DefaultForReporter,
|
||||||
|
Always,
|
||||||
|
Never
|
||||||
|
}; };
|
||||||
|
|
||||||
struct IConfig : IShared {
|
struct IConfig : IShared {
|
||||||
|
|
||||||
virtual ~IConfig();
|
virtual ~IConfig();
|
||||||
|
@ -26,6 +43,7 @@ namespace Catch {
|
||||||
virtual bool shouldDebugBreak() const = 0;
|
virtual bool shouldDebugBreak() const = 0;
|
||||||
virtual bool warnAboutMissingAssertions() const = 0;
|
virtual bool warnAboutMissingAssertions() const = 0;
|
||||||
virtual int abortAfter() const = 0;
|
virtual int abortAfter() const = 0;
|
||||||
|
virtual ShowDurations::OrNot showDurations() const = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,20 @@ namespace Catch
|
||||||
bool shouldRedirectStdOut;
|
bool shouldRedirectStdOut;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct Node : SharedImpl<> {
|
||||||
|
Node( T const& _value, Node* _parent = NULL )
|
||||||
|
: value( _value ),
|
||||||
|
parent( _parent )
|
||||||
|
{}
|
||||||
|
virtual ~Node() {}
|
||||||
|
|
||||||
|
T value;
|
||||||
|
std::vector<Ptr<Node> > children;
|
||||||
|
Node* parent;
|
||||||
|
};
|
||||||
|
|
||||||
struct TestRunInfo {
|
struct TestRunInfo {
|
||||||
TestRunInfo( std::string const& _name ) : name( _name ) {}
|
TestRunInfo( std::string const& _name ) : name( _name ) {}
|
||||||
std::string name;
|
std::string name;
|
||||||
|
@ -78,17 +92,6 @@ namespace Catch
|
||||||
SourceLineInfo lineInfo;
|
SourceLineInfo lineInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ThreadedSectionInfo : SectionInfo, SharedImpl<> {
|
|
||||||
ThreadedSectionInfo( SectionInfo const& _sectionInfo, ThreadedSectionInfo* _parent = NULL )
|
|
||||||
: SectionInfo( _sectionInfo ),
|
|
||||||
parent( _parent )
|
|
||||||
{}
|
|
||||||
virtual ~ThreadedSectionInfo();
|
|
||||||
|
|
||||||
std::vector<Ptr<ThreadedSectionInfo> > children;
|
|
||||||
ThreadedSectionInfo* parent;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct AssertionStats {
|
struct AssertionStats {
|
||||||
AssertionStats( AssertionResult const& _assertionResult,
|
AssertionStats( AssertionResult const& _assertionResult,
|
||||||
std::vector<MessageInfo> const& _infoMessages,
|
std::vector<MessageInfo> const& _infoMessages,
|
||||||
|
@ -117,15 +120,18 @@ namespace Catch
|
||||||
struct SectionStats {
|
struct SectionStats {
|
||||||
SectionStats( SectionInfo const& _sectionInfo,
|
SectionStats( SectionInfo const& _sectionInfo,
|
||||||
Counts const& _assertions,
|
Counts const& _assertions,
|
||||||
|
double _durationInSeconds,
|
||||||
bool _missingAssertions )
|
bool _missingAssertions )
|
||||||
: sectionInfo( _sectionInfo ),
|
: sectionInfo( _sectionInfo ),
|
||||||
assertions( _assertions ),
|
assertions( _assertions ),
|
||||||
|
durationInSeconds( _durationInSeconds ),
|
||||||
missingAssertions( _missingAssertions )
|
missingAssertions( _missingAssertions )
|
||||||
{}
|
{}
|
||||||
virtual ~SectionStats();
|
virtual ~SectionStats();
|
||||||
|
|
||||||
SectionInfo sectionInfo;
|
SectionInfo sectionInfo;
|
||||||
Counts assertions;
|
Counts assertions;
|
||||||
|
double durationInSeconds;
|
||||||
bool missingAssertions;
|
bool missingAssertions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -189,6 +195,7 @@ namespace Catch
|
||||||
bool aborting;
|
bool aborting;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct IStreamingReporter : IShared {
|
struct IStreamingReporter : IShared {
|
||||||
virtual ~IStreamingReporter();
|
virtual ~IStreamingReporter();
|
||||||
|
|
||||||
|
@ -236,7 +243,7 @@ namespace Catch
|
||||||
unusedTestCaseInfo = _testInfo;
|
unusedTestCaseInfo = _testInfo;
|
||||||
}
|
}
|
||||||
virtual void sectionStarting( SectionInfo const& _sectionInfo ) {
|
virtual void sectionStarting( SectionInfo const& _sectionInfo ) {
|
||||||
Ptr<ThreadedSectionInfo> sectionInfo = new ThreadedSectionInfo( _sectionInfo );
|
Ptr<Node<SectionInfo> > sectionInfo = new Node<SectionInfo>( _sectionInfo );
|
||||||
if( !currentSectionInfo ) {
|
if( !currentSectionInfo ) {
|
||||||
currentSectionInfo = sectionInfo;
|
currentSectionInfo = sectionInfo;
|
||||||
m_rootSections.push_back( currentSectionInfo );
|
m_rootSections.push_back( currentSectionInfo );
|
||||||
|
@ -268,11 +275,11 @@ namespace Catch
|
||||||
Option<TestRunInfo> testRunInfo;
|
Option<TestRunInfo> testRunInfo;
|
||||||
Option<GroupInfo> unusedGroupInfo;
|
Option<GroupInfo> unusedGroupInfo;
|
||||||
Option<TestCaseInfo> unusedTestCaseInfo;
|
Option<TestCaseInfo> unusedTestCaseInfo;
|
||||||
Ptr<ThreadedSectionInfo> currentSectionInfo;
|
Ptr<Node<SectionInfo> > currentSectionInfo;
|
||||||
std::ostream& stream;
|
std::ostream& stream;
|
||||||
|
|
||||||
// !TBD: This should really go in the TestCaseStats class
|
// !TBD: This should really go in the TestCaseStats class
|
||||||
std::vector<Ptr<ThreadedSectionInfo> > m_rootSections;
|
std::vector<Ptr<Node<SectionInfo> > > m_rootSections;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TestGroupNode : TestGroupStats {
|
struct TestGroupNode : TestGroupStats {
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "catch_totals.hpp"
|
#include "catch_totals.hpp"
|
||||||
#include "catch_test_spec.h"
|
#include "catch_test_spec.h"
|
||||||
#include "catch_test_case_tracker.hpp"
|
#include "catch_test_case_tracker.hpp"
|
||||||
|
#include "catch_timer.h"
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -194,9 +195,9 @@ namespace Catch {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void sectionEnded( SectionInfo const& info, Counts const& prevAssertions ) {
|
virtual void sectionEnded( SectionInfo const& info, Counts const& prevAssertions, double _durationInSeconds ) {
|
||||||
if( std::uncaught_exception() ) {
|
if( std::uncaught_exception() ) {
|
||||||
m_unfinishedSections.push_back( UnfinishedSections( info, prevAssertions ) );
|
m_unfinishedSections.push_back( UnfinishedSections( info, prevAssertions, _durationInSeconds ) );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@ namespace Catch {
|
||||||
|
|
||||||
m_testCaseTracker->leaveSection();
|
m_testCaseTracker->leaveSection();
|
||||||
|
|
||||||
m_reporter->sectionEnded( SectionStats( info, assertions, missingAssertions ) );
|
m_reporter->sectionEnded( SectionStats( info, assertions, _durationInSeconds, missingAssertions ) );
|
||||||
m_messages.clear();
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,10 +261,13 @@ namespace Catch {
|
||||||
SectionInfo testCaseSection( testCaseInfo.name, testCaseInfo.description, testCaseInfo.lineInfo );
|
SectionInfo testCaseSection( testCaseInfo.name, testCaseInfo.description, testCaseInfo.lineInfo );
|
||||||
m_reporter->sectionStarting( testCaseSection );
|
m_reporter->sectionStarting( testCaseSection );
|
||||||
Counts prevAssertions = m_totals.assertions;
|
Counts prevAssertions = m_totals.assertions;
|
||||||
|
double duration = 0;
|
||||||
try {
|
try {
|
||||||
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal );
|
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal );
|
||||||
TestCaseTracker::Guard guard( *m_testCaseTracker );
|
TestCaseTracker::Guard guard( *m_testCaseTracker );
|
||||||
|
|
||||||
|
Timer timer;
|
||||||
|
timer.start();
|
||||||
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
||||||
StreamRedirect coutRedir( std::cout, redirectedCout );
|
StreamRedirect coutRedir( std::cout, redirectedCout );
|
||||||
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
||||||
|
@ -272,6 +276,7 @@ namespace Catch {
|
||||||
else {
|
else {
|
||||||
m_activeTestCase->invoke();
|
m_activeTestCase->invoke();
|
||||||
}
|
}
|
||||||
|
duration = timer.getElapsedSeconds();
|
||||||
}
|
}
|
||||||
catch( TestFailureException& ) {
|
catch( TestFailureException& ) {
|
||||||
// This just means the test was aborted due to failure
|
// This just means the test was aborted due to failure
|
||||||
|
@ -287,25 +292,26 @@ namespace Catch {
|
||||||
itEnd = m_unfinishedSections.end();
|
itEnd = m_unfinishedSections.end();
|
||||||
it != itEnd;
|
it != itEnd;
|
||||||
++it )
|
++it )
|
||||||
sectionEnded( it->info, it->prevAssertions );
|
sectionEnded( it->info, it->prevAssertions, it->durationInSeconds );
|
||||||
m_unfinishedSections.clear();
|
m_unfinishedSections.clear();
|
||||||
m_messages.clear();
|
m_messages.clear();
|
||||||
|
|
||||||
Counts assertions = m_totals.assertions - prevAssertions;
|
Counts assertions = m_totals.assertions - prevAssertions;
|
||||||
bool missingAssertions = testForMissingAssertions( assertions );
|
bool missingAssertions = testForMissingAssertions( assertions );
|
||||||
|
|
||||||
SectionStats testCaseSectionStats( testCaseSection, assertions, missingAssertions );
|
SectionStats testCaseSectionStats( testCaseSection, assertions, duration, missingAssertions );
|
||||||
m_reporter->sectionEnded( testCaseSectionStats );
|
m_reporter->sectionEnded( testCaseSectionStats );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct UnfinishedSections {
|
struct UnfinishedSections {
|
||||||
UnfinishedSections( SectionInfo const& _info, Counts const& _prevAssertions )
|
UnfinishedSections( SectionInfo const& _info, Counts const& _prevAssertions, double _durationInSeconds )
|
||||||
: info( _info ), prevAssertions( _prevAssertions )
|
: info( _info ), prevAssertions( _prevAssertions ), durationInSeconds( _durationInSeconds )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SectionInfo info;
|
SectionInfo info;
|
||||||
Counts prevAssertions;
|
Counts prevAssertions;
|
||||||
|
double durationInSeconds;
|
||||||
};
|
};
|
||||||
|
|
||||||
TestRunInfo m_runInfo;
|
TestRunInfo m_runInfo;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "catch_capture.hpp"
|
#include "catch_capture.hpp"
|
||||||
#include "catch_totals.hpp"
|
#include "catch_totals.hpp"
|
||||||
#include "catch_compiler_capabilities.h"
|
#include "catch_compiler_capabilities.h"
|
||||||
|
#include "catch_timer.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
@ -23,11 +24,13 @@ namespace Catch {
|
||||||
std::string const& description = "" )
|
std::string const& description = "" )
|
||||||
: m_info( name, description, lineInfo ),
|
: m_info( name, description, lineInfo ),
|
||||||
m_sectionIncluded( getCurrentContext().getResultCapture().sectionStarted( m_info, m_assertions ) )
|
m_sectionIncluded( getCurrentContext().getResultCapture().sectionStarted( m_info, m_assertions ) )
|
||||||
{}
|
{
|
||||||
|
m_timer.start();
|
||||||
|
}
|
||||||
|
|
||||||
~Section() {
|
~Section() {
|
||||||
if( m_sectionIncluded )
|
if( m_sectionIncluded )
|
||||||
getCurrentContext().getResultCapture().sectionEnded( m_info, m_assertions );
|
getCurrentContext().getResultCapture().sectionEnded( m_info, m_assertions, m_timer.getElapsedSeconds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// This indicates whether the section should be executed or not
|
// This indicates whether the section should be executed or not
|
||||||
|
@ -41,6 +44,7 @@ namespace Catch {
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
Counts m_assertions;
|
Counts m_assertions;
|
||||||
bool m_sectionIncluded;
|
bool m_sectionIncluded;
|
||||||
|
Timer m_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* Created by Phil on 05/08/2013.
|
||||||
|
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
#ifndef TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
typedef unsigned long long uint64_t;
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
class Timer {
|
||||||
|
public:
|
||||||
|
Timer() : m_ticks( 0 ) {}
|
||||||
|
void start();
|
||||||
|
unsigned int getElapsedNanoseconds() const;
|
||||||
|
unsigned int getElapsedMilliseconds() const;
|
||||||
|
double getElapsedSeconds() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint64_t m_ticks;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
* Created by Phil on 05/08/2013.
|
||||||
|
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "catch_timer.h"
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wc++11-long-long"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
#include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
#ifdef WIN32
|
||||||
|
uint64_t getCurrentTicks() {
|
||||||
|
static uint64_t hz=0, hzo=0;
|
||||||
|
if (!hz) {
|
||||||
|
QueryPerformanceFrequency((LARGE_INTEGER*)&hz);
|
||||||
|
QueryPerformanceCounter((LARGE_INTEGER*)&hzo);
|
||||||
|
}
|
||||||
|
uint64_t t;
|
||||||
|
QueryPerformanceCounter((LARGE_INTEGER*)&t);
|
||||||
|
return ((t-hzo)*1000000)/hz;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
uint64_t getCurrentTicks() {
|
||||||
|
timeval t;
|
||||||
|
gettimeofday(&t,NULL);
|
||||||
|
return (uint64_t)t.tv_sec * 1000000ull + (uint64_t)t.tv_usec;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Timer::start() {
|
||||||
|
m_ticks = getCurrentTicks();
|
||||||
|
}
|
||||||
|
unsigned int Timer::getElapsedNanoseconds() const {
|
||||||
|
return (unsigned int)(getCurrentTicks() - m_ticks);
|
||||||
|
}
|
||||||
|
unsigned int Timer::getElapsedMilliseconds() const {
|
||||||
|
return (unsigned int)((getCurrentTicks() - m_ticks)/1000);
|
||||||
|
}
|
||||||
|
double Timer::getElapsedSeconds() const {
|
||||||
|
return (getCurrentTicks() - m_ticks)/1000000.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Catch
|
||||||
|
|
||||||
|
#ifdef __clang__
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
#endif
|
|
@ -69,6 +69,8 @@ namespace Catch {
|
||||||
stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl;
|
stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl;
|
||||||
}
|
}
|
||||||
m_headerPrinted = false;
|
m_headerPrinted = false;
|
||||||
|
if( m_config->showDurations() == ShowDurations::Always )
|
||||||
|
stream << "Completed in " << _sectionStats.durationInSeconds << "s" << std::endl;
|
||||||
StreamingReporterBase::sectionEnded( _sectionStats );
|
StreamingReporterBase::sectionEnded( _sectionStats );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,20 +265,20 @@ namespace Catch {
|
||||||
assert( currentSectionInfo );
|
assert( currentSectionInfo );
|
||||||
if( currentSectionInfo ) {
|
if( currentSectionInfo ) {
|
||||||
Colour colourGuard( Colour::Headers );
|
Colour colourGuard( Colour::Headers );
|
||||||
std::vector<ThreadedSectionInfo*> sections;
|
std::vector<Node<SectionInfo>*> sections;
|
||||||
for( ThreadedSectionInfo* section = currentSectionInfo.get();
|
for( Node<SectionInfo>* section = currentSectionInfo.get();
|
||||||
section;
|
section;
|
||||||
section = section->parent )
|
section = section->parent )
|
||||||
sections.push_back( section );
|
sections.push_back( section );
|
||||||
|
|
||||||
// Sections
|
// Sections
|
||||||
std::vector<ThreadedSectionInfo*>::const_reverse_iterator
|
std::vector<Node<SectionInfo>*>::const_reverse_iterator
|
||||||
it = sections.rbegin(), itEnd = sections.rend();
|
it = sections.rbegin(), itEnd = sections.rend();
|
||||||
for( ++it; it != itEnd; ++it ) // Skip first section (test case)
|
for( ++it; it != itEnd; ++it ) // Skip first section (test case)
|
||||||
printHeaderString( (*it)->name, 2 );
|
printHeaderString( (*it)->value.name, 2 );
|
||||||
}
|
}
|
||||||
SourceLineInfo lineInfo = currentSectionInfo
|
SourceLineInfo lineInfo = currentSectionInfo
|
||||||
? currentSectionInfo->lineInfo
|
? currentSectionInfo->value.lineInfo
|
||||||
: unusedTestCaseInfo->lineInfo;
|
: unusedTestCaseInfo->lineInfo;
|
||||||
|
|
||||||
if( !lineInfo.empty() ){
|
if( !lineInfo.empty() ){
|
||||||
|
|
|
@ -82,7 +82,7 @@ namespace Catch {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void StartTesting(){}
|
virtual void StartTesting() {}
|
||||||
|
|
||||||
virtual void StartGroup( const std::string& groupName ) {
|
virtual void StartGroup( const std::string& groupName ) {
|
||||||
if( groupName.empty() )
|
if( groupName.empty() )
|
||||||
|
@ -189,7 +189,10 @@ namespace Catch {
|
||||||
xml.writeAttribute( "failures", it->m_failuresCount );
|
xml.writeAttribute( "failures", it->m_failuresCount );
|
||||||
xml.writeAttribute( "tests", it->m_testsCount );
|
xml.writeAttribute( "tests", it->m_testsCount );
|
||||||
xml.writeAttribute( "hostname", "tbd" );
|
xml.writeAttribute( "hostname", "tbd" );
|
||||||
xml.writeAttribute( "time", "tbd" );
|
if( m_config.fullConfig()->showDurations() == ShowDurations::Never )
|
||||||
|
xml.writeAttribute( "time", it->m_timeInSeconds );
|
||||||
|
else
|
||||||
|
xml.writeAttribute( "time", "" );
|
||||||
xml.writeAttribute( "timestamp", "tbd" );
|
xml.writeAttribute( "timestamp", "tbd" );
|
||||||
|
|
||||||
OutputTestCases( xml, *it );
|
OutputTestCases( xml, *it );
|
||||||
|
@ -207,7 +210,10 @@ namespace Catch {
|
||||||
XmlWriter::ScopedElement e = xml.scopedElement( "testcase" );
|
XmlWriter::ScopedElement e = xml.scopedElement( "testcase" );
|
||||||
xml.writeAttribute( "classname", it->m_className );
|
xml.writeAttribute( "classname", it->m_className );
|
||||||
xml.writeAttribute( "name", it->m_name );
|
xml.writeAttribute( "name", it->m_name );
|
||||||
xml.writeAttribute( "time", "tbd" );
|
if( m_config.fullConfig()->showDurations() == ShowDurations::Never )
|
||||||
|
xml.writeAttribute( "time", "" );
|
||||||
|
else
|
||||||
|
xml.writeAttribute( "time", stats.m_timeInSeconds );
|
||||||
|
|
||||||
OutputTestResult( xml, *it );
|
OutputTestResult( xml, *it );
|
||||||
|
|
||||||
|
|
|
@ -670,6 +670,8 @@ MiscTests.cpp: FAILED:
|
||||||
explicitly with message:
|
explicitly with message:
|
||||||
to infinity and beyond
|
to infinity and beyond
|
||||||
|
|
||||||
|
starting...
|
||||||
|
finished in 0.322593
|
||||||
Message from section one
|
Message from section one
|
||||||
Message from section two
|
Message from section two
|
||||||
Some information
|
Some information
|
||||||
|
@ -708,7 +710,7 @@ with expansion:
|
||||||
"first" == "second"
|
"first" == "second"
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
121 test cases - 35 failed (737 assertions - 90 failed)
|
122 test cases - 35 failed (738 assertions - 90 failed)
|
||||||
|
|
||||||
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -4316,6 +4318,19 @@ MiscTests.cpp: FAILED:
|
||||||
explicitly with message:
|
explicitly with message:
|
||||||
to infinity and beyond
|
to infinity and beyond
|
||||||
|
|
||||||
|
starting...
|
||||||
|
finished in 0.323247
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Timer
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
MiscTests.cpp
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
MiscTests.cpp:
|
||||||
|
PASSED:
|
||||||
|
with message:
|
||||||
|
yay
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
selftest/main
|
selftest/main
|
||||||
selftest/expected result
|
selftest/expected result
|
||||||
|
@ -7169,34 +7184,34 @@ with expansion:
|
||||||
true
|
true
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
121 test cases - 50 failed (756 assertions - 109 failed)
|
122 test cases - 50 failed (757 assertions - 109 failed)
|
||||||
|
|
||||||
No test cases matched '~dummy 4'
|
No test cases matched '~dummy 4'
|
||||||
No tests ran
|
No tests ran
|
||||||
|
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="~dummy" errors="10" failures="81" tests="756" hostname="tbd" time="tbd" timestamp="tbd">
|
<testsuite name="~dummy" errors="10" failures="81" tests="757" hostname="tbd" time="" timestamp="tbd">
|
||||||
<testcase classname="global" name="./succeeding/Approx/simple" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/simple" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/epsilon" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/epsilon" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/float" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/float" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/int" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/int" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/mixed" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/mixed" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/custom" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/custom" time="0"/>
|
||||||
<testcase classname="global" name="Approximate PI" time="tbd"/>
|
<testcase classname="global" name="Approximate PI" time="0"/>
|
||||||
<testcase classname="TestClass" name="./succeeding/TestClass/succeedingCase" time="tbd"/>
|
<testcase classname="TestClass" name="./succeeding/TestClass/succeedingCase" time="0"/>
|
||||||
<testcase classname="TestClass" name="./failing/TestClass/failingCase" time="tbd">
|
<testcase classname="TestClass" name="./failing/TestClass/failingCase" time="0">
|
||||||
<failure message=""hello" == "world"" type="REQUIRE">
|
<failure message=""hello" == "world"" type="REQUIRE">
|
||||||
ClassTests.cpp
|
ClassTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Fixture" name="./succeeding/Fixture/succeedingCase" time="tbd"/>
|
<testcase classname="Fixture" name="./succeeding/Fixture/succeedingCase" time="0"/>
|
||||||
<testcase classname="Fixture" name="./failing/Fixture/failingCase" time="tbd">
|
<testcase classname="Fixture" name="./failing/Fixture/failingCase" time="0">
|
||||||
<failure message="1 == 2" type="REQUIRE">
|
<failure message="1 == 2" type="REQUIRE">
|
||||||
ClassTests.cpp
|
ClassTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/conditions/equality" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/equality" time="0"/>
|
||||||
<testcase classname="global" name="./failing/conditions/equality" time="tbd">
|
<testcase classname="global" name="./failing/conditions/equality" time="0">
|
||||||
<failure message="7 == 6" type="CHECK">
|
<failure message="7 == 6" type="CHECK">
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7237,8 +7252,8 @@ ConditionTests.cpp
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/conditions/inequality" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/inequality" time="0"/>
|
||||||
<testcase classname="global" name="./failing/conditions/inequality" time="tbd">
|
<testcase classname="global" name="./failing/conditions/inequality" time="0">
|
||||||
<failure message="7 != 7" type="CHECK">
|
<failure message="7 != 7" type="CHECK">
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7255,8 +7270,8 @@ ConditionTests.cpp
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/conditions/ordered" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/ordered" time="0"/>
|
||||||
<testcase classname="global" name="./failing/conditions/ordered" time="tbd">
|
<testcase classname="global" name="./failing/conditions/ordered" time="0">
|
||||||
<failure message="7 > 7" type="CHECK">
|
<failure message="7 > 7" type="CHECK">
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7315,14 +7330,14 @@ ConditionTests.cpp
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/conditions/int literals" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/int literals" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions//long_to_unsigned_x" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions//long_to_unsigned_x" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions/const ints to int literal" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/const ints to int literal" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions/negative ints" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/negative ints" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions/computed ints" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/computed ints" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions/ptr" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/ptr" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/conditions/not" time="tbd"/>
|
<testcase classname="global" name="./succeeding/conditions/not" time="0"/>
|
||||||
<testcase classname="global" name="./failing/conditions/not" time="tbd">
|
<testcase classname="global" name="./failing/conditions/not" time="0">
|
||||||
<failure message="false != false" type="CHECK">
|
<failure message="false != false" type="CHECK">
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7348,8 +7363,8 @@ ConditionTests.cpp
|
||||||
ConditionTests.cpp
|
ConditionTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/exceptions/explicit" time="tbd"/>
|
<testcase classname="global" name="./succeeding/exceptions/explicit" time="0"/>
|
||||||
<testcase classname="global" name="./failing/exceptions/explicit" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/explicit" time="0">
|
||||||
<error message="thisThrows()" type="CHECK_THROWS_AS">
|
<error message="thisThrows()" type="CHECK_THROWS_AS">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
|
@ -7360,51 +7375,51 @@ ExceptionTests.cpp
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/implicit" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/implicit" time="0">
|
||||||
<error type="TEST_CASE">
|
<error type="TEST_CASE">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/implicit/2" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/implicit/2" time="0">
|
||||||
<error message="{Unknown expression after the reported line}">
|
<error message="{Unknown expression after the reported line}">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/implicit/3" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/implicit/3" time="0">
|
||||||
<error type="TEST_CASE">
|
<error type="TEST_CASE">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/implicit/4" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/implicit/4" time="0">
|
||||||
<error message="thisThrows() == 0" type="CHECK">
|
<error message="thisThrows() == 0" type="CHECK">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/exceptions/implicit" time="tbd"/>
|
<testcase classname="global" name="./succeeding/exceptions/implicit" time="0"/>
|
||||||
<testcase classname="global" name="./failing/exceptions/custom" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/custom" time="0">
|
||||||
<error type="TEST_CASE">
|
<error type="TEST_CASE">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/custom/nothrow" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/custom/nothrow" time="0">
|
||||||
<error message="throwCustom()" type="REQUIRE_NOTHROW">
|
<error message="throwCustom()" type="REQUIRE_NOTHROW">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/custom/throw" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/custom/throw" time="0">
|
||||||
<error message="throwCustom()" type="REQUIRE_THROWS_AS">
|
<error message="throwCustom()" type="REQUIRE_THROWS_AS">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/custom/double" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/custom/double" time="0">
|
||||||
<error type="TEST_CASE">
|
<error type="TEST_CASE">
|
||||||
ExceptionTests.cpp
|
ExceptionTests.cpp
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/exceptions/notimplemented" time="tbd"/>
|
<testcase classname="global" name="./succeeding/exceptions/notimplemented" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/generators/1" time="tbd"/>
|
<testcase classname="global" name="./succeeding/generators/1" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/generators/2" time="tbd"/>
|
<testcase classname="global" name="./succeeding/generators/2" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/message" time="tbd">
|
<testcase classname="global" name="./succeeding/message" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7412,8 +7427,8 @@ MessageTests.cpp
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</warning>
|
</warning>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/succeed" time="tbd"/>
|
<testcase classname="global" name="./succeeding/succeed" time="0"/>
|
||||||
<testcase classname="global" name="./failing/message/info/1" time="tbd">
|
<testcase classname="global" name="./failing/message/info/1" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7424,7 +7439,7 @@ MessageTests.cpp
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/message/info/2" time="tbd">
|
<testcase classname="global" name="./mixed/message/info/2" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7438,12 +7453,12 @@ MessageTests.cpp
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/message/fail" time="tbd">
|
<testcase classname="global" name="./failing/message/fail" time="0">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/message/sections" time="tbd">
|
<testcase classname="global" name="./failing/message/sections" time="0">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7451,13 +7466,13 @@ MessageTests.cpp
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/message/sections/stdout" time="tbd">
|
<testcase classname="global" name="./succeeding/message/sections/stdout" time="0">
|
||||||
<system-out>
|
<system-out>
|
||||||
Message from section one
|
Message from section one
|
||||||
Message from section two
|
Message from section two
|
||||||
</system-out>
|
</system-out>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/message/scoped" time="tbd">
|
<testcase classname="global" name="./mixed/message/scoped" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7468,31 +7483,31 @@ MessageTests.cpp
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/nofail" time="tbd">
|
<testcase classname="global" name="./succeeding/nofail" time="0">
|
||||||
<failure message="1 == 2" type="CHECK_NOFAIL">
|
<failure message="1 == 2" type="CHECK_NOFAIL">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="just info" time="tbd"/>
|
<testcase classname="global" name="just info" time="0"/>
|
||||||
<testcase classname="global" name="just failure" time="tbd">
|
<testcase classname="global" name="just failure" time="0">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
MessageTests.cpp
|
MessageTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/Misc/Sections" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/Sections" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Misc/Sections/nested" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/Sections/nested" time="0"/>
|
||||||
<testcase classname="global" name="./mixed/Misc/Sections/nested2" time="tbd">
|
<testcase classname="global" name="./mixed/Misc/Sections/nested2" time="0">
|
||||||
<failure message="1 == 2" type="REQUIRE">
|
<failure message="1 == 2" type="REQUIRE">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./Sections/nested/a/b" time="tbd"/>
|
<testcase classname="global" name="./Sections/nested/a/b" time="0"/>
|
||||||
<testcase classname="global" name="./mixed/Misc/Sections/loops" time="tbd">
|
<testcase classname="global" name="./mixed/Misc/Sections/loops" time="0">
|
||||||
<failure message="0 > 1" type="CHECK">
|
<failure message="0 > 1" type="CHECK">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/Misc/loops" time="tbd">
|
<testcase classname="global" name="./mixed/Misc/loops" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7530,7 +7545,7 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/Misc/stdout,stderr" time="tbd">
|
<testcase classname="global" name="./succeeding/Misc/stdout,stderr" time="0">
|
||||||
<system-out>
|
<system-out>
|
||||||
Some information
|
Some information
|
||||||
</system-out>
|
</system-out>
|
||||||
|
@ -7538,8 +7553,8 @@ Some information
|
||||||
An error
|
An error
|
||||||
</system-err>
|
</system-err>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/Misc/null strings" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/null strings" time="0"/>
|
||||||
<testcase classname="global" name="./failing/info" time="tbd">
|
<testcase classname="global" name="./failing/info" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7550,8 +7565,8 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/checkedif" time="tbd"/>
|
<testcase classname="global" name="./succeeding/checkedif" time="0"/>
|
||||||
<testcase classname="global" name="./failing/checkedif" time="tbd">
|
<testcase classname="global" name="./failing/checkedif" time="0">
|
||||||
<failure message="false" type="CHECKED_IF">
|
<failure message="false" type="CHECKED_IF">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7559,8 +7574,8 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/checkedelse" time="tbd"/>
|
<testcase classname="global" name="./succeeding/checkedelse" time="0"/>
|
||||||
<testcase classname="global" name="./failing/checkedelse" time="tbd">
|
<testcase classname="global" name="./failing/checkedelse" time="0">
|
||||||
<failure message="false" type="CHECKED_ELSE">
|
<failure message="false" type="CHECKED_ELSE">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7568,8 +7583,8 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./misc/xmlentitycheck" time="tbd"/>
|
<testcase classname="global" name="./misc/xmlentitycheck" time="0"/>
|
||||||
<testcase classname="global" name="./manual/onechar" time="tbd">
|
<testcase classname="global" name="./manual/onechar" time="0">
|
||||||
<info type="INFO">
|
<info type="INFO">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</info>
|
</info>
|
||||||
|
@ -7577,43 +7592,43 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/atomic if" time="tbd"/>
|
<testcase classname="global" name="./succeeding/atomic if" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/matchers" time="tbd"/>
|
<testcase classname="global" name="./succeeding/matchers" time="0"/>
|
||||||
<testcase classname="global" name="./failing/matchers/Contains" time="tbd">
|
<testcase classname="global" name="./failing/matchers/Contains" time="0">
|
||||||
<failure message=""this string contains 'abc' as a substring" contains: "not there"" type="CHECK_THAT">
|
<failure message=""this string contains 'abc' as a substring" contains: "not there"" type="CHECK_THAT">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/matchers/StartsWith" time="tbd">
|
<testcase classname="global" name="./failing/matchers/StartsWith" time="0">
|
||||||
<failure message=""this string contains 'abc' as a substring" starts with: "string"" type="CHECK_THAT">
|
<failure message=""this string contains 'abc' as a substring" starts with: "string"" type="CHECK_THAT">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/matchers/EndsWith" time="tbd">
|
<testcase classname="global" name="./failing/matchers/EndsWith" time="0">
|
||||||
<failure message=""this string contains 'abc' as a substring" ends with: "this"" type="CHECK_THAT">
|
<failure message=""this string contains 'abc' as a substring" ends with: "this"" type="CHECK_THAT">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/matchers/Equals" time="tbd">
|
<testcase classname="global" name="./failing/matchers/Equals" time="0">
|
||||||
<failure message=""this string contains 'abc' as a substring" equals: "something else"" type="CHECK_THAT">
|
<failure message=""this string contains 'abc' as a substring" equals: "something else"" type="CHECK_THAT">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="string" time="tbd"/>
|
<testcase classname="global" name="string" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/matchers/AllOf" time="tbd"/>
|
<testcase classname="global" name="./succeeding/matchers/AllOf" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/matchers/AnyOf" time="tbd"/>
|
<testcase classname="global" name="./succeeding/matchers/AnyOf" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/matchers/Equals" time="tbd"/>
|
<testcase classname="global" name="./succeeding/matchers/Equals" time="0"/>
|
||||||
<testcase classname="global" name="Factorials are computed" time="tbd"/>
|
<testcase classname="global" name="Factorials are computed" time="0"/>
|
||||||
<testcase classname="global" name="empty" time="tbd"/>
|
<testcase classname="global" name="empty" time="0"/>
|
||||||
<testcase classname="global" name="Nice descriptive name" time="tbd">
|
<testcase classname="global" name="Nice descriptive name" time="0">
|
||||||
<warning type="WARN">
|
<warning type="WARN">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</warning>
|
</warning>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="first tag" time="tbd"/>
|
<testcase classname="global" name="first tag" time="0"/>
|
||||||
<testcase classname="global" name="second tag" time="tbd"/>
|
<testcase classname="global" name="second tag" time="0"/>
|
||||||
<testcase classname="global" name="vectors can be sized and resized" time="tbd"/>
|
<testcase classname="global" name="vectors can be sized and resized" time="0"/>
|
||||||
<testcase classname="global" name="./failing/CatchSectionInfiniteLoop" time="tbd">
|
<testcase classname="global" name="./failing/CatchSectionInfiniteLoop" time="0">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7624,7 +7639,13 @@ MiscTests.cpp
|
||||||
MiscTests.cpp
|
MiscTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="selftest/main" time="tbd">
|
<testcase classname="global" name="Timer" time="0">
|
||||||
|
<system-out>
|
||||||
|
starting...
|
||||||
|
finished in 0.322247
|
||||||
|
</system-out>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="global" name="selftest/main" time="0">
|
||||||
<system-out>
|
<system-out>
|
||||||
Message from section one
|
Message from section one
|
||||||
Message from section two
|
Message from section two
|
||||||
|
@ -7638,33 +7659,33 @@ An error
|
||||||
An error
|
An error
|
||||||
</system-err>
|
</system-err>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="meta/Misc/Sections" time="tbd"/>
|
<testcase classname="global" name="meta/Misc/Sections" time="0"/>
|
||||||
<testcase classname="global" name="Process can be configured on command line" time="tbd"/>
|
<testcase classname="global" name="Process can be configured on command line" time="0"/>
|
||||||
<testcase classname="global" name="selftest/test filter" time="tbd"/>
|
<testcase classname="global" name="selftest/test filter" time="0"/>
|
||||||
<testcase classname="global" name="selftest/test filters" time="tbd"/>
|
<testcase classname="global" name="selftest/test filters" time="0"/>
|
||||||
<testcase classname="global" name="selftest/filter/prefix wildcard" time="tbd"/>
|
<testcase classname="global" name="selftest/filter/prefix wildcard" time="0"/>
|
||||||
<testcase classname="global" name="selftest/filter/wildcard at both ends" time="tbd"/>
|
<testcase classname="global" name="selftest/filter/wildcard at both ends" time="0"/>
|
||||||
<testcase classname="global" name="selftest/tags" time="tbd"/>
|
<testcase classname="global" name="selftest/tags" time="0"/>
|
||||||
<testcase classname="global" name="Long strings can be wrapped" time="tbd"/>
|
<testcase classname="global" name="Long strings can be wrapped" time="0"/>
|
||||||
<testcase classname="global" name="Strings can be rendered with colour" time="tbd">
|
<testcase classname="global" name="Strings can be rendered with colour" time="0">
|
||||||
<system-out>
|
<system-out>
|
||||||
hello
|
hello
|
||||||
hello
|
hello
|
||||||
</system-out>
|
</system-out>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="Text can be formatted using the Text class" time="tbd"/>
|
<testcase classname="global" name="Text can be formatted using the Text class" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/Tricky/std::pair" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Tricky/std::pair" time="0"/>
|
||||||
<testcase classname="global" name="./inprogress/failing/Tricky/trailing expression" time="tbd">
|
<testcase classname="global" name="./inprogress/failing/Tricky/trailing expression" time="0">
|
||||||
<warning type="WARN">
|
<warning type="WARN">
|
||||||
TrickyTests.cpp
|
TrickyTests.cpp
|
||||||
</warning>
|
</warning>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./inprogress/failing/Tricky/compound lhs" time="tbd">
|
<testcase classname="global" name="./inprogress/failing/Tricky/compound lhs" time="0">
|
||||||
<warning type="WARN">
|
<warning type="WARN">
|
||||||
TrickyTests.cpp
|
TrickyTests.cpp
|
||||||
</warning>
|
</warning>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/Tricky/non streamable type" time="tbd">
|
<testcase classname="global" name="./failing/Tricky/non streamable type" time="0">
|
||||||
<failure message="0x<hex digits> == 0x<hex digits>" type="CHECK">
|
<failure message="0x<hex digits> == 0x<hex digits>" type="CHECK">
|
||||||
TrickyTests.cpp
|
TrickyTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
|
@ -7672,34 +7693,34 @@ TrickyTests.cpp
|
||||||
TrickyTests.cpp
|
TrickyTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/string literals" time="tbd">
|
<testcase classname="global" name="./failing/string literals" time="0">
|
||||||
<failure message=""first" == "second"" type="REQUIRE">
|
<failure message=""first" == "second"" type="REQUIRE">
|
||||||
TrickyTests.cpp
|
TrickyTests.cpp
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/side-effects" time="tbd"/>
|
<testcase classname="global" name="./succeeding/side-effects" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/koenig" time="tbd"/>
|
<testcase classname="global" name="./succeeding/koenig" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/non-const==" time="tbd"/>
|
<testcase classname="global" name="./succeeding/non-const==" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/enum/bits" time="tbd"/>
|
<testcase classname="global" name="./succeeding/enum/bits" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/boolean member" time="tbd"/>
|
<testcase classname="global" name="./succeeding/boolean member" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/unimplemented static bool" time="tbd"/>
|
<testcase classname="global" name="./succeeding/unimplemented static bool" time="0"/>
|
||||||
<testcase classname="global" name="./succeeding/SafeBool" time="tbd"/>
|
<testcase classname="global" name="./succeeding/SafeBool" time="0"/>
|
||||||
<testcase classname="global" name="Assertions then sections" time="tbd"/>
|
<testcase classname="global" name="Assertions then sections" time="0"/>
|
||||||
<testcase classname="global" name="non streamable - with conv. op" time="tbd"/>
|
<testcase classname="global" name="non streamable - with conv. op" time="0"/>
|
||||||
<testcase classname="global" name="Comparing function pointers" time="tbd"/>
|
<testcase classname="global" name="Comparing function pointers" time="0"/>
|
||||||
<testcase classname="global" name="pointer to class" time="tbd"/>
|
<testcase classname="global" name="pointer to class" time="0"/>
|
||||||
<testcase classname="global" name="X/level/0/a" time="tbd"/>
|
<testcase classname="global" name="X/level/0/a" time="0"/>
|
||||||
<testcase classname="global" name="X/level/0/b" time="tbd"/>
|
<testcase classname="global" name="X/level/0/b" time="0"/>
|
||||||
<testcase classname="global" name="X/level/1/a" time="tbd"/>
|
<testcase classname="global" name="X/level/1/a" time="0"/>
|
||||||
<testcase classname="global" name="X/level/1/b" time="tbd"/>
|
<testcase classname="global" name="X/level/1/b" time="0"/>
|
||||||
<testcase classname="global" name="Anonymous test case 1" time="tbd"/>
|
<testcase classname="global" name="Anonymous test case 1" time="0"/>
|
||||||
<testcase classname="global" name="Test case with one argument" time="tbd"/>
|
<testcase classname="global" name="Test case with one argument" time="0"/>
|
||||||
<testcase classname="global" name="Variadic macros" time="tbd"/>
|
<testcase classname="global" name="Variadic macros" time="0"/>
|
||||||
<testcase classname="global" name="Scenario: Do that thing with the thing" time="tbd"/>
|
<testcase classname="global" name="Scenario: Do that thing with the thing" time="0"/>
|
||||||
<testcase classname="global" name="Scenario: Vector resizing affects size and capacity" time="tbd"/>
|
<testcase classname="global" name="Scenario: Vector resizing affects size and capacity" time="0"/>
|
||||||
<testcase classname="global" name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" time="tbd"/>
|
<testcase classname="global" name="Scenario: This is a really long scenario name to see how the list command deals with wrapping" time="0"/>
|
||||||
<testcase classname="global" name="cmdline" time="tbd"/>
|
<testcase classname="global" name="cmdline" time="0"/>
|
||||||
<testcase classname="global" name="section tracking" time="tbd"/>
|
<testcase classname="global" name="section tracking" time="0"/>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<system-out>
|
<system-out>
|
||||||
Message from section one
|
Message from section one
|
||||||
|
@ -7707,6 +7728,9 @@ Message from section two
|
||||||
|
|
||||||
Some information
|
Some information
|
||||||
|
|
||||||
|
starting...
|
||||||
|
finished in 0.322247
|
||||||
|
|
||||||
Message from section one
|
Message from section one
|
||||||
Message from section two
|
Message from section two
|
||||||
Some information
|
Some information
|
||||||
|
@ -11414,6 +11438,9 @@ An error
|
||||||
</Failure>
|
</Failure>
|
||||||
<OverallResult success="false"/>
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="Timer">
|
||||||
|
<OverallResult success="true"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="selftest/main">
|
<TestCase name="selftest/main">
|
||||||
<Section name="selftest/expected result" description="Tests do what they claim">
|
<Section name="selftest/expected result" description="Tests do what they claim">
|
||||||
<OverallResults successes="0" failures="0"/>
|
<OverallResults successes="0" failures="0"/>
|
||||||
|
@ -14069,7 +14096,7 @@ there"
|
||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="647" failures="109"/>
|
<OverallResults successes="648" failures="109"/>
|
||||||
</Group>
|
</Group>
|
||||||
<OverallResults successes="647" failures="109"/>
|
<OverallResults successes="648" failures="109"/>
|
||||||
</Catch>
|
</Catch>
|
||||||
|
|
|
@ -341,3 +341,26 @@ TEST_CASE("./failing/CatchSectionInfiniteLoop", "")
|
||||||
|
|
||||||
FAIL("to infinity and beyond");
|
FAIL("to infinity and beyond");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include "internal/catch_timer.h"
|
||||||
|
|
||||||
|
TEST_CASE( "Timer", "[work-in-progress]" )
|
||||||
|
{
|
||||||
|
Catch::Timer t;
|
||||||
|
t.start();
|
||||||
|
|
||||||
|
std::cout << "starting..." << std::endl;
|
||||||
|
|
||||||
|
double d = 0;
|
||||||
|
for( int i = 0; i < 100000; ++i )
|
||||||
|
for( int j = 0; j < 1000; ++j )
|
||||||
|
d += (double)i*(double)j;
|
||||||
|
|
||||||
|
double duration = t.getElapsedSeconds();
|
||||||
|
|
||||||
|
std::cout << "finished in " << duration << std::endl;
|
||||||
|
|
||||||
|
SUCCEED("yay");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -359,6 +359,10 @@
|
||||||
RelativePath="..\..\..\SelfTest\ClassTests.cpp"
|
RelativePath="..\..\..\SelfTest\ClassTests.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\SelfTest\CmdLineTests.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\SelfTest\ConditionTests.cpp"
|
RelativePath="..\..\..\SelfTest\ConditionTests.cpp"
|
||||||
>
|
>
|
||||||
|
@ -379,6 +383,10 @@
|
||||||
RelativePath="..\..\..\SelfTest\MiscTests.cpp"
|
RelativePath="..\..\..\SelfTest\MiscTests.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\SelfTest\SectionTrackerTests.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\SelfTest\TrickyTests.cpp"
|
RelativePath="..\..\..\SelfTest\TrickyTests.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -57,6 +57,8 @@
|
||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
263FD06017AF8DF200988A20 /* catch_timer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = catch_timer.hpp; sourceTree = "<group>"; };
|
||||||
|
263FD06117AF8DF200988A20 /* catch_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = catch_timer.h; sourceTree = "<group>"; };
|
||||||
266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = "<group>"; };
|
266B06B616F3A60A004ED264 /* VariadicMacrosTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VariadicMacrosTests.cpp; path = ../../../SelfTest/VariadicMacrosTests.cpp; sourceTree = "<group>"; };
|
||||||
266E9AD117230ACF0061DAB2 /* catch_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_text.hpp; sourceTree = "<group>"; };
|
266E9AD117230ACF0061DAB2 /* catch_text.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_text.hpp; sourceTree = "<group>"; };
|
||||||
266E9AD417290E8E0061DAB2 /* CmdLineTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CmdLineTests.cpp; path = ../../../SelfTest/CmdLineTests.cpp; sourceTree = "<group>"; };
|
266E9AD417290E8E0061DAB2 /* CmdLineTests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CmdLineTests.cpp; path = ../../../SelfTest/CmdLineTests.cpp; sourceTree = "<group>"; };
|
||||||
|
@ -318,6 +320,7 @@
|
||||||
4AC91CB4155B9EBF00DC5117 /* impl */ = {
|
4AC91CB4155B9EBF00DC5117 /* impl */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
263FD06017AF8DF200988A20 /* catch_timer.hpp */,
|
||||||
266E9AD117230ACF0061DAB2 /* catch_text.hpp */,
|
266E9AD117230ACF0061DAB2 /* catch_text.hpp */,
|
||||||
4A4B0F9C15CEFA8300AE2392 /* catch_impl.hpp */,
|
4A4B0F9C15CEFA8300AE2392 /* catch_impl.hpp */,
|
||||||
4A4B0F9715CE6CFB00AE2392 /* catch_registry_hub.hpp */,
|
4A4B0F9715CE6CFB00AE2392 /* catch_registry_hub.hpp */,
|
||||||
|
@ -423,6 +426,7 @@
|
||||||
26759472171C72A400A84BD1 /* catch_sfinae.hpp */,
|
26759472171C72A400A84BD1 /* catch_sfinae.hpp */,
|
||||||
26759473171C74C200A84BD1 /* catch_compiler_capabilities.h */,
|
26759473171C74C200A84BD1 /* catch_compiler_capabilities.h */,
|
||||||
26DACF2F17206D3400A21326 /* catch_text.h */,
|
26DACF2F17206D3400A21326 /* catch_text.h */,
|
||||||
|
263FD06117AF8DF200988A20 /* catch_timer.h */,
|
||||||
);
|
);
|
||||||
name = Infrastructure;
|
name = Infrastructure;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
Loading…
Reference in New Issue