xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/common/test_tools/mock_streams_test.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2023 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 "quiche/common/test_tools/mock_streams.h"
6 
7 #include <array>
8 #include <string>
9 
10 #include "absl/types/span.h"
11 #include "quiche/common/platform/api/quiche_test.h"
12 #include "quiche/common/quiche_stream.h"
13 #include "quiche/common/test_tools/quiche_test_utils.h"
14 
15 namespace quiche::test {
16 namespace {
17 
18 using ::testing::ElementsAre;
19 using ::testing::IsEmpty;
20 
TEST(MockWriteStreamTest,DefaultWrite)21 TEST(MockWriteStreamTest, DefaultWrite) {
22   MockWriteStream stream;
23   QUICHE_EXPECT_OK(quiche::WriteIntoStream(stream, "test"));
24   EXPECT_EQ(stream.data(), "test");
25   EXPECT_FALSE(stream.fin_written());
26 }
27 
TEST(ReadStreamFromStringTest,ReadIntoSpan)28 TEST(ReadStreamFromStringTest, ReadIntoSpan) {
29   std::string source = "abcdef";
30   std::array<char, 3> buffer;
31   ReadStreamFromString stream(&source);
32   EXPECT_EQ(stream.ReadableBytes(), 6);
33 
34   stream.Read(absl::MakeSpan(buffer));
35   EXPECT_THAT(buffer, ElementsAre('a', 'b', 'c'));
36   EXPECT_EQ(stream.ReadableBytes(), 3);
37 
38   stream.Read(absl::MakeSpan(buffer));
39   EXPECT_THAT(buffer, ElementsAre('d', 'e', 'f'));
40   EXPECT_EQ(stream.ReadableBytes(), 0);
41   EXPECT_THAT(source, IsEmpty());
42 }
43 
TEST(ReadStreamFromStringTest,ReadIntoString)44 TEST(ReadStreamFromStringTest, ReadIntoString) {
45   std::string source = "abcdef";
46   std::string destination;
47   ReadStreamFromString stream(&source);
48   stream.Read(&destination);
49   EXPECT_EQ(destination, "abcdef");
50   EXPECT_THAT(source, IsEmpty());
51 }
52 
TEST(ReadStreamFromStringTest,PeekAndSkip)53 TEST(ReadStreamFromStringTest, PeekAndSkip) {
54   std::string source = "abcdef";
55   ReadStreamFromString stream(&source);
56   EXPECT_EQ(stream.PeekNextReadableRegion().peeked_data, "abcdef");
57   stream.SkipBytes(2);
58   EXPECT_EQ(stream.PeekNextReadableRegion().peeked_data, "cdef");
59   EXPECT_EQ(source, "cdef");
60 }
61 
62 }  // namespace
63 }  // namespace quiche::test
64