mirror of
https://github.com/fmtlib/fmt.git
synced 2024-11-02 20:32:49 +00:00
Test and fix compiled format_to_n and formatted_size
This commit is contained in:
parent
4070c1d80b
commit
a5f470eb10
@ -553,16 +553,15 @@ format_to_n_result<OutputIt> format_to_n(OutputIt out, size_t n,
|
||||
const CompiledFormat& cf,
|
||||
const Args&... args) {
|
||||
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()};
|
||||
}
|
||||
|
||||
template <typename CompiledFormat, typename... Args>
|
||||
std::size_t formatted_size(const CompiledFormat& cf, const Args&... args) {
|
||||
return cf
|
||||
.format_to(
|
||||
internal::counting_iterator<typename CompiledFormat::char_type>(),
|
||||
args...)
|
||||
return fmt::format_to(
|
||||
internal::counting_iterator<typename CompiledFormat::char_type>(),
|
||||
cf, args...)
|
||||
.count();
|
||||
}
|
||||
|
||||
|
@ -505,13 +505,16 @@ TEST(CompileTest, FormatToIterator) {
|
||||
EXPECT_EQ(L"42", ws);
|
||||
}
|
||||
|
||||
TEST(CompileTest, FormatToBackInserter) {
|
||||
std::string s;
|
||||
const auto prepared = fmt::compile<int>("4{}");
|
||||
fmt::format_to(std::back_inserter(s), prepared, 2);
|
||||
EXPECT_EQ("42", s);
|
||||
std::wstring ws;
|
||||
const auto wprepared = fmt::compile<int>(L"4{}");
|
||||
fmt::format_to(std::back_inserter(ws), wprepared, 2);
|
||||
EXPECT_EQ(L"42", ws);
|
||||
TEST(CompileTest, FormatToN) {
|
||||
char buf[5];
|
||||
auto f = fmt::compile<int>("{:10}");
|
||||
auto result = fmt::format_to_n(buf, 5, f, 42);
|
||||
EXPECT_EQ(result.size, 10);
|
||||
EXPECT_EQ(result.out, buf + 5);
|
||||
EXPECT_EQ(fmt::string_view(buf, 5), " ");
|
||||
}
|
||||
|
||||
TEST(CompileTest, FormattedSize) {
|
||||
auto f = fmt::compile<int>("{:10}");
|
||||
EXPECT_EQ(fmt::formatted_size(f, 42), 10);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user