| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * Catch v2.4.0 | |||
| * Generated: 2018-09-04 11:55:01.682061 | |||
| * Catch v2.4.1 | |||
| * Generated: 2018-09-28 15:50:15.645795 | |||
| * ---------------------------------------------------------- | |||
| * This file has been merged from multiple headers. Please don't edit it directly | |||
| * Copyright (c) 2018 Two Blue Cubes Ltd. All rights reserved. | |||
| @@ -15,7 +15,7 @@ | |||
| #define CATCH_VERSION_MAJOR 2 | |||
| #define CATCH_VERSION_MINOR 4 | |||
| #define CATCH_VERSION_PATCH 0 | |||
| #define CATCH_VERSION_PATCH 1 | |||
| #ifdef __clang__ | |||
| # pragma clang system_header | |||
| @@ -121,11 +121,11 @@ namespace Catch { | |||
| #ifdef __cplusplus | |||
| # if __cplusplus >= 201402L | |||
| # if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) | |||
| # define CATCH_CPP14_OR_GREATER | |||
| # endif | |||
| # if __cplusplus >= 201703L | |||
| # if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) | |||
| # define CATCH_CPP17_OR_GREATER | |||
| # endif | |||
| @@ -200,7 +200,14 @@ namespace Catch { | |||
| // Required for some versions of Cygwin to declare gettimeofday | |||
| // see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin | |||
| # define _BSD_SOURCE | |||
| // some versions of cygwin (most) do not support std::to_string. Use the libstd check. | |||
| // https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 | |||
| # if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ | |||
| && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) | |||
| # define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING | |||
| # endif | |||
| #endif // __CYGWIN__ | |||
| //////////////////////////////////////////////////////////////////////////////// | |||
| @@ -244,6 +251,32 @@ namespace Catch { | |||
| #define CATCH_INTERNAL_CONFIG_COUNTER | |||
| #endif | |||
| //////////////////////////////////////////////////////////////////////////////// | |||
| // Check if string_view is available and usable | |||
| // The check is split apart to work around v140 (VS2015) preprocessor issue... | |||
| #if defined(__has_include) | |||
| #if __has_include(<string_view>) && defined(CATCH_CPP17_OR_GREATER) | |||
| # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW | |||
| #endif | |||
| #endif | |||
| //////////////////////////////////////////////////////////////////////////////// | |||
| // Check if variant is available and usable | |||
| #if defined(__has_include) | |||
| # if __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER) | |||
| # if defined(__clang__) && (__clang_major__ < 8) | |||
| // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 | |||
| // fix should be in clang 8, workaround in libstdc++ 8.2 | |||
| # include <ciso646> | |||
| # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) | |||
| # define CATCH_CONFIG_NO_CPP17_VARIANT | |||
| # else | |||
| # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT | |||
| # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) | |||
| # endif // defined(__clang__) && (__clang_major__ < 8) | |||
| # endif // __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER) | |||
| #endif // __has_include | |||
| #if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) | |||
| # define CATCH_CONFIG_COUNTER | |||
| #endif | |||
| @@ -267,6 +300,14 @@ namespace Catch { | |||
| # define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS | |||
| #endif | |||
| #if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) | |||
| # define CATCH_CONFIG_CPP17_STRING_VIEW | |||
| #endif | |||
| #if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) | |||
| # define CATCH_CONFIG_CPP17_VARIANT | |||
| #endif | |||
| #if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) | |||
| # define CATCH_INTERNAL_CONFIG_NEW_CAPTURE | |||
| #endif | |||
| @@ -754,6 +795,10 @@ namespace Catch { | |||
| // end catch_stream.h | |||
| #ifdef CATCH_CONFIG_CPP17_STRING_VIEW | |||
| #include <string_view> | |||
| #endif | |||
| #ifdef __OBJC__ | |||
| // start catch_objc_arc.hpp | |||
| @@ -929,10 +974,11 @@ namespace Catch { | |||
| struct StringMaker<std::string> { | |||
| static std::string convert(const std::string& str); | |||
| }; | |||
| #ifdef CATCH_CONFIG_WCHAR | |||
| #ifdef CATCH_CONFIG_CPP17_STRING_VIEW | |||
| template<> | |||
| struct StringMaker<std::wstring> { | |||
| static std::string convert(const std::wstring& wstr); | |||
| struct StringMaker<std::string_view> { | |||
| static std::string convert(std::string_view str); | |||
| }; | |||
| #endif | |||
| @@ -946,6 +992,18 @@ namespace Catch { | |||
| }; | |||
| #ifdef CATCH_CONFIG_WCHAR | |||
| template<> | |||
| struct StringMaker<std::wstring> { | |||
| static std::string convert(const std::wstring& wstr); | |||
| }; | |||
| # ifdef CATCH_CONFIG_CPP17_STRING_VIEW | |||
| template<> | |||
| struct StringMaker<std::wstring_view> { | |||
| static std::string convert(std::wstring_view str); | |||
| }; | |||
| # endif | |||
| template<> | |||
| struct StringMaker<wchar_t const *> { | |||
| static std::string convert(wchar_t const * str); | |||
| @@ -1114,6 +1172,7 @@ namespace Catch { | |||
| #if defined(CATCH_CONFIG_ENABLE_ALL_STRINGMAKERS) | |||
| # define CATCH_CONFIG_ENABLE_PAIR_STRINGMAKER | |||
| # define CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER | |||
| # define CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER | |||
| # define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER | |||
| #endif | |||
| @@ -1177,6 +1236,34 @@ namespace Catch { | |||
| } | |||
| #endif // CATCH_CONFIG_ENABLE_TUPLE_STRINGMAKER | |||
| #if defined(CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER) && defined(CATCH_CONFIG_CPP17_VARIANT) | |||
| #include <variant> | |||
| namespace Catch { | |||
| template<> | |||
| struct StringMaker<std::monostate> { | |||
| static std::string convert(const std::monostate&) { | |||
| return "{ }"; | |||
| } | |||
| }; | |||
| template<typename... Elements> | |||
| struct StringMaker<std::variant<Elements...>> { | |||
| static std::string convert(const std::variant<Elements...>& variant) { | |||
| if (variant.valueless_by_exception()) { | |||
| return "{valueless variant}"; | |||
| } else { | |||
| return std::visit( | |||
| [](const auto& value) { | |||
| return ::Catch::Detail::stringify(value); | |||
| }, | |||
| variant | |||
| ); | |||
| } | |||
| } | |||
| }; | |||
| } | |||
| #endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER | |||
| namespace Catch { | |||
| struct not_this_one {}; // Tag type for detecting which begin/ end are being selected | |||
| @@ -2761,7 +2848,7 @@ namespace Matchers { | |||
| auto lfirst = m_target.begin(), llast = m_target.end(); | |||
| auto rfirst = vec.begin(), rlast = vec.end(); | |||
| // Cut common prefix to optimize checking of permuted parts | |||
| while (lfirst != llast && *lfirst != *rfirst) { | |||
| while (lfirst != llast && *lfirst == *rfirst) { | |||
| ++lfirst; ++rfirst; | |||
| } | |||
| if (lfirst == llast) { | |||
| @@ -9597,7 +9684,7 @@ namespace Catch { | |||
| } | |||
| bool RunContext::aborting() const { | |||
| return m_totals.assertions.failed == static_cast<std::size_t>(m_config->abortAfter()); | |||
| return m_totals.assertions.failed >= static_cast<std::size_t>(m_config->abortAfter()); | |||
| } | |||
| void RunContext::runCurrentTest(std::string & redirectedCout, std::string & redirectedCerr) { | |||
| @@ -11512,14 +11599,9 @@ std::string StringMaker<std::string>::convert(const std::string& str) { | |||
| return s; | |||
| } | |||
| #ifdef CATCH_CONFIG_WCHAR | |||
| std::string StringMaker<std::wstring>::convert(const std::wstring& wstr) { | |||
| std::string s; | |||
| s.reserve(wstr.size()); | |||
| for (auto c : wstr) { | |||
| s += (c <= 0xff) ? static_cast<char>(c) : '?'; | |||
| } | |||
| return ::Catch::Detail::stringify(s); | |||
| #ifdef CATCH_CONFIG_CPP17_STRING_VIEW | |||
| std::string StringMaker<std::string_view>::convert(std::string_view str) { | |||
| return ::Catch::Detail::stringify(std::string{ str }); | |||
| } | |||
| #endif | |||
| @@ -11537,7 +11619,23 @@ std::string StringMaker<char*>::convert(char* str) { | |||
| return{ "{null string}" }; | |||
| } | |||
| } | |||
| #ifdef CATCH_CONFIG_WCHAR | |||
| std::string StringMaker<std::wstring>::convert(const std::wstring& wstr) { | |||
| std::string s; | |||
| s.reserve(wstr.size()); | |||
| for (auto c : wstr) { | |||
| s += (c <= 0xff) ? static_cast<char>(c) : '?'; | |||
| } | |||
| return ::Catch::Detail::stringify(s); | |||
| } | |||
| # ifdef CATCH_CONFIG_CPP17_STRING_VIEW | |||
| std::string StringMaker<std::wstring_view>::convert(std::wstring_view str) { | |||
| return StringMaker<std::wstring>::convert(std::wstring(str)); | |||
| } | |||
| # endif | |||
| std::string StringMaker<wchar_t const*>::convert(wchar_t const * str) { | |||
| if (str) { | |||
| return ::Catch::Detail::stringify(std::wstring{ str }); | |||
| @@ -11738,7 +11836,7 @@ namespace Catch { | |||
| } | |||
| Version const& libraryVersion() { | |||
| static Version version( 2, 4, 0, "", 0 ); | |||
| static Version version( 2, 4, 1, "", 0 ); | |||
| return version; | |||
| } | |||