int main() { typedef std::codecvt_utf8<wchar_t> Codecvt; typedef std::wstring_convert<Codecvt> Myconv; #if TEST_STD_VER > 11 static_assert(!std::is_convertible<std::string, Myconv>::value, ""); static_assert( std::is_constructible<Myconv, std::string>::value, ""); #endif #ifndef TEST_HAS_NO_EXCEPTIONS { Myconv myconv; try { myconv.to_bytes(L"\xDA83"); assert(false); } catch (const std::range_error&) { } try { myconv.from_bytes('\xA5'); assert(false); } catch (const std::range_error&) { } } #endif { Myconv myconv("byte error"); std::string bs = myconv.to_bytes(L"\xDA83"); assert(bs == "byte error"); #ifndef TEST_HAS_NO_EXCEPTIONS try { myconv.from_bytes('\xA5'); assert(false); } catch (const std::range_error&) { } #endif } { Myconv myconv("byte error", L"wide error"); std::string bs = myconv.to_bytes(L"\xDA83"); assert(bs == "byte error"); std::wstring ws = myconv.from_bytes('\xA5'); assert(ws == L"wide error"); } }
void TestHelper<CharT, 4>::test() { static_assert((std::is_same<CharT, wchar_t>::value), ""); { typedef std::codecvt_utf8<CharT> Codecvt; typedef std::wstring_convert<Codecvt> Myconv; Myconv myconv; assert(myconv.converted() == 0); std::string bs = myconv.to_bytes(L"\x40003"); assert(myconv.converted() == 1); bs = myconv.to_bytes(L"\x40003\x65"); assert(myconv.converted() == 2); std::wstring ws = myconv.from_bytes("\xF1\x80\x80\x83"); assert(myconv.converted() == 4); } }