mirror of
https://github.com/nlohmann/json.git
synced 2026-09-06 00:08:00 +00:00
test: add direct coverage for the std::u8string to_json overload (#5423)
The ADL to_json overload for std::basic_string<char8_t, ...> was only ever reached indirectly, via std::filesystem::path::u8string(). Add a test that constructs a json value directly from a std::u8string, gated the same way as the overload itself (include/nlohmann/detail/conversions/to_json.hpp): behind both the std::filesystem::path feature guard and __cpp_lib_char8_t, since the overload only exists when both are satisfied. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
@@ -1761,6 +1761,33 @@ TEST_CASE("std::filesystem::path")
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// the ADL to_json overload for std::u8string only exists under the same guard
|
||||||
|
// as std::filesystem::path support (it is otherwise only reached indirectly,
|
||||||
|
// via std::filesystem::path::u8string()) -- mirror both #if conditions from
|
||||||
|
// include/nlohmann/detail/conversions/to_json.hpp exactly
|
||||||
|
#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
||||||
|
#if defined(__cpp_lib_char8_t)
|
||||||
|
TEST_CASE("std::u8string")
|
||||||
|
{
|
||||||
|
SECTION("ascii")
|
||||||
|
{
|
||||||
|
const std::u8string s = u8"Path";
|
||||||
|
json const j = s;
|
||||||
|
|
||||||
|
CHECK(j.template get<std::string>() == "Path");
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("utf-8")
|
||||||
|
{
|
||||||
|
const std::u8string s = u8"P\xc4\x9b\xc5\xa1ina";
|
||||||
|
json const j = s;
|
||||||
|
|
||||||
|
CHECK(j.template get<std::string>() == "P\xc4\x9b\xc5\xa1ina");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST_CASE("std::optional")
|
TEST_CASE("std::optional")
|
||||||
{
|
{
|
||||||
SECTION("null")
|
SECTION("null")
|
||||||
|
|||||||
Reference in New Issue
Block a user