#define BOOST_TEST_MODULE unicode_test #include #include #include BOOST_AUTO_TEST_CASE(utf8_to_utf16) { std::u8string u8{u8"ascii string1"}; std::u16string u16{unicode::utf8_to_utf16(u8)}; BOOST_CHECK(u16 == u"ascii string1"); } // TODO: // invalid bytes // an unexpected continuation byte // a non-continuation byte before the end of the character // the string ending before the end of the character (which can happen in simple string truncation) // an overlong encoding // a sequence that decodes to an invalid code point // // high and low surrogate halves used by UTF-16 (U+D800 through U+DFFF) and code points not encodable by UTF-16 (those after U+10FFFF)