Test error reporting in UTF8ToUTF16.

This commit is contained in:
Victor Zverovich 2014-05-01 07:13:42 -07:00
parent dcd039df81
commit 73d98d5d17

View File

@ -238,20 +238,6 @@ TEST(UtilTest, UTF16ToUTF8) {
EXPECT_EQ(s.size(), u.size()); EXPECT_EQ(s.size(), u.size());
} }
TEST(UtilTest, UTF16ToUTF8Error) {
fmt::Writer message;
fmt::internal::FormatWinErrorMessage(message,
ERROR_INVALID_PARAMETER, "cannot convert string from UTF-16 to UTF-8");
fmt::SystemError error("", 0);
try {
fmt::internal::UTF16ToUTF8 u(0);
} catch (const fmt::SystemError &e) {
error = e;
}
EXPECT_EQ(ERROR_INVALID_PARAMETER, error.error_code());
EXPECT_EQ(message.str(), error.what());
}
TEST(UtilTest, UTF8ToUTF16) { TEST(UtilTest, UTF8ToUTF16) {
std::string s = "лошадка"; std::string s = "лошадка";
fmt::internal::UTF8ToUTF16 u(s.c_str()); fmt::internal::UTF8ToUTF16 u(s.c_str());
@ -259,6 +245,30 @@ TEST(UtilTest, UTF8ToUTF16) {
EXPECT_EQ(7, u.size()); EXPECT_EQ(7, u.size());
} }
template <typename Converter>
void CheckUTFConversionError(const char *message) {
fmt::Writer out;
fmt::internal::FormatWinErrorMessage(out, ERROR_INVALID_PARAMETER, message);
fmt::SystemError error("", 0);
try {
Converter(0);
} catch (const fmt::SystemError &e) {
error = e;
}
EXPECT_EQ(ERROR_INVALID_PARAMETER, error.error_code());
EXPECT_EQ(out.str(), error.what());
}
TEST(UtilTest, UTF16ToUTF8Error) {
CheckUTFConversionError<fmt::internal::UTF16ToUTF8>(
"cannot convert string from UTF-16 to UTF-8");
}
TEST(UtilTest, UTF8ToUTF16Error) {
CheckUTFConversionError<fmt::internal::UTF8ToUTF16>(
"cannot convert string from UTF-8 to UTF-16");
}
// TODO: test UTF16ToUTF8::Convert // TODO: test UTF16ToUTF8::Convert
#endif // _WIN32 #endif // _WIN32