xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/qbone/platform/ip_range_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/qbone/platform/ip_range.h"
6 
7 #include "quiche/quic/platform/api/quic_ip_address.h"
8 #include "quiche/quic/platform/api/quic_test.h"
9 
10 namespace quic {
11 namespace {
12 
TEST(IpRangeTest,TruncateWorksIPv4)13 TEST(IpRangeTest, TruncateWorksIPv4) {
14   QuicIpAddress before_truncate;
15   before_truncate.FromString("255.255.255.255");
16   EXPECT_EQ("128.0.0.0/1", IpRange(before_truncate, 1).ToString());
17   EXPECT_EQ("192.0.0.0/2", IpRange(before_truncate, 2).ToString());
18   EXPECT_EQ("255.224.0.0/11", IpRange(before_truncate, 11).ToString());
19   EXPECT_EQ("255.255.255.224/27", IpRange(before_truncate, 27).ToString());
20   EXPECT_EQ("255.255.255.254/31", IpRange(before_truncate, 31).ToString());
21   EXPECT_EQ("255.255.255.255/32", IpRange(before_truncate, 32).ToString());
22   EXPECT_EQ("255.255.255.255/32", IpRange(before_truncate, 33).ToString());
23 }
24 
TEST(IpRangeTest,TruncateWorksIPv6)25 TEST(IpRangeTest, TruncateWorksIPv6) {
26   QuicIpAddress before_truncate;
27   before_truncate.FromString("ffff:ffff:ffff:ffff:f903::5");
28   EXPECT_EQ("fe00::/7", IpRange(before_truncate, 7).ToString());
29   EXPECT_EQ("ffff:ffff:ffff::/48", IpRange(before_truncate, 48).ToString());
30   EXPECT_EQ("ffff:ffff:ffff:ffff::/64",
31             IpRange(before_truncate, 64).ToString());
32   EXPECT_EQ("ffff:ffff:ffff:ffff:8000::/65",
33             IpRange(before_truncate, 65).ToString());
34   EXPECT_EQ("ffff:ffff:ffff:ffff:f903::4/127",
35             IpRange(before_truncate, 127).ToString());
36 }
37 
TEST(IpRangeTest,FromStringWorksIPv4)38 TEST(IpRangeTest, FromStringWorksIPv4) {
39   IpRange range;
40   ASSERT_TRUE(range.FromString("127.0.3.249/26"));
41   EXPECT_EQ("127.0.3.192/26", range.ToString());
42 }
43 
TEST(IpRangeTest,FromStringWorksIPv6)44 TEST(IpRangeTest, FromStringWorksIPv6) {
45   IpRange range;
46   ASSERT_TRUE(range.FromString("ff01:8f21:77f9::/33"));
47   EXPECT_EQ("ff01:8f21::/33", range.ToString());
48 }
49 
TEST(IpRangeTest,FirstAddressWorksIPv6)50 TEST(IpRangeTest, FirstAddressWorksIPv6) {
51   IpRange range;
52   ASSERT_TRUE(range.FromString("ffff:ffff::/64"));
53   QuicIpAddress first_address = range.FirstAddressInRange();
54   EXPECT_EQ("ffff:ffff::", first_address.ToString());
55 }
56 
TEST(IpRangeTest,FirstAddressWorksIPv4)57 TEST(IpRangeTest, FirstAddressWorksIPv4) {
58   IpRange range;
59   ASSERT_TRUE(range.FromString("10.0.0.0/24"));
60   QuicIpAddress first_address = range.FirstAddressInRange();
61   EXPECT_EQ("10.0.0.0", first_address.ToString());
62 }
63 
64 }  // namespace
65 }  // namespace quic
66