mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
Add std::byte
stringification support (#1686)
* Add `std::byte` support 1. Add byte detection in Catch config 2. Add a `std::byte`specialisation for Catch2::Detail::StringMaker
This commit is contained in:
parent
0c27554af5
commit
87739ad3fe
@ -201,6 +201,14 @@
|
|||||||
# endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
|
# endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
#endif // __has_include
|
#endif // __has_include
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Check if byte is available and usable
|
||||||
|
#if defined(__has_include)
|
||||||
|
# if __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
|
# define CATCH_INTERNAL_CONFIG_CPP17_BYTE
|
||||||
|
# endif // __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
|
||||||
|
#endif // __has_include
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// Check if variant is available and usable
|
// Check if variant is available and usable
|
||||||
#if defined(__has_include)
|
#if defined(__has_include)
|
||||||
@ -256,6 +264,11 @@
|
|||||||
# define CATCH_CONFIG_CPP17_VARIANT
|
# define CATCH_CONFIG_CPP17_VARIANT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
|
# define CATCH_CONFIG_CPP17_BYTE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
|
#if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
|
||||||
# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
|
# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
|
||||||
#endif
|
#endif
|
||||||
|
@ -170,6 +170,12 @@ std::string StringMaker<wchar_t *>::convert(wchar_t * str) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
|
#include <cstddef>
|
||||||
|
std::string StringMaker<std::byte>::convert(std::byte value) {
|
||||||
|
return ::Catch::Detail::stringify(std::to_integer<unsigned long long>(value));
|
||||||
|
}
|
||||||
|
#endif // defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
|
|
||||||
std::string StringMaker<int>::convert(int value) {
|
std::string StringMaker<int>::convert(int value) {
|
||||||
return ::Catch::Detail::stringify(static_cast<long long>(value));
|
return ::Catch::Detail::stringify(static_cast<long long>(value));
|
||||||
|
@ -210,6 +210,12 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
|
template<>
|
||||||
|
struct StringMaker<std::byte> {
|
||||||
|
static std::string convert(std::byte value);
|
||||||
|
};
|
||||||
|
#endif // defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
template<>
|
template<>
|
||||||
struct StringMaker<int> {
|
struct StringMaker<int> {
|
||||||
static std::string convert(int value);
|
static std::string convert(int value);
|
||||||
|
@ -36,6 +36,7 @@ set(TEST_SOURCES
|
|||||||
${SELF_TEST_DIR}/UsageTests/Generators.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/Generators.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/Message.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/Message.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/Misc.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/Misc.tests.cpp
|
||||||
|
${SELF_TEST_DIR}/UsageTests/ToStringByte.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/ToStringChrono.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/ToStringChrono.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/ToStringGeneral.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/ToStringGeneral.tests.cpp
|
||||||
${SELF_TEST_DIR}/UsageTests/ToStringOptional.tests.cpp
|
${SELF_TEST_DIR}/UsageTests/ToStringOptional.tests.cpp
|
||||||
|
15
projects/SelfTest/UsageTests/ToStringByte.tests.cpp
Normal file
15
projects/SelfTest/UsageTests/ToStringByte.tests.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#if defined(CATCH_CONFIG_CPP17_BYTE)
|
||||||
|
|
||||||
|
TEST_CASE( "std::byte -> toString", "[toString][byte][approvals]" ) {
|
||||||
|
using type = std::byte;
|
||||||
|
REQUIRE( "0" == ::Catch::Detail::stringify( type{ 0 } ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "std::vector<std::byte> -> toString", "[toString][byte][approvals]" ) {
|
||||||
|
using type = std::vector<std::byte>;
|
||||||
|
REQUIRE( "{ 0, 1, 2 }" == ::Catch::Detail::stringify( type{ std::byte{0}, std::byte{1}, std::byte{2} } ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // CATCH_INTERNAL_CONFIG_CPP17_BYTE
|
Loading…
Reference in New Issue
Block a user