41 std::wstring utf16_jojo = wstring::from_utf8(jojo);
42 EXPECT_EQ(utf16_jojo.size(), wide_jojo.size());
43 EXPECT_TRUE(utf16_jojo == wide_jojo);
45 std::wstring utf16_lev = wstring::from_utf8(lev);
46 EXPECT_EQ(utf16_lev.size(), wide_lev.size());
47 EXPECT_TRUE(utf16_lev == wide_lev);
49 std::wstring utf16_shigeru = wstring::from_utf8(shigeru);
50 EXPECT_EQ(utf16_shigeru.size(), wide_shigeru.size());
51 EXPECT_TRUE(utf16_shigeru == wide_shigeru);
56 std::string utf8_jojo = wstring::to_utf8(wide_jojo);
57 EXPECT_EQ(utf8_jojo.size(), jojo.size());
58 EXPECT_TRUE(utf8_jojo == jojo);
60 std::string utf8_lev = wstring::to_utf8(wide_lev);
61 EXPECT_EQ(utf8_lev.size(), lev.size());
62 EXPECT_TRUE(utf8_lev == lev);
64 std::string utf8_shigeru = wstring::to_utf8(wide_shigeru);
65 EXPECT_EQ(utf8_shigeru.size(), shigeru.size());
66 EXPECT_TRUE(utf8_shigeru == shigeru);
71 std::vector<std::string> names{jojo, lev, shigeru};
72 std::wstring multi_names = wstring::pack_string_vector(names);
73 const auto jojo_ptr = multi_names.data();
74 const auto lev_ptr = multi_names.data() + raw_jojo.size();
75 const auto shigeru_ptr = multi_names.data() + raw_jojo.size() + raw_lev.size();
76 EXPECT_EQ(multi_names.size(), raw_jojo.size() + raw_lev.size() + raw_shigeru.size() + 1);
77 EXPECT_TRUE(std::memcmp(jojo_ptr, wide_jojo.c_str(), raw_jojo.size()) == 0);
78 EXPECT_TRUE(std::memcmp(lev_ptr, wide_lev.c_str(), raw_lev.size()) == 0);
79 EXPECT_TRUE(std::memcmp(shigeru_ptr, wide_shigeru.c_str(), raw_shigeru.size()) == 0);
80 EXPECT_EQ(multi_names[multi_names.size()], L
'\0');