blob: 2e8a2e43532145b3b01de21c46369f375c7478c5 [file] [log] [blame]
// Copyright (c) 2023 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 "quiche/common/test_tools/mock_streams.h"
#include <array>
#include <string>
#include "absl/types/span.h"
#include "quiche/common/platform/api/quiche_test.h"
#include "quiche/common/quiche_stream.h"
#include "quiche/common/test_tools/quiche_test_utils.h"
namespace quiche::test {
namespace {
using ::testing::ElementsAre;
using ::testing::IsEmpty;
TEST(MockWriteStreamTest, DefaultWrite) {
MockWriteStream stream;
QUICHE_EXPECT_OK(quiche::WriteIntoStream(stream, "test"));
EXPECT_EQ(stream.data(), "test");
EXPECT_FALSE(stream.fin_written());
}
TEST(ReadStreamFromStringTest, ReadIntoSpan) {
std::string source = "abcdef";
std::array<char, 3> buffer;
ReadStreamFromString stream(&source);
EXPECT_EQ(stream.ReadableBytes(), 6);
stream.Read(absl::MakeSpan(buffer));
EXPECT_THAT(buffer, ElementsAre('a', 'b', 'c'));
EXPECT_EQ(stream.ReadableBytes(), 3);
stream.Read(absl::MakeSpan(buffer));
EXPECT_THAT(buffer, ElementsAre('d', 'e', 'f'));
EXPECT_EQ(stream.ReadableBytes(), 0);
EXPECT_THAT(source, IsEmpty());
}
TEST(ReadStreamFromStringTest, ReadIntoString) {
std::string source = "abcdef";
std::string destination;
ReadStreamFromString stream(&source);
stream.Read(&destination);
EXPECT_EQ(destination, "abcdef");
EXPECT_THAT(source, IsEmpty());
}
TEST(ReadStreamFromStringTest, PeekAndSkip) {
std::string source = "abcdef";
ReadStreamFromString stream(&source);
EXPECT_EQ(stream.PeekNextReadableRegion().peeked_data, "abcdef");
stream.SkipBytes(2);
EXPECT_EQ(stream.PeekNextReadableRegion().peeked_data, "cdef");
EXPECT_EQ(source, "cdef");
}
} // namespace
} // namespace quiche::test