blob: b4c5e510fd946c9660a7a32828a8223570f3770e [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
#include "net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test_mem_slice_vector.h"
namespace quic {
namespace test {
namespace {
class QuicMemSliceSpanImplTest : public QuicTest {
public:
QuicMemSliceSpanImplTest() {
for (size_t i = 0; i < 10; ++i) {
buffers_.push_back(std::make_pair(data_, 1024));
}
}
char data_[1024];
std::vector<std::pair<char*, size_t>> buffers_;
};
TEST_F(QuicMemSliceSpanImplTest, SaveDataInSendBuffer) {
SimpleBufferAllocator allocator;
QuicStreamSendBuffer send_buffer(&allocator);
QuicTestMemSliceVector vector(buffers_);
EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
EXPECT_EQ(10u, send_buffer.size());
}
TEST_F(QuicMemSliceSpanImplTest, SaveEmptyMemSliceInSendBuffer) {
SimpleBufferAllocator allocator;
QuicStreamSendBuffer send_buffer(&allocator);
buffers_.push_back(std::make_pair(nullptr, 0));
QuicTestMemSliceVector vector(buffers_);
EXPECT_EQ(10 * 1024u, vector.span().SaveMemSlicesInSendBuffer(&send_buffer));
// Verify the empty slice does not get saved.
EXPECT_EQ(10u, send_buffer.size());
}
} // namespace
} // namespace test
} // namespace quic