mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-21 18:20:04 +00:00
Add support for code units > 0xFFFF in fill
This commit is contained in:
parent
58c185b634
commit
601be1cbe7
@ -800,7 +800,8 @@ class basic_specs {
|
|||||||
template <typename Char> constexpr auto fill_unit() const -> Char {
|
template <typename Char> constexpr auto fill_unit() const -> Char {
|
||||||
using uchar = unsigned char;
|
using uchar = unsigned char;
|
||||||
return static_cast<Char>(static_cast<uchar>(fill_data_[0]) |
|
return static_cast<Char>(static_cast<uchar>(fill_data_[0]) |
|
||||||
(static_cast<uchar>(fill_data_[1]) << 8));
|
(static_cast<uchar>(fill_data_[1]) << 8) |
|
||||||
|
(static_cast<uchar>(fill_data_[2]) << 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
FMT_CONSTEXPR void set_fill(char c) {
|
FMT_CONSTEXPR void set_fill(char c) {
|
||||||
@ -816,6 +817,7 @@ class basic_specs {
|
|||||||
unsigned uchar = static_cast<detail::unsigned_char<Char>>(s[0]);
|
unsigned uchar = static_cast<detail::unsigned_char<Char>>(s[0]);
|
||||||
fill_data_[0] = static_cast<char>(uchar);
|
fill_data_[0] = static_cast<char>(uchar);
|
||||||
fill_data_[1] = static_cast<char>(uchar >> 8);
|
fill_data_[1] = static_cast<char>(uchar >> 8);
|
||||||
|
fill_data_[2] = static_cast<char>(uchar >> 16);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FMT_ASSERT(size <= max_fill_size, "invalid fill");
|
FMT_ASSERT(size <= max_fill_size, "invalid fill");
|
||||||
|
@ -72,16 +72,17 @@ TEST(xchar_test, format_explicitly_convertible_to_wstring_view) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
TEST(xchar_test, format) {
|
TEST(xchar_test, format) {
|
||||||
EXPECT_EQ(L"42", fmt::format(L"{}", 42));
|
EXPECT_EQ(fmt::format(L"{}", 42), L"42");
|
||||||
EXPECT_EQ(L"4.2", fmt::format(L"{}", 4.2));
|
EXPECT_EQ(fmt::format(L"{}", 4.2), L"4.2");
|
||||||
EXPECT_EQ(L"abc", fmt::format(L"{}", L"abc"));
|
EXPECT_EQ(fmt::format(L"{}", L"abc"), L"abc");
|
||||||
EXPECT_EQ(L"z", fmt::format(L"{}", L'z'));
|
EXPECT_EQ(fmt::format(L"{}", L'z'), L"z");
|
||||||
EXPECT_THROW(fmt::format(fmt::runtime(L"{:*\x343E}"), 42), fmt::format_error);
|
EXPECT_THROW(fmt::format(fmt::runtime(L"{:*\x343E}"), 42), fmt::format_error);
|
||||||
EXPECT_EQ(L"true", fmt::format(L"{}", true));
|
EXPECT_EQ(fmt::format(L"{}", true), L"true");
|
||||||
EXPECT_EQ(L"a", fmt::format(L"{0}", L'a'));
|
EXPECT_EQ(fmt::format(L"{0}", L'a'), L"a");
|
||||||
EXPECT_EQ(L"Cyrillic letter \x42e",
|
EXPECT_EQ(fmt::format(L"Letter {}", L'\x40e'), L"Letter \x40e"); // Ў
|
||||||
fmt::format(L"Cyrillic letter {}", L'\x42e'));
|
if (sizeof(wchar_t) == 4)
|
||||||
EXPECT_EQ(L"abc1", fmt::format(L"{}c{}", L"ab", 1));
|
EXPECT_EQ(fmt::format(fmt::runtime(L"{:𓀨>3}"), 42), L"𓀨42");
|
||||||
|
EXPECT_EQ(fmt::format(L"{}c{}", L"ab", 1), L"abc1");
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(xchar_test, is_formattable) {
|
TEST(xchar_test, is_formattable) {
|
||||||
|
Loading…
Reference in New Issue
Block a user