diff --git a/include/internal/catch_tostring.cpp b/include/internal/catch_tostring.cpp index 568d96e7..dc6f3af5 100644 --- a/include/internal/catch_tostring.cpp +++ b/include/internal/catch_tostring.cpp @@ -216,56 +216,6 @@ std::string StringMaker::convert(double value) { return fpToString(value, 10); } -// Separate std::chrono::duration specialization -#if defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) -#include - -std::string ratio_string::symbol() { - return "a"; -} - -std::string ratio_string::symbol() { - return "f"; -} - -std::string ratio_string::symbol() { - return "p"; -} - -std::string ratio_string::symbol() { - return "n"; -} - -std::string ratio_string::symbol() { - return "u"; -} - -std::string ratio_string::symbol() { - return "m"; -} - - -std::string time_t_toString(time_t const& toConvert) { - -#ifdef _MSC_VER - std::tm timeInfo = {}; - gmtime_s(&timeInfo, &toConvert); -#else - std::tm* timeInfo = std::gmtime(&toConvert); -#endif - - auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); - char timeStamp[timeStampSize]; - const char * const fmt = "%Y-%m-%dT%H:%M:%SZ"; - -#ifdef _MSC_VER - std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); -#else - std::strftime(timeStamp, timeStampSize, fmt, timeInfo); -#endif - return std::string(timeStamp, timeStampSize); -} -#endif // CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER } // end namespace Catch diff --git a/include/internal/catch_tostring.h b/include/internal/catch_tostring.h index b60fd9fd..40d61479 100644 --- a/include/internal/catch_tostring.h +++ b/include/internal/catch_tostring.h @@ -347,13 +347,10 @@ namespace Catch { // Separate std::chrono::duration specialization #if defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) +#include #include #include -namespace Catch { - -std::string time_t_toString(time_t const& toConvert); - template struct ratio_string { static std::string symbol(); @@ -368,30 +365,30 @@ std::string ratio_string::symbol() { } template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "a"; } }; template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "f"; } }; template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "p"; } }; template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "n"; } }; template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "u"; } }; template <> struct ratio_string { - static std::string symbol(); + static std::string symbol() { return "m"; } }; - +namespace Catch { //////////// // std::chrono::duration specializations template @@ -436,16 +433,32 @@ struct ratio_string { return ::Catch::Detail::stringify(time_point.time_since_epoch()) + " since epoch"; } }; - // std::chrono::time_point specialization template struct StringMaker> { static std::string convert(std::chrono::time_point const& time_point) { auto converted = std::chrono::system_clock::to_time_t(time_point); - return time_t_toString(converted); + +#ifdef _MSC_VER + std::tm timeInfo = {}; + gmtime_s(&timeInfo, &converted); +#else + std::tm* timeInfo = std::gmtime(&converted); +#endif + + auto const timeStampSize = sizeof("2017-01-16T17:06:45Z"); + char timeStamp[timeStampSize]; + const char * const fmt = "%Y-%m-%dT%H:%M:%SZ"; + +#ifdef _MSC_VER + std::strftime(timeStamp, timeStampSize, fmt, &timeInfo); +#else + std::strftime(timeStamp, timeStampSize, fmt, timeInfo); +#endif + return std::string(timeStamp); } }; -} // namespace Catch +} #endif // CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER