chromium/net/third_party/quiche/src/quiche/quic/core/quic_stream_sequencer_test.cc

// Copyright (c) 2012 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/quic/core/quic_stream_sequencer.h"

#include <algorithm>
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "absl/base/macros.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/quic_stream.h"
#include "quiche/quic/core/quic_utils.h"
#include "quiche/quic/platform/api/quic_expect_bug.h"
#include "quiche/quic/platform/api/quic_flags.h"
#include "quiche/quic/platform/api/quic_logging.h"
#include "quiche/quic/platform/api/quic_test.h"
#include "quiche/quic/test_tools/quic_stream_sequencer_peer.h"
#include "quiche/quic/test_tools/quic_test_utils.h"

_;
AnyNumber;
InSequence;

namespace quic {
namespace test {

class MockStream : public QuicStreamSequencer::StreamInterface {};

namespace {

static const char kPayload[] =;

class QuicStreamSequencerTest : public QuicTest {};

// TODO(rch): reorder these tests so they build on each other.

TEST_F(QuicStreamSequencerTest, RejectOldFrame) {}

TEST_F(QuicStreamSequencerTest, RejectBufferedFrame) {}

TEST_F(QuicStreamSequencerTest, FullFrameConsumed) {}

TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameConsumed) {}

TEST_F(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) {}

TEST_F(QuicStreamSequencerTest, EmptyFrame) {}

TEST_F(QuicStreamSequencerTest, EmptyFinFrame) {}

TEST_F(QuicStreamSequencerTest, PartialFrameConsumed) {}

TEST_F(QuicStreamSequencerTest, NextxFrameNotConsumed) {}

TEST_F(QuicStreamSequencerTest, FutureFrameNotProcessed) {}

TEST_F(QuicStreamSequencerTest, OutOfOrderFrameProcessed) {}

TEST_F(QuicStreamSequencerTest, BasicHalfCloseOrdered) {}

TEST_F(QuicStreamSequencerTest, BasicHalfCloseUnorderedWithFlush) {}

TEST_F(QuicStreamSequencerTest, BasicHalfUnordered) {}

TEST_F(QuicStreamSequencerTest, TerminateWithReadv) {}

TEST_F(QuicStreamSequencerTest, MultipleOffsets) {}

class QuicSequencerRandomTest : public QuicStreamSequencerTest {};

// All frames are processed as soon as we have sequential data.
// Infinite buffering, so all frames are acked right away.
TEST_F(QuicSequencerRandomTest, RandomFramesNoDroppingNoBackup) {}

TEST_F(QuicSequencerRandomTest, RandomFramesNoDroppingBackup) {}

// Same as above, just using a different method for reading.
TEST_F(QuicStreamSequencerTest, MarkConsumed) {}

TEST_F(QuicStreamSequencerTest, MarkConsumedError) {}

TEST_F(QuicStreamSequencerTest, MarkConsumedWithMissingPacket) {}

TEST_F(QuicStreamSequencerTest, Move) {}

TEST_F(QuicStreamSequencerTest, OverlappingFramesReceived) {}

TEST_F(QuicStreamSequencerTest, DataAvailableOnOverlappingFrames) {}

TEST_F(QuicStreamSequencerTest, OnDataAvailableWhenReadableBytesIncrease) {}

TEST_F(QuicStreamSequencerTest, ReadSingleFrame) {}

TEST_F(QuicStreamSequencerTest, ReadMultipleFramesWithMissingFrame) {}

TEST_F(QuicStreamSequencerTest, ReadAndAppendToString) {}

TEST_F(QuicStreamSequencerTest, StopReading) {}

TEST_F(QuicStreamSequencerTest, StopReadingWithLevelTriggered) {}

// Regression test for https://crbug.com/992486.
TEST_F(QuicStreamSequencerTest, CorruptFinFrames) {}

// Regression test for crbug.com/1015693
TEST_F(QuicStreamSequencerTest, ReceiveFinLessThanHighestOffset) {}

}  // namespace
}  // namespace test
}  // namespace quic