Commit a5f470eb authored by Victor Zverovich's avatar Victor Zverovich

Test and fix compiled format_to_n and formatted_size

parent 4070c1d8
...@@ -553,16 +553,15 @@ format_to_n_result<OutputIt> format_to_n(OutputIt out, size_t n, ...@@ -553,16 +553,15 @@ format_to_n_result<OutputIt> format_to_n(OutputIt out, size_t n,
const CompiledFormat& cf, const CompiledFormat& cf,
const Args&... args) { const Args&... args) {
auto it = auto it =
cf.format_to(internal::truncating_iterator<OutputIt>(out, n), args...); format_to(internal::truncating_iterator<OutputIt>(out, n), cf, args...);
return {it.base(), it.count()}; return {it.base(), it.count()};
} }
template <typename CompiledFormat, typename... Args> template <typename CompiledFormat, typename... Args>
std::size_t formatted_size(const CompiledFormat& cf, const Args&... args) { std::size_t formatted_size(const CompiledFormat& cf, const Args&... args) {
return cf return fmt::format_to(
.format_to(
internal::counting_iterator<typename CompiledFormat::char_type>(), internal::counting_iterator<typename CompiledFormat::char_type>(),
args...) cf, args...)
.count(); .count();
} }
......
...@@ -505,13 +505,16 @@ TEST(CompileTest, FormatToIterator) { ...@@ -505,13 +505,16 @@ TEST(CompileTest, FormatToIterator) {
EXPECT_EQ(L"42", ws); EXPECT_EQ(L"42", ws);
} }
TEST(CompileTest, FormatToBackInserter) { TEST(CompileTest, FormatToN) {
std::string s; char buf[5];
const auto prepared = fmt::compile<int>("4{}"); auto f = fmt::compile<int>("{:10}");
fmt::format_to(std::back_inserter(s), prepared, 2); auto result = fmt::format_to_n(buf, 5, f, 42);
EXPECT_EQ("42", s); EXPECT_EQ(result.size, 10);
std::wstring ws; EXPECT_EQ(result.out, buf + 5);
const auto wprepared = fmt::compile<int>(L"4{}"); EXPECT_EQ(fmt::string_view(buf, 5), " ");
fmt::format_to(std::back_inserter(ws), wprepared, 2); }
EXPECT_EQ(L"42", ws);
TEST(CompileTest, FormattedSize) {
auto f = fmt::compile<int>("{:10}");
EXPECT_EQ(fmt::formatted_size(f, 42), 10);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment