mirror of
https://github.com/nghttp2/nghttp2.git
synced 2025-12-06 18:18:52 +08:00
Add test for Memchunks::reserve
This commit is contained in:
@@ -43,6 +43,7 @@ const MunitTest tests[]{
|
||||
munit_void_test(test_memchunks_riovec),
|
||||
munit_void_test(test_memchunks_recycle),
|
||||
munit_void_test(test_memchunks_reset),
|
||||
munit_void_test(test_memchunks_reserve),
|
||||
munit_void_test(test_memchunkbuffer_drain_reset),
|
||||
munit_test_end(),
|
||||
};
|
||||
@@ -239,6 +240,45 @@ void test_memchunks_reset(void) {
|
||||
assert_null(m->next->next);
|
||||
}
|
||||
|
||||
void test_memchunks_reserve(void) {
|
||||
MemchunkPool16 pool;
|
||||
Memchunks16 chunks(&pool);
|
||||
std::array<iovec, 2> iov;
|
||||
|
||||
chunks.reserve(8);
|
||||
chunks.last(std::ranges::copy("foobar00"sv, chunks.last()).out);
|
||||
|
||||
assert_size(8, ==, chunks.rleft());
|
||||
|
||||
auto iovcnt = chunks.riovec(iov.data(), iov.size());
|
||||
|
||||
assert_int(1, ==, iovcnt);
|
||||
assert_stdsv_equal(
|
||||
"foobar00"sv,
|
||||
(std::string_view{reinterpret_cast<const char *>(iov[0].iov_base),
|
||||
iov[0].iov_len}));
|
||||
|
||||
chunks.reset();
|
||||
|
||||
chunks.append("012345678"sv);
|
||||
chunks.reserve(8);
|
||||
chunks.last(std::ranges::copy("foobar00"sv, chunks.last()).out);
|
||||
|
||||
assert_size(17, ==, chunks.rleft());
|
||||
|
||||
iovcnt = chunks.riovec(iov.data(), iov.size());
|
||||
|
||||
assert_int(2, ==, iovcnt);
|
||||
assert_stdsv_equal(
|
||||
"012345678"sv,
|
||||
(std::string_view{reinterpret_cast<const char *>(iov[0].iov_base),
|
||||
iov[0].iov_len}));
|
||||
assert_stdsv_equal(
|
||||
"foobar00"sv,
|
||||
(std::string_view{reinterpret_cast<const char *>(iov[1].iov_base),
|
||||
iov[1].iov_len}));
|
||||
}
|
||||
|
||||
void test_memchunkbuffer_drain_reset(void) {
|
||||
MemchunkPool16 pool;
|
||||
MemchunkBuffer16 buf(&pool);
|
||||
|
||||
@@ -43,6 +43,7 @@ munit_void_test_decl(test_memchunks_drain)
|
||||
munit_void_test_decl(test_memchunks_riovec)
|
||||
munit_void_test_decl(test_memchunks_recycle)
|
||||
munit_void_test_decl(test_memchunks_reset)
|
||||
munit_void_test_decl(test_memchunks_reserve)
|
||||
munit_void_test_decl(test_memchunkbuffer_drain_reset)
|
||||
|
||||
} // namespace nghttp2
|
||||
|
||||
Reference in New Issue
Block a user