mirror of
				https://github.com/fmtlib/fmt.git
				synced 2025-10-28 04:31:44 +01:00 
			
		
		
		
	Pass buffer instead of writer to format_value
This commit is contained in:
		| @@ -265,12 +265,6 @@ TEST(WriterTest, Data) { | ||||
|   EXPECT_EQ("42", std::string(w.data(), w.size())); | ||||
| } | ||||
|  | ||||
| TEST(WriterTest, WriteWithoutArgs) { | ||||
|   MemoryWriter w; | ||||
|   w.format("test"); | ||||
|   EXPECT_EQ("test", std::string(w.data(), w.size())); | ||||
| } | ||||
|  | ||||
| TEST(WriterTest, WriteInt) { | ||||
|   CHECK_WRITE(42); | ||||
|   CHECK_WRITE(-42); | ||||
| @@ -476,20 +470,6 @@ TEST(WriterTest, PadWString) { | ||||
|   EXPECT_EQ(L"test******", write_wstr(L"test", width=10, fill=L'*')); | ||||
| } | ||||
|  | ||||
| TEST(WriterTest, Format) { | ||||
|   MemoryWriter w; | ||||
|   w.format("part{0}", 1); | ||||
|   EXPECT_EQ(strlen("part1"), w.size()); | ||||
|   EXPECT_STREQ("part1", w.c_str()); | ||||
|   EXPECT_STREQ("part1", w.data()); | ||||
|   EXPECT_EQ("part1", w.str()); | ||||
|   w.format("part{0}", 2); | ||||
|   EXPECT_EQ(strlen("part1part2"), w.size()); | ||||
|   EXPECT_STREQ("part1part2", w.c_str()); | ||||
|   EXPECT_STREQ("part1part2", w.data()); | ||||
|   EXPECT_EQ("part1part2", w.str()); | ||||
| } | ||||
|  | ||||
| TEST(WriterTest, WWriter) { | ||||
|   EXPECT_EQ(L"cafe", write_wstr(0xcafe, type='x')); | ||||
| } | ||||
| @@ -501,32 +481,43 @@ TEST(ArrayWriterTest, Ctor) { | ||||
|   EXPECT_STREQ("", w.c_str()); | ||||
| } | ||||
|  | ||||
| TEST(FormatToTest, FormatWithoutArgs) { | ||||
|   fmt::internal::MemoryBuffer<char> buffer; | ||||
|   format_to(buffer, "test"); | ||||
|   EXPECT_EQ("test", std::string(buffer.data(), buffer.size())); | ||||
| } | ||||
|  | ||||
| TEST(FormatToTest, Format) { | ||||
|   fmt::internal::MemoryBuffer<char> buffer; | ||||
|   format_to(buffer, "part{0}", 1); | ||||
|   EXPECT_EQ(strlen("part1"), buffer.size()); | ||||
|   EXPECT_EQ("part1", std::string(buffer.data(), buffer.size())); | ||||
|   format_to(buffer, "part{0}", 2); | ||||
|   EXPECT_EQ(strlen("part1part2"), buffer.size()); | ||||
|   EXPECT_EQ("part1part2", std::string(buffer.data(), buffer.size())); | ||||
|   EXPECT_EQ("part1part2", to_string(buffer)); | ||||
| } | ||||
|  | ||||
| TEST(ArrayWriterTest, CompileTimeSizeCtor) { | ||||
|   char array[10] = "garbage"; | ||||
|   fmt::ArrayWriter w(array); | ||||
|   EXPECT_EQ(0u, w.size()); | ||||
|   EXPECT_STREQ("", w.c_str()); | ||||
|   w.format("{:10}", 1); | ||||
| } | ||||
|  | ||||
| TEST(ArrayWriterTest, Write) { | ||||
|   char array[10]; | ||||
|   fmt::ArrayWriter w(array, sizeof(array)); | ||||
|   w.format("{}", 42); | ||||
|   EXPECT_EQ("42", w.str()); | ||||
|   format_to(w.buffer(), "{:10}", 1); | ||||
| } | ||||
|  | ||||
| TEST(ArrayWriterTest, BufferOverflow) { | ||||
|   char array[10]; | ||||
|   fmt::ArrayWriter w(array, sizeof(array)); | ||||
|   w.format("{:10}", 1); | ||||
|   EXPECT_THROW_MSG(w.format("{}", 1), std::runtime_error, "buffer overflow"); | ||||
|   format_to(w.buffer(), "{:10}", 1); | ||||
|   EXPECT_THROW_MSG(format_to(w.buffer(), "{}", 1), std::runtime_error, | ||||
|                    "buffer overflow"); | ||||
| } | ||||
|  | ||||
| TEST(ArrayWriterTest, WChar) { | ||||
|   wchar_t array[10]; | ||||
|   fmt::WArrayWriter w(array); | ||||
|   w.format(L"{}", 42); | ||||
|   format_to(w.buffer(), L"{}", 42); | ||||
|   EXPECT_EQ(L"42", w.str()); | ||||
| } | ||||
|  | ||||
| @@ -1366,12 +1357,8 @@ TEST(FormatterTest, FormatCStringRef) { | ||||
|   EXPECT_EQ("test", format("{0}", CStringRef("test"))); | ||||
| } | ||||
|  | ||||
| void format_value(fmt::writer &w, const Date &d, fmt::context &) { | ||||
|   w.write(d.year()); | ||||
|   w.write('-'); | ||||
|   w.write(d.month()); | ||||
|   w.write('-'); | ||||
|   w.write(d.day()); | ||||
| void format_value(fmt::buffer &buf, const Date &d, fmt::context &) { | ||||
|   fmt::format_to(buf, "{}-{}-{}", d.year(), d.month(), d.day()); | ||||
| } | ||||
|  | ||||
| TEST(FormatterTest, FormatCustom) { | ||||
| @@ -1383,8 +1370,8 @@ TEST(FormatterTest, FormatCustom) { | ||||
| class Answer {}; | ||||
|  | ||||
| template <typename Char> | ||||
| void format_value(basic_writer<Char> &w, Answer, fmt::context &) { | ||||
|   w.write("42"); | ||||
| void format_value(fmt::basic_buffer<Char> &buf, Answer, fmt::context &) { | ||||
|   fmt::format_to(buf, "{}", 42); | ||||
| } | ||||
|  | ||||
| TEST(FormatterTest, CustomFormat) { | ||||
| @@ -1417,13 +1404,11 @@ TEST(FormatterTest, FormatExamples) { | ||||
|   out.write("The answer is "); | ||||
|   out.write(42); | ||||
|   out.write("\n"); | ||||
|   out.format("({:+f}, {:+f})", -3.14, 3.14); | ||||
|   EXPECT_EQ("The answer is 42\n(-3.140000, +3.140000)", out.str()); | ||||
|  | ||||
|   { | ||||
|     MemoryWriter writer; | ||||
|     for (int i = 0; i < 10; i++) | ||||
|       writer.format("{}", i); | ||||
|       format_to(writer.buffer(), "{}", i); | ||||
|     std::string s = writer.str(); // s == 0123456789 | ||||
|     EXPECT_EQ("0123456789", s); | ||||
|   } | ||||
| @@ -1567,10 +1552,10 @@ TEST(StrTest, Convert) { | ||||
| } | ||||
|  | ||||
| std::string vformat_message(int id, const char *format, fmt::args args) { | ||||
|   MemoryWriter w; | ||||
|   w.format("[{}] ", id); | ||||
|   w.vformat(format, args); | ||||
|   return w.str(); | ||||
|   fmt::internal::MemoryBuffer<char> buffer; | ||||
|   format_to(buffer, "[{}] ", id); | ||||
|   vformat_to(buffer, format, args); | ||||
|   return to_string(buffer); | ||||
| } | ||||
|  | ||||
| template <typename... Args> | ||||
| @@ -1643,9 +1628,9 @@ class MockArgFormatter : public fmt::internal::ArgFormatterBase<char> { | ||||
|  public: | ||||
|   typedef fmt::internal::ArgFormatterBase<char> Base; | ||||
|  | ||||
|   MockArgFormatter(fmt::writer &w, fmt::context &ctx, | ||||
|   MockArgFormatter(fmt::buffer &b, fmt::context &ctx, | ||||
|                    fmt::format_specs &s) | ||||
|     : fmt::internal::ArgFormatterBase<char>(w, s) { | ||||
|     : fmt::internal::ArgFormatterBase<char>(b, s) { | ||||
|     EXPECT_CALL(*this, call(42)); | ||||
|   } | ||||
|  | ||||
| @@ -1657,8 +1642,8 @@ class MockArgFormatter : public fmt::internal::ArgFormatterBase<char> { | ||||
| }; | ||||
|  | ||||
| void custom_vformat(fmt::CStringRef format_str, fmt::args args) { | ||||
|   fmt::MemoryWriter writer; | ||||
|   fmt::vwrite<MockArgFormatter>(writer, format_str, args); | ||||
|   fmt::internal::MemoryBuffer<char> buffer; | ||||
|   fmt::vformat_to<MockArgFormatter>(buffer, format_str, args); | ||||
| } | ||||
|  | ||||
| template <typename... Args> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user