Improve handling of back_insert_iterator that writes into a buffer

This commit is contained in:
Victor Zverovich
2024-07-13 07:23:02 -07:00
parent 6a192f8d34
commit 33e7ed1eb5
2 changed files with 40 additions and 3 deletions

View File

@@ -114,7 +114,7 @@ TEST(base_test, is_back_insert_iterator) {
TEST(base_test, buffer_appender) {
#ifdef __cpp_lib_ranges
static_assert(std::output_iterator<fmt::appender, char>);
EXPECT_TRUE((std::output_iterator<fmt::appender, char>));
#endif
}
@@ -268,6 +268,16 @@ TEST(buffer_test, append_allocates_enough_storage) {
buffer.append(test, test + 9);
}
TEST(base_test, get_buffer) {
mock_buffer<char> buffer;
void* buffer_ptr = &buffer;
auto&& appender_result = fmt::detail::get_buffer<char>(fmt::appender(buffer));
EXPECT_EQ(&appender_result, buffer_ptr);
auto&& back_inserter_result =
fmt::detail::get_buffer<char>(std::back_inserter(buffer));
EXPECT_EQ(&back_inserter_result, buffer_ptr);
}
struct custom_context {
using char_type = char;
using parse_context_type = fmt::format_parse_context;