1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-24 04:01:07 +03:00

Make a ChainedByteRange (build fixes included)

Reviewed By: mjoras

Differential Revision: D59473502

fbshipit-source-id: 30bb72fb5e07d12d9574a39fbeb9b8d3e76b36e6
This commit is contained in:
Aman Sharma
2024-07-09 10:52:57 -07:00
committed by Facebook GitHub Bot
parent 916fe09268
commit 987475eb44
9 changed files with 975 additions and 0 deletions

View File

@@ -561,3 +561,61 @@ TEST(BufWriterTest, TwoWriters) {
EXPECT_EQ(15, outputBuffer->length());
EXPECT_EQ("Destroyer Saint", reader.readFixedString(outputBuffer->length()));
}
TEST(BufWriterTest, InsertSingleByteChainedRange) {
auto testBuffer = folly::IOBuf::create(100);
BufWriter writer(*testBuffer, 100);
auto inputBuffer =
folly::IOBuf::copyBuffer("Steady on dreaming, I sleepwalk");
auto len = inputBuffer->computeChainDataLength();
ChainedByteRangeHead cbrh(inputBuffer);
writer.insert(&cbrh);
folly::io::Cursor reader(testBuffer.get());
EXPECT_EQ(
inputBuffer->computeChainDataLength(),
testBuffer->computeChainDataLength());
EXPECT_EQ(inputBuffer->to<string>(), reader.readFixedString(len));
}
TEST(BufWriterTest, InsertZeroLen) {
auto testBuffer = folly::IOBuf::create(100);
BufWriter writer(*testBuffer, 100);
auto inputBuffer = folly::IOBuf::copyBuffer("");
ChainedByteRangeHead cbrh(inputBuffer);
writer.insert(&cbrh);
folly::io::Cursor reader(testBuffer.get());
EXPECT_EQ(testBuffer->computeChainDataLength(), 0);
}
TEST(BufWriterTest, InsertSingleByteChainedRangeWithLimit) {
auto testBuffer = folly::IOBuf::create(100);
BufWriter writer(*testBuffer, 100);
auto inputBuffer =
folly::IOBuf::copyBuffer("Steady on dreaming, I sleepwalk");
ChainedByteRangeHead cbrh(inputBuffer);
writer.insert(&cbrh, 10);
folly::io::Cursor reader(testBuffer.get());
EXPECT_EQ(testBuffer->computeChainDataLength(), 10);
EXPECT_EQ("Steady on ", reader.readFixedString(10));
}
TEST(BufWriterTest, InsertChainByteChainedRange) {
auto testBuffer = folly::IOBuf::create(1000);
BufWriter writer(*testBuffer, 1000);
auto inputBuffer =
folly::IOBuf::copyBuffer("Cause I lost you and now what am i to do?");
inputBuffer->prependChain(
folly::IOBuf::copyBuffer(" Can't believe that we are through."));
inputBuffer->prependChain(
folly::IOBuf::copyBuffer(" While the memory of you linger like a song."));
auto len = inputBuffer->computeChainDataLength();
ChainedByteRangeHead cbrh(inputBuffer);
writer.insert(&cbrh);
folly::io::Cursor reader(testBuffer.get());
EXPECT_EQ(testBuffer->computeChainDataLength(), len);
EXPECT_EQ(
"Cause I lost you and now what am i to do?"
" Can't believe that we are through."
" While the memory of you linger like a song.",
reader.readFixedString(len));
}