mirror of
https://github.com/nghttp2/nghttp2.git
synced 2025-12-07 18:48:54 +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_riovec),
|
||||||
munit_void_test(test_memchunks_recycle),
|
munit_void_test(test_memchunks_recycle),
|
||||||
munit_void_test(test_memchunks_reset),
|
munit_void_test(test_memchunks_reset),
|
||||||
|
munit_void_test(test_memchunks_reserve),
|
||||||
munit_void_test(test_memchunkbuffer_drain_reset),
|
munit_void_test(test_memchunkbuffer_drain_reset),
|
||||||
munit_test_end(),
|
munit_test_end(),
|
||||||
};
|
};
|
||||||
@@ -239,6 +240,45 @@ void test_memchunks_reset(void) {
|
|||||||
assert_null(m->next->next);
|
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) {
|
void test_memchunkbuffer_drain_reset(void) {
|
||||||
MemchunkPool16 pool;
|
MemchunkPool16 pool;
|
||||||
MemchunkBuffer16 buf(&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_riovec)
|
||||||
munit_void_test_decl(test_memchunks_recycle)
|
munit_void_test_decl(test_memchunks_recycle)
|
||||||
munit_void_test_decl(test_memchunks_reset)
|
munit_void_test_decl(test_memchunks_reset)
|
||||||
|
munit_void_test_decl(test_memchunks_reserve)
|
||||||
munit_void_test_decl(test_memchunkbuffer_drain_reset)
|
munit_void_test_decl(test_memchunkbuffer_drain_reset)
|
||||||
|
|
||||||
} // namespace nghttp2
|
} // namespace nghttp2
|
||||||
|
|||||||
Reference in New Issue
Block a user