/* * Created by Phil on 27/11/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 "../internal/catch_interfaces_reporter.h" #include "../internal/catch_errno_guard.h" #include "catch_reporter_bases.hpp" #include #include #include #include #include namespace Catch { void prepareExpandedExpression(AssertionResult& result) { result.getExpandedExpression(); } // Because formatting using c++ streams is stateful, drop down to C is required // Alternatively we could use stringstream, but its performance is... not good. std::string getFormattedDuration( double duration ) { // Max exponent + 1 is required to represent the whole part // + 1 for decimal point // + 3 for the 3 decimal places // + 1 for null terminator const std::size_t maxDoubleSize = DBL_MAX_10_EXP + 1 + 1 + 3 + 1; char buffer[maxDoubleSize]; // Save previous errno, to prevent sprintf from overwriting it ErrnoGuard guard; #ifdef _MSC_VER sprintf_s(buffer, "%.3f", duration); #else std::sprintf(buffer, "%.3f", duration); #endif return std::string(buffer); } bool shouldShowDuration( IConfig const& config, double duration ) { if ( config.showDurations() == ShowDurations::Always ) { return true; } if ( config.showDurations() == ShowDurations::Never ) { return false; } const double min = config.minDuration(); return min >= 0 && duration >= min; } std::string serializeFilters( std::vector const& container ) { ReusableStringStream oss; bool first = true; for (auto&& filter : container) { if (!first) oss << ' '; else first = false; oss << filter; } return oss.str(); } TestEventListenerBase::TestEventListenerBase(ReporterConfig const & _config) :StreamingReporterBase(_config) {} std::set TestEventListenerBase::getSupportedVerbosities() { return { Verbosity::Quiet, Verbosity::Normal, Verbosity::High }; } void TestEventListenerBase::assertionStarting(AssertionInfo const &) {} bool TestEventListenerBase::assertionEnded(AssertionStats const &) { return false; } } // end namespace Catch