diff --git a/tests/fragmented_temporary_buffer_test.cc b/tests/fragmented_temporary_buffer_test.cc index 15dc7240da..926971056e 100644 --- a/tests/fragmented_temporary_buffer_test.cc +++ b/tests/fragmented_temporary_buffer_test.cc @@ -410,4 +410,26 @@ SEASTAR_THREAD_TEST_CASE(test_read_fragmented_buffer) { in.close().get(); } +} + +SEASTAR_THREAD_TEST_CASE(test_skip) { + auto test = [&] (auto expected_value1, auto expected_value2, fragmented_temporary_buffer& ftb) { + using type1 = std::decay_t; + using type2 = std::decay_t; + + auto in = ftb.get_istream(); + BOOST_CHECK_EQUAL(in.bytes_left(), sizeof(type1) + sizeof(type2)); + in.skip(sizeof(type1)); + BOOST_CHECK_EQUAL(in.bytes_left(), sizeof(type2)); + BOOST_CHECK_EQUAL(in.read(), expected_value2); + BOOST_CHECK_EQUAL(in.bytes_left(), 0); + in.skip(sizeof(type2)); + BOOST_CHECK_EQUAL(in.bytes_left(), 0); + }; + + auto [ buffers, value1, value2 ] = get_buffers(); + for (auto& frag_buffer : buffers) { + test(value1, value2, frag_buffer); + } +} } \ No newline at end of file