Addressed Resharper-C++ warnings

See #958
This commit is contained in:
Martin Hořeňovský 2017-07-25 17:16:28 +02:00
parent b6f62af7d1
commit 1e59ccee41
25 changed files with 97 additions and 93 deletions

View File

@ -110,7 +110,7 @@ namespace Catch {
Catch::cleanUp();
}
void showHelp() {
void showHelp() const {
Catch::cout()
<< "\nCatch v" << libraryVersion() << "\n"
<< m_cli << std::endl

View File

@ -55,7 +55,7 @@ namespace Catch {
auto const setRngSeed = [&]( std::string const& seed ) {
if( seed != "time" )
return clara::detail::convertInto( seed, config.rngSeed );
config.rngSeed = static_cast<unsigned int>( std::time(0) );
config.rngSeed = static_cast<unsigned int>( std::time(nullptr) );
return ParserResult::ok( ParseResultType::Matched );
};
auto const setColourUsage = [&]( std::string const& useColour ) {

View File

@ -98,7 +98,7 @@ namespace Catch {
// as well as
// >> stuff +StreamEndStop
struct StreamEndStop {
std::string operator+() {
std::string operator+() const {
return std::string();
}
};

View File

@ -59,7 +59,7 @@ namespace {
originalBackgroundAttributes = csbiInfo.wAttributes & ~( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY );
}
virtual void use( Colour::Code _colourCode ) {
virtual void use( Colour::Code _colourCode ) override {
switch( _colourCode ) {
case Colour::None: return setTextAttribute( originalForegroundAttributes );
case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE );
@ -118,7 +118,7 @@ namespace {
// https://github.com/philsquared/Catch/pull/131
class PosixColourImpl : public IColourImpl {
public:
virtual void use( Colour::Code _colourCode ) {
virtual void use( Colour::Code _colourCode ) override {
switch( _colourCode ) {
case Colour::None:
case Colour::White: return setColour( "[0m" );
@ -179,10 +179,13 @@ namespace Catch {
namespace Catch {
Colour::Colour( Code _colourCode ) { use( _colourCode ); }
Colour::Colour( Colour&& _other ) { const_cast<Colour&>( _other ).m_moved = true; }
Colour& Colour::operator=( Colour&& _other ) {
m_moved = false;
const_cast<Colour&>( _other ).m_moved = true;
Colour::Colour( Colour&& rhs ) noexcept {
m_moved = rhs.m_moved;
rhs.m_moved = true;
}
Colour& Colour::operator=( Colour&& rhs ) noexcept {
m_moved = rhs.m_moved;
rhs.m_moved = true;
return *this;
}

View File

@ -50,8 +50,8 @@ namespace Catch {
// Use constructed object for RAII guard
Colour( Code _colourCode );
Colour( Colour&& other );
Colour& operator=( Colour&& other );
Colour( Colour&& other ) noexcept;
Colour& operator=( Colour&& other ) noexcept;
~Colour();
// Use static method for one-shot changes

View File

@ -16,32 +16,30 @@ namespace Catch {
class Context : public IMutableContext, NonCopyable {
public: // IContext
virtual IResultCapture* getResultCapture() {
virtual IResultCapture* getResultCapture() override {
return m_resultCapture;
}
virtual IRunner* getRunner() {
virtual IRunner* getRunner() override {
return m_runner;
}
virtual IConfigPtr getConfig() const {
virtual IConfigPtr getConfig() const override {
return m_config;
}
public: // IMutableContext
virtual void setResultCapture( IResultCapture* resultCapture ) {
virtual void setResultCapture( IResultCapture* resultCapture ) override {
m_resultCapture = resultCapture;
}
virtual void setRunner( IRunner* runner ) {
virtual void setRunner( IRunner* runner ) override {
m_runner = runner;
}
virtual void setConfig( IConfigPtr const& config ) {
virtual void setConfig( IConfigPtr const& config ) override {
m_config = config;
}
friend IMutableContext& getCurrentMutableContext();
private:
private:
IConfigPtr m_config;
IRunner* m_runner = nullptr;

View File

@ -46,7 +46,7 @@ namespace Internal {
// So the compare overloads can be operator agnostic we convey the operator as a template
// enum, which is used to specialise an Evaluator for doing the comparison.
template<typename T1, typename T2, Operator Op>
class Evaluator{};
struct Evaluator{};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsEqualTo> {

View File

@ -19,7 +19,7 @@ namespace Catch {
public:
~ExceptionTranslatorRegistry();
virtual void registerTranslator( const IExceptionTranslator* translator );
virtual std::string translateActiveException() const;
virtual std::string translateActiveException() const override;
std::string tryTranslators() const;
private:

View File

@ -19,7 +19,7 @@ namespace Catch {
virtual ~NotImplementedException() noexcept = default;
virtual const char* what() const noexcept;
virtual const char* what() const noexcept override;
private:
std::string m_what;

View File

@ -17,11 +17,11 @@ namespace Catch {
class ReporterFactory : public IReporterFactory {
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const {
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const override {
return std::unique_ptr<T>( new T( config ) );
}
virtual std::string getDescription() const {
virtual std::string getDescription() const override {
return T::getDescription();
}
};
@ -38,10 +38,10 @@ namespace Catch {
class ListenerFactory : public IReporterFactory {
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const {
virtual IStreamingReporterPtr create( ReporterConfig const& config ) const override {
return std::make_shared<T>( config );
}
virtual std::string getDescription() const {
virtual std::string getDescription() const override {
return std::string();
}
};

View File

@ -63,33 +63,30 @@ namespace Catch {
private: // IResultCapture
virtual void assertionEnded(AssertionResult const& result);
virtual void assertionEnded(AssertionResult const& result) override;
virtual bool sectionStarted(
SectionInfo const& sectionInfo,
Counts& assertions
);
virtual bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) override;
bool testForMissingAssertions(Counts& assertions);
virtual void sectionEnded(SectionEndInfo const& endInfo);
virtual void sectionEnded(SectionEndInfo const& endInfo) override;
virtual void sectionEndedEarly(SectionEndInfo const& endInfo);
virtual void sectionEndedEarly(SectionEndInfo const& endInfo) override;
virtual void pushScopedMessage(MessageInfo const& message);
virtual void pushScopedMessage(MessageInfo const& message) override;
virtual void popScopedMessage(MessageInfo const& message);
virtual void popScopedMessage(MessageInfo const& message) override;
virtual std::string getCurrentTestName() const;
virtual std::string getCurrentTestName() const override;
virtual const AssertionResult* getLastResult() const;
virtual const AssertionResult* getLastResult() const override;
virtual void exceptionEarlyReported();
virtual void exceptionEarlyReported() override;
virtual void handleFatalErrorCondition(std::string const& message);
virtual void handleFatalErrorCondition(std::string const& message) override;
public:
// !TBD We need to do this another way!
bool aborting() const;
bool aborting() const override;
private:

View File

@ -30,11 +30,11 @@ namespace Catch {
}
~StreamBufImpl() noexcept {
sync();
StreamBufImpl::sync();
}
private:
int overflow( int c ) {
int overflow( int c ) override {
sync();
if( c != EOF ) {
@ -46,7 +46,7 @@ namespace Catch {
return 0;
}
int sync() {
int sync() override {
if( pbase() != pptr() ) {
m_writer( std::string( pbase(), static_cast<std::string::size_type>( pptr() - pbase() ) ) );
setp( pbase(), epptr() );

View File

@ -32,7 +32,7 @@ namespace Catch {
{
m_data->addRef();
}
String::String( String&& other )
String::String( String&& other ) noexcept
: m_data( other.m_data )
{
other.m_data = StringData::getEmpty();

View File

@ -28,7 +28,7 @@ namespace Catch {
String( StringRef const& stringRef );
String( char const* rawString );
String( String const& other );
String( String&& other );
String( String&& other ) noexcept;
String( StringBuilder&& stringBuf );
~String() noexcept;

View File

@ -55,7 +55,7 @@ namespace Catch {
{
size_type rawSize = rawChars == nullptr ? 0 : static_cast<size_type>( std::strlen( rawChars ) );
if( rawSize < size )
size = rawSize;
m_size = rawSize;
}
StringRef::StringRef( String const& other ) noexcept

View File

@ -63,7 +63,7 @@ namespace TestCaseTracking {
TrackerBase::TrackerHasName::TrackerHasName( NameAndLocation const& nameAndLocation ) : m_nameAndLocation( nameAndLocation ) {}
bool TrackerBase::TrackerHasName::operator ()( ITrackerPtr const& tracker ) {
bool TrackerBase::TrackerHasName::operator ()( ITrackerPtr const& tracker ) const {
return
tracker->nameAndLocation().name == m_nameAndLocation.name &&
tracker->nameAndLocation().location == m_nameAndLocation.location;
@ -133,7 +133,7 @@ namespace TestCaseTracking {
switch( m_runState ) {
case NeedsAnotherRun:
break;;
break;
case Executing:
m_runState = CompletedSuccessfully;

View File

@ -101,7 +101,7 @@ namespace TestCaseTracking {
NameAndLocation m_nameAndLocation;
public:
TrackerHasName( NameAndLocation const& nameAndLocation );
bool operator ()( ITrackerPtr const& tracker );
bool operator ()( ITrackerPtr const& tracker ) const;
};
typedef std::vector<ITrackerPtr> Children;

View File

@ -33,7 +33,7 @@ namespace Catch {
public:
NamePattern( std::string const& name );
virtual ~NamePattern() = default;
virtual bool matches( TestCaseInfo const& testCase ) const;
virtual bool matches( TestCaseInfo const& testCase ) const override;
private:
WildcardPattern m_wildcardPattern;
};
@ -42,7 +42,7 @@ namespace Catch {
public:
TagPattern( std::string const& tag );
virtual ~TagPattern() = default;
virtual bool matches( TestCaseInfo const& testCase ) const;
virtual bool matches( TestCaseInfo const& testCase ) const override;
private:
std::string m_tag;
};
@ -51,7 +51,7 @@ namespace Catch {
public:
ExcludedPattern( PatternPtr const& underlyingPattern );
virtual ~ExcludedPattern() = default;
virtual bool matches( TestCaseInfo const& testCase ) const;
virtual bool matches( TestCaseInfo const& testCase ) const override;
private:
PatternPtr m_underlyingPattern;
};

View File

@ -65,11 +65,11 @@ namespace Catch {
: m_writer( writer )
{}
XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other )
XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept
: m_writer( other.m_writer ){
other.m_writer = nullptr;
}
XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) {
XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept {
if ( m_writer ) {
m_writer->endElement();
}

View File

@ -38,8 +38,8 @@ namespace Catch {
public:
ScopedElement( XmlWriter* writer );
ScopedElement( ScopedElement&& other );
ScopedElement& operator=( ScopedElement&& other );
ScopedElement( ScopedElement&& other ) noexcept;
ScopedElement& operator=( ScopedElement&& other ) noexcept;
~ScopedElement();

View File

@ -17,6 +17,12 @@
#include <memory>
namespace Catch {
void prepareExpandedExpression(AssertionResult& result) {
if (result.isOk())
result.discardDecomposedExpression();
else
result.expandDecomposedExpression();
}
// Because formatting using c++ streams is stateful, drop down to C is required
// Alternatively we could use stringstream, but its performance is... not good.

View File

@ -17,6 +17,7 @@
#include <memory>
namespace Catch {
void prepareExpandedExpression(AssertionResult& result);
// Returns double formatted as %.3f (format expected on output)
std::string getFormattedDuration( double duration );
@ -230,13 +231,6 @@ namespace Catch {
void skipTest(TestCaseInfo const&) override {}
void prepareExpandedExpression(AssertionResult& result) const {
if (result.isOk())
result.discardDecomposedExpression();
else
result.expandDecomposedExpression();
}
IConfigPtr m_config;
std::ostream& stream;
std::vector<AssertionStats> m_assertions;

View File

@ -11,6 +11,25 @@
#include "../internal/catch_reporter_registrars.hpp"
#include "../internal/catch_console_colour.hpp"
namespace {
#ifdef CATCH_PLATFORM_MAC
const char* failedString() { return "FAILED"; }
const char* passedString() { return "PASSED"; }
#else
const char* failedString() { return "failed"; }
const char* passedString() { return "passed"; }
#endif
// Colour::LightGrey
Catch::Colour::Code dimColour() { return Catch::Colour::FileName; }
std::string bothOrAll( std::size_t count ) {
return count == 1 ? std::string() :
count == 2 ? "both " : "all " ;
}
}
namespace Catch {
struct CompactReporter : StreamingReporterBase<CompactReporter> {
@ -148,18 +167,6 @@ namespace Catch {
}
private:
// Colour::LightGrey
static Colour::Code dimColour() { return Colour::FileName; }
#ifdef CATCH_PLATFORM_MAC
static const char* failedString() { return "FAILED"; }
static const char* passedString() { return "PASSED"; }
#else
static const char* failedString() { return "failed"; }
static const char* passedString() { return "passed"; }
#endif
void printSourceInfo() const {
Colour colourGuard( Colour::FileName );
stream << result.getSourceInfo() << ':';
@ -253,10 +260,6 @@ namespace Catch {
// - red: Failed N tests cases, failed M assertions.
// - green: Passed [both/all] N tests cases with M assertions.
std::string bothOrAll( std::size_t count ) const {
return count == 1 ? std::string() : count == 2 ? "both " : "all " ;
}
void printTotals( const Totals& totals ) const {
if( totals.testCases.total() == 0 ) {
stream << "No tests ran.";

View File

@ -16,6 +16,22 @@
#include <cfloat>
#include <cstdio>
namespace {
std::size_t makeRatio( std::size_t number, std::size_t total ) {
std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number/ total : 0;
return ( ratio == 0 && number > 0 ) ? 1 : ratio;
}
std::size_t& findMax( std::size_t& i, std::size_t& j, std::size_t& k ) {
if( i > j && i > k )
return i;
else if( j > k )
return j;
else
return k;
}
}
namespace Catch {
struct ConsoleReporter : StreamingReporterBase<ConsoleReporter> {
@ -390,19 +406,6 @@ namespace Catch {
stream << '\n';
}
static std::size_t makeRatio( std::size_t number, std::size_t total ) {
std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number/ total : 0;
return ( ratio == 0 && number > 0 ) ? 1 : ratio;
}
static std::size_t& findMax( std::size_t& i, std::size_t& j, std::size_t& k ) {
if( i > j && i > k )
return i;
else if( j > k )
return j;
else
return k;
}
void printTotalsDivider( Totals const& totals ) {
if( totals.testCases.total() > 0 ) {
std::size_t failedRatio = makeRatio( totals.testCases.failed, totals.testCases.total() );

View File

@ -187,7 +187,7 @@ namespace Catch {
// if string has a : in first line will set indent to follow it on
// subsequent lines
void printHeaderString( std::ostream& os, std::string const& _string, std::size_t indent = 0 ) {
static void printHeaderString( std::ostream& os, std::string const& _string, std::size_t indent = 0 ) {
std::size_t i = _string.find( ": " );
if( i != std::string::npos )
i+=2;