blob: ab65c8c6e7c2e02d561d28866d97faa322549add [file] [log] [blame]
// Copyright (c) 2018 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 "net/third_party/quiche/src/quic/core/qpack/qpack_decoder_stream_sender.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h"
using ::testing::StrictMock;
namespace quic {
namespace test {
namespace {
class MockSenderDelegate : public QpackDecoderStreamSender::Delegate {
public:
~MockSenderDelegate() override = default;
MOCK_METHOD1(Write, void(QuicStringPiece data));
};
class QpackDecoderStreamSenderTest : public QuicTest {
protected:
QpackDecoderStreamSenderTest() : stream_(&delegate_) {}
~QpackDecoderStreamSenderTest() override = default;
StrictMock<MockSenderDelegate> delegate_;
QpackDecoderStreamSender stream_;
};
TEST_F(QpackDecoderStreamSenderTest, TableStateSynchronize) {
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("00")));
stream_.SendTableStateSynchronize(0);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("0a")));
stream_.SendTableStateSynchronize(10);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("3f00")));
stream_.SendTableStateSynchronize(63);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("3f8901")));
stream_.SendTableStateSynchronize(200);
}
TEST_F(QpackDecoderStreamSenderTest, HeaderAcknowledgement) {
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("80")));
stream_.SendHeaderAcknowledgement(0);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("a5")));
stream_.SendHeaderAcknowledgement(37);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("ff00")));
stream_.SendHeaderAcknowledgement(127);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("fff802")));
stream_.SendHeaderAcknowledgement(503);
}
TEST_F(QpackDecoderStreamSenderTest, StreamCancellation) {
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("40")));
stream_.SendStreamCancellation(0);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("53")));
stream_.SendStreamCancellation(19);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("7f00")));
stream_.SendStreamCancellation(63);
EXPECT_CALL(delegate_, Write(QuicTextUtils::HexDecode("7f2f")));
stream_.SendStreamCancellation(110);
}
} // namespace
} // namespace test
} // namespace quic