1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-09 20:42:44 +03:00
Files
mvfst/quic/common/test/QuicCodecUtilsTest.cpp
Udip Pant 4a9537798e Add correct license headers on some missing files
Summary: ^

Reviewed By: sharma95

Differential Revision: D15172546

fbshipit-source-id: bacc832752a433b86962e77bb19aff4504640e60
2019-05-01 22:42:04 -07:00

93 lines
2.6 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
#include <quic/common/test/QuicCodecUtils.h>
#include <folly/portability/GTest.h>
#include <quic/common/test/TestUtils.h>
#include <iterator>
using namespace testing;
using namespace folly;
namespace quic {
namespace test {
class QuicCodecUtilsTest : public Test {};
TEST_F(QuicCodecUtilsTest, TestIterateStreamFrames) {
ShortHeader header(ProtectionType::KeyPhaseZero, getTestConnectionId(), 1);
RegularQuicPacket packet(std::move(header));
ReadStreamFrame frame1(1, 0, true);
ReadStreamFrame frame2(2, 1, true);
packet.frames.push_back(frame1);
packet.frames.push_back(frame2);
auto checked = 0;
for (auto& frame : all_frames<ReadStreamFrame>(packet.frames)) {
if (checked == 0) {
EXPECT_TRUE(frame == frame1);
} else if (checked == 1) {
EXPECT_TRUE(frame == frame2);
}
++checked;
}
EXPECT_EQ(checked, 2);
auto iter = all_frames<ReadAckFrame>(packet.frames);
checked = std::distance(iter.begin(), iter.end());
EXPECT_EQ(checked, 0);
}
TEST_F(QuicCodecUtilsTest, TestIterateStreamFrameInBetweenAcks) {
ShortHeader header(ProtectionType::KeyPhaseZero, getTestConnectionId(), 1);
RegularQuicPacket packet(std::move(header));
ReadStreamFrame frame1(1, 0, true);
ReadAckFrame ack;
ack.largestAcked = 0;
ack.ackDelay = std::chrono::microseconds::zero();
packet.frames.push_back(ack);
packet.frames.push_back(frame1);
packet.frames.push_back(ack);
auto checked = 0;
for (auto& frame : all_frames<ReadStreamFrame>(packet.frames)) {
++checked;
EXPECT_EQ(frame, frame1);
}
EXPECT_EQ(checked, 1);
auto iter = all_frames<ReadAckFrame>(packet.frames);
checked = std::distance(iter.begin(), iter.end());
EXPECT_EQ(checked, 2);
}
TEST_F(QuicCodecUtilsTest, TestIterateStreamFrameNoFrames) {
ShortHeader header(ProtectionType::KeyPhaseZero, getTestConnectionId(), 1);
RegularQuicPacket packet(std::move(header));
auto checked = 0;
auto read_stream_iter = all_frames<ReadStreamFrame>(packet.frames);
checked = std::distance(read_stream_iter.begin(), read_stream_iter.end());
EXPECT_EQ(checked, 0);
auto ack_iter = all_frames<ReadAckFrame>(packet.frames);
checked = std::distance(ack_iter.begin(), ack_iter.end());
EXPECT_EQ(checked, 0);
}
TEST_F(QuicCodecUtilsTest, MatchesPredicate) {
QuicFrame frame(ReadStreamFrame(1, 0, true));
EXPECT_TRUE(matchesPredicate<ReadStreamFrame>(frame));
EXPECT_FALSE(matchesPredicate<ReadAckFrame>(frame));
}
} // namespace test
} // namespace quic