xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/quic_packet_number_test.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2019 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 "quiche/quic/core/quic_packet_number.h"
6 
7 #include "quiche/quic/platform/api/quic_flags.h"
8 #include "quiche/quic/platform/api/quic_test.h"
9 
10 namespace quic {
11 
12 namespace test {
13 
14 namespace {
15 
TEST(QuicPacketNumberTest,BasicTest)16 TEST(QuicPacketNumberTest, BasicTest) {
17   QuicPacketNumber num;
18   EXPECT_FALSE(num.IsInitialized());
19 
20   QuicPacketNumber num2(10);
21   EXPECT_TRUE(num2.IsInitialized());
22   EXPECT_EQ(10u, num2.ToUint64());
23   EXPECT_EQ(10u, num2.Hash());
24   num2.UpdateMax(num);
25   EXPECT_EQ(10u, num2.ToUint64());
26   num2.UpdateMax(QuicPacketNumber(9));
27   EXPECT_EQ(10u, num2.ToUint64());
28   num2.UpdateMax(QuicPacketNumber(11));
29   EXPECT_EQ(11u, num2.ToUint64());
30   num2.Clear();
31   EXPECT_FALSE(num2.IsInitialized());
32   num2.UpdateMax(QuicPacketNumber(9));
33   EXPECT_EQ(9u, num2.ToUint64());
34 
35   QuicPacketNumber num4(0);
36   EXPECT_TRUE(num4.IsInitialized());
37   EXPECT_EQ(0u, num4.ToUint64());
38   EXPECT_EQ(0u, num4.Hash());
39   num4.Clear();
40   EXPECT_FALSE(num4.IsInitialized());
41 }
42 
TEST(QuicPacketNumberTest,Operators)43 TEST(QuicPacketNumberTest, Operators) {
44   QuicPacketNumber num(100);
45   EXPECT_EQ(QuicPacketNumber(100), num++);
46   EXPECT_EQ(QuicPacketNumber(101), num);
47   EXPECT_EQ(QuicPacketNumber(101), num--);
48   EXPECT_EQ(QuicPacketNumber(100), num);
49 
50   EXPECT_EQ(QuicPacketNumber(101), ++num);
51   EXPECT_EQ(QuicPacketNumber(100), --num);
52 
53   QuicPacketNumber num3(0);
54   EXPECT_EQ(QuicPacketNumber(0), num3++);
55   EXPECT_EQ(QuicPacketNumber(1), num3);
56   EXPECT_EQ(QuicPacketNumber(2), ++num3);
57 
58   EXPECT_EQ(QuicPacketNumber(2), num3--);
59   EXPECT_EQ(QuicPacketNumber(1), num3);
60   EXPECT_EQ(QuicPacketNumber(0), --num3);
61 }
62 
63 }  // namespace
64 
65 }  // namespace test
66 
67 }  // namespace quic
68