blob: e0184a81d44c07d90f0ccc8660f79e2874469905 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// 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 "net/third_party/quiche/src/quic/core/quic_packet_number.h"
6
7#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
8#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
9
10namespace quic {
11
12namespace test {
13
14namespace {
15
16TEST(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());
QUICHE teamc264e362019-03-19 14:21:06 -070024 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());
QUICHE teama6ef0a62019-03-07 20:34:33 -050030 num2.Clear();
31 EXPECT_FALSE(num2.IsInitialized());
QUICHE teamc264e362019-03-19 14:21:06 -070032 num2.UpdateMax(QuicPacketNumber(9));
33 EXPECT_EQ(9u, num2.ToUint64());
QUICHE teama6ef0a62019-03-07 20:34:33 -050034
QUICHE teama6ef0a62019-03-07 20:34:33 -050035 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
43TEST(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
QUICHE teama6ef0a62019-03-07 20:34:33 -050053 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