blob: 06fc94df367a5c9b599fb49cf3ed6ded8f893082 [file] [log] [blame]
QUICHE team82dee2f2019-01-18 12:35:12 -05001// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/third_party/quiche/src/spdy/core/array_output_buffer.h"
6
QUICHE teamf3c80c92020-02-12 09:47:55 -08007#include "net/third_party/quiche/src/common/platform/api/quiche_test.h"
QUICHE team82dee2f2019-01-18 12:35:12 -05008
9namespace spdy {
10namespace test {
11
12// This test verifies that ArrayOutputBuffer is initialized properly.
13TEST(ArrayOutputBufferTest, InitializedFromArray) {
14 char array[100];
15 ArrayOutputBuffer buffer(array, sizeof(array));
16 EXPECT_EQ(sizeof(array), buffer.BytesFree());
17 EXPECT_EQ(0u, buffer.Size());
18 EXPECT_EQ(array, buffer.Begin());
19}
20
21// This test verifies that Reset() causes an ArrayOutputBuffer's capacity and
22// size to be reset to the initial state.
23TEST(ArrayOutputBufferTest, WriteAndReset) {
24 char array[100];
25 ArrayOutputBuffer buffer(array, sizeof(array));
26
27 // Let's write some bytes.
28 char* dst;
29 int size;
30 buffer.Next(&dst, &size);
31 ASSERT_GT(size, 1);
32 ASSERT_NE(nullptr, dst);
33 const int64_t written = size / 2;
34 memset(dst, 'x', written);
35 buffer.AdvanceWritePtr(written);
36
37 // The buffer should be partially used.
38 EXPECT_EQ(static_cast<uint64_t>(size) - written, buffer.BytesFree());
39 EXPECT_EQ(static_cast<uint64_t>(written), buffer.Size());
40
41 buffer.Reset();
42
43 // After a reset, the buffer should regain its full capacity.
44 EXPECT_EQ(sizeof(array), buffer.BytesFree());
45 EXPECT_EQ(0u, buffer.Size());
46}
47
48} // namespace test
49} // namespace spdy