|  | // Copyright (c) 2019 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/quic_packet_number.h" | 
|  |  | 
|  | #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" | 
|  | #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" | 
|  |  | 
|  | namespace quic { | 
|  |  | 
|  | namespace test { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | TEST(QuicPacketNumberTest, BasicTest) { | 
|  | QuicPacketNumber num; | 
|  | EXPECT_FALSE(num.IsInitialized()); | 
|  |  | 
|  | QuicPacketNumber num2(10); | 
|  | EXPECT_TRUE(num2.IsInitialized()); | 
|  | EXPECT_EQ(10u, num2.ToUint64()); | 
|  | EXPECT_EQ(10u, num2.Hash()); | 
|  | num2.UpdateMax(num); | 
|  | EXPECT_EQ(10u, num2.ToUint64()); | 
|  | num2.UpdateMax(QuicPacketNumber(9)); | 
|  | EXPECT_EQ(10u, num2.ToUint64()); | 
|  | num2.UpdateMax(QuicPacketNumber(11)); | 
|  | EXPECT_EQ(11u, num2.ToUint64()); | 
|  | num2.Clear(); | 
|  | EXPECT_FALSE(num2.IsInitialized()); | 
|  | num2.UpdateMax(QuicPacketNumber(9)); | 
|  | EXPECT_EQ(9u, num2.ToUint64()); | 
|  |  | 
|  | QuicPacketNumber num4(0); | 
|  | EXPECT_TRUE(num4.IsInitialized()); | 
|  | EXPECT_EQ(0u, num4.ToUint64()); | 
|  | EXPECT_EQ(0u, num4.Hash()); | 
|  | num4.Clear(); | 
|  | EXPECT_FALSE(num4.IsInitialized()); | 
|  | } | 
|  |  | 
|  | TEST(QuicPacketNumberTest, Operators) { | 
|  | QuicPacketNumber num(100); | 
|  | EXPECT_EQ(QuicPacketNumber(100), num++); | 
|  | EXPECT_EQ(QuicPacketNumber(101), num); | 
|  | EXPECT_EQ(QuicPacketNumber(101), num--); | 
|  | EXPECT_EQ(QuicPacketNumber(100), num); | 
|  |  | 
|  | EXPECT_EQ(QuicPacketNumber(101), ++num); | 
|  | EXPECT_EQ(QuicPacketNumber(100), --num); | 
|  |  | 
|  | QuicPacketNumber num3(0); | 
|  | EXPECT_EQ(QuicPacketNumber(0), num3++); | 
|  | EXPECT_EQ(QuicPacketNumber(1), num3); | 
|  | EXPECT_EQ(QuicPacketNumber(2), ++num3); | 
|  |  | 
|  | EXPECT_EQ(QuicPacketNumber(2), num3--); | 
|  | EXPECT_EQ(QuicPacketNumber(1), num3); | 
|  | EXPECT_EQ(QuicPacketNumber(0), --num3); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | }  // namespace test | 
|  |  | 
|  | }  // namespace quic |