mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
fix: [imp] codecvt in win
This commit is contained in:
parent
d55d9f549f
commit
d15181fa49
@ -5,27 +5,22 @@
|
|||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
#include "libimp/codecvt.h"
|
#include "libimp/codecvt.h"
|
||||||
#include "libimp/countof.h"
|
|
||||||
|
|
||||||
TEST(codecvt, cvt_cstr) {
|
TEST(codecvt, cvt_cstr) {
|
||||||
char const *utf8 = "hello world, "
|
char const utf8[] = "hello world, 你好,こんにちは";
|
||||||
"\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc"
|
wchar_t const utf16[] = L"hello world, 你好,こんにちは";
|
||||||
"\x8c\xe3\x81\x93\xe3\x82\x93\xe3"
|
|
||||||
"\x81\xab\xe3\x81\xa1\xe3\x81\xaf";
|
|
||||||
char16_t const utf16[] = u"hello world, "
|
|
||||||
"\u4f60\u597d\uff0c\u3053\u3093\u306b\u3061\u306f";
|
|
||||||
{
|
{
|
||||||
auto cvt_len = imp::cvt_cstr(utf8, std::strlen(utf8), (char16_t *)nullptr, 0);
|
auto cvt_len = imp::cvt_cstr(utf8, std::strlen(utf8), (wchar_t *)nullptr, 0);
|
||||||
EXPECT_NE(cvt_len, 0);
|
EXPECT_NE(cvt_len, 0);
|
||||||
std::u16string wstr(cvt_len, L'\0');
|
std::wstring wstr(cvt_len, L'\0');
|
||||||
EXPECT_EQ(imp::cvt_cstr(utf8, std::strlen(utf8), &wstr[0], wstr.size()), cvt_len);
|
EXPECT_EQ(imp::cvt_cstr(utf8, std::strlen(utf8), &wstr[0], wstr.size()), cvt_len);
|
||||||
EXPECT_EQ(wstr, utf16);
|
EXPECT_EQ(wstr, utf16);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto cvt_len = imp::cvt_cstr(utf16, imp::countof(utf16) - 1, (char *)nullptr, 0);
|
auto cvt_len = imp::cvt_cstr(utf16, std::wcslen(utf16), (char *)nullptr, 0);
|
||||||
EXPECT_NE(cvt_len, 0);
|
EXPECT_NE(cvt_len, 0);
|
||||||
std::string str(cvt_len, '\0');
|
std::string str(cvt_len, '\0');
|
||||||
EXPECT_EQ(imp::cvt_cstr(utf16, imp::countof(utf16) - 1, &str[0], str.size()), cvt_len);
|
EXPECT_EQ(imp::cvt_cstr(utf16, std::wcslen(utf16), &str[0], str.size()), cvt_len);
|
||||||
EXPECT_EQ(str, utf8);
|
EXPECT_EQ(str, utf8);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -36,9 +31,9 @@ TEST(codecvt, cvt_cstr) {
|
|||||||
EXPECT_EQ(str, utf8);
|
EXPECT_EQ(str, utf8);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto cvt_len = imp::cvt_cstr(utf16, imp::countof(utf16) - 1, (char16_t *)nullptr, 0);
|
auto cvt_len = imp::cvt_cstr(utf16, std::wcslen(utf16), (wchar_t *)nullptr, 0);
|
||||||
EXPECT_EQ(cvt_len, imp::countof(utf16) - 1);
|
EXPECT_EQ(cvt_len, std::wcslen(utf16));
|
||||||
std::u16string wstr(cvt_len, u'\0');
|
std::wstring wstr(cvt_len, u'\0');
|
||||||
EXPECT_EQ(imp::cvt_cstr(utf16, cvt_len, &wstr[0], wstr.size()), cvt_len);
|
EXPECT_EQ(imp::cvt_cstr(utf16, cvt_len, &wstr[0], wstr.size()), cvt_len);
|
||||||
EXPECT_EQ(wstr, utf16);
|
EXPECT_EQ(wstr, utf16);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user