| 1 | /*============================================================================= |
| 2 | Copyright (c) 2018-2023 Nikita Kniazev |
| 3 | |
| 4 | Distributed under the Boost Software License, Version 1.0. (See accompanying |
| 5 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| 6 | =============================================================================*/ |
| 7 | #include <boost/spirit/home/x3/support/utility/utf8.hpp> |
| 8 | #include <boost/core/lightweight_test.hpp> |
| 9 | #include <string> |
| 10 | |
| 11 | static bool nowarn_constexpr(bool x) { return x; } |
| 12 | |
| 13 | int main() |
| 14 | { |
| 15 | using boost::spirit::x3::to_utf8; |
| 16 | using namespace std::string_literals; |
| 17 | |
| 18 | BOOST_TEST_CSTR_EQ("\xED\x9F\xBF" , to_utf8(0xD7FFul).c_str()); |
| 19 | BOOST_TEST_CSTR_EQ("\xEE\x80\x80" , to_utf8(0xE000ul).c_str()); |
| 20 | |
| 21 | if (nowarn_constexpr(x: sizeof(L"\u00FF" ) == 2)) |
| 22 | BOOST_TEST_CSTR_EQ("\xC3\xBF" , to_utf8(L"\u00FF" [0]).c_str()); |
| 23 | BOOST_TEST_CSTR_EQ("\xC3\xBF" , to_utf8(U'\u00FF').c_str()); |
| 24 | if (nowarn_constexpr(x: sizeof(L"\uFFE1" ) == 2)) |
| 25 | BOOST_TEST_CSTR_EQ("\xEF\xBF\xA1" , to_utf8(L"\uFFE1" [0]).c_str()); |
| 26 | BOOST_TEST_CSTR_EQ("\xEF\xBF\xA1" , to_utf8(U'\uFFE1').c_str()); |
| 27 | if (nowarn_constexpr(x: sizeof(L"\U0001F9D0" ) == 2)) |
| 28 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90" , to_utf8(L"\U0001F9D0" [0]).c_str()); |
| 29 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90" , to_utf8(U'\U0001F9D0').c_str()); |
| 30 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90\xF0\x9F\xA7\xA0" , to_utf8(L"\U0001F9D0\U0001F9E0" ).c_str()); |
| 31 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90\xF0\x9F\xA7\xA0" , to_utf8(U"\U0001F9D0\U0001F9E0" ).c_str()); |
| 32 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90\xF0\x9F\xA7\xA0" , to_utf8(L"\U0001F9D0\U0001F9E0"s ).c_str()); |
| 33 | BOOST_TEST_CSTR_EQ("\xF0\x9F\xA7\x90\xF0\x9F\xA7\xA0" , to_utf8(U"\U0001F9D0\U0001F9E0"s ).c_str()); |
| 34 | |
| 35 | return boost::report_errors(); |
| 36 | } |
| 37 | |