blob: aac657a1feed229651ef5c90f6c2d83353698abb [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
danzh8f3a5762019-06-25 13:43:51 -07007#include "net/third_party/quiche/src/spdy/platform/api/spdy_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