1// Copyright 2014 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 "net/quic/quic_connection_logger.h"
6
7#include "net/quic/quic_protocol.h"
8#include "testing/gtest/include/gtest/gtest.h"
9
10namespace net {
11namespace test {
12
13class QuicConnectionLoggerPeer {
14 public:
15  static size_t num_truncated_acks_sent(const QuicConnectionLogger& logger) {
16    return logger.num_truncated_acks_sent_;
17  }
18};
19
20class QuicConnectionLoggerTest : public ::testing::Test {
21 protected:
22  QuicConnectionLoggerTest() : logger_(net_log_) {}
23
24  BoundNetLog net_log_;
25  QuicConnectionLogger logger_;
26};
27
28TEST_F(QuicConnectionLoggerTest, TruncatedAcksSentNotChanged) {
29  QuicAckFrame frame;
30  logger_.OnFrameAddedToPacket(QuicFrame(&frame));
31  EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
32
33  for (QuicPacketSequenceNumber i = 0; i < 256; ++i) {
34    frame.missing_packets.insert(i);
35  }
36  logger_.OnFrameAddedToPacket(QuicFrame(&frame));
37  EXPECT_EQ(0u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
38}
39
40TEST_F(QuicConnectionLoggerTest, TruncatedAcksSent) {
41  QuicAckFrame frame;
42  for (QuicPacketSequenceNumber i = 0; i < 512; i += 2) {
43    frame.missing_packets.insert(i);
44  }
45  logger_.OnFrameAddedToPacket(QuicFrame(&frame));
46  EXPECT_EQ(1u, QuicConnectionLoggerPeer::num_truncated_acks_sent(logger_));
47}
48
49}  // namespace test
50}  // namespace net
51