From 955b3b84dd2dadd539dbc707c26c33ad3e63b374 Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Mon, 6 Dec 2021 16:31:02 +0100 Subject: Fixes for new compiler versions --- src/test-unicode.cpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/test-unicode.cpp b/src/test-unicode.cpp index b5b48f0..ef68e02 100644 --- a/src/test-unicode.cpp +++ b/src/test-unicode.cpp @@ -39,11 +39,19 @@ std::vector success_sets { // Error cases: throwing upon convert to all other types std::vector> failure_strings_char8_t { // using u8"" here doesn't work on MSVC - u8"\x80", // utf-8 continuation byte - u8"\x81", // utf-8 continuation byte - u8"\xc3\xc3\xa4", // initial byte of utf-8 "ä", followed by valid utf-8 "ä" - u8"\xF8\x80\x80\x80\x80", // overlong encoding - u8"\xF7\xBF\xBF\xBF", // valid encoding of invalid code point +#if (__cplusplus >= 202002L) + (char8_t*)"\x80", // utf-8 continuation byte + (char8_t*)"\x81", // utf-8 continuation byte + (char8_t*)"\xc3\xc3\xa4", // initial byte of utf-8 "ä", followed by valid utf-8 "ä" + (char8_t*)"\xF8\x80\x80\x80\x80", // overlong encoding + (char8_t*)"\xF7\xBF\xBF\xBF", // valid encoding of invalid code point +#else + "\x80", // utf-8 continuation byte + "\x81", // utf-8 continuation byte + "\xc3\xc3\xa4", // initial byte of utf-8 "ä", followed by valid utf-8 "ä" + "\xF8\x80\x80\x80\x80", // overlong encoding + "\xF7\xBF\xBF\xBF", // valid encoding of invalid code point +#endif }; std::vector> failure_strings_char16_t { @@ -350,6 +358,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(random_sequences, T, types_collection_type) } BOOST_CHECK_MESSAGE(i > 1, "Not enough iterations done!"); + + std::cout << "random_sequences: Completed " << i << " iterations for long random code unit sequences for " << typeid(typename T::value_type).name() << std::endl; } // Test ISO and UTF encodings @@ -385,8 +395,12 @@ BOOST_AUTO_TEST_CASE(convert) BOOST_CHECK((unicode::convert("\u732b")) == std::wstring{L"\u732b"}); BOOST_CHECK((unicode::convert("\U0001F63A")) == std::wstring{L"\U0001F63A"}); BOOST_CHECK((unicode::convert(L"\U0001F63A")) == std::u32string{U"\U0001F63A"}); +#if (__cplusplus >= 202002L) BOOST_CHECK((unicode::convert(L"\U0001F63A")) == std::u8string{u8"\U0001F63A"}); - +#else + BOOST_CHECK((unicode::convert(L"\U0001F63A")) == std::string{"\U0001F63A"}); +#endif + BOOST_CHECK((unicode::convert(std::string{"äöü"})) == std::wstring{L"äöü"}); BOOST_CHECK((unicode::convert, std::vector>(std::vector{})) == std::vector{}); -- cgit v1.2.3