blob: 1e1b00117dcf0f078c900c72131d8534384a46d7 [file] [log] [blame]
// 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 "quic/qbone/platform/ip_range.h"
#include "quic/platform/api/quic_ip_address.h"
#include "quic/platform/api/quic_test.h"
namespace quic {
namespace {
TEST(IpRangeTest, TruncateWorksIPv4) {
QuicIpAddress before_truncate;
before_truncate.FromString("255.255.255.255");
EXPECT_EQ("128.0.0.0/1", IpRange(before_truncate, 1).ToString());
EXPECT_EQ("192.0.0.0/2", IpRange(before_truncate, 2).ToString());
EXPECT_EQ("255.224.0.0/11", IpRange(before_truncate, 11).ToString());
EXPECT_EQ("255.255.255.224/27", IpRange(before_truncate, 27).ToString());
EXPECT_EQ("255.255.255.254/31", IpRange(before_truncate, 31).ToString());
EXPECT_EQ("255.255.255.255/32", IpRange(before_truncate, 32).ToString());
EXPECT_EQ("255.255.255.255/32", IpRange(before_truncate, 33).ToString());
}
TEST(IpRangeTest, TruncateWorksIPv6) {
QuicIpAddress before_truncate;
before_truncate.FromString("ffff:ffff:ffff:ffff:f903::5");
EXPECT_EQ("fe00::/7", IpRange(before_truncate, 7).ToString());
EXPECT_EQ("ffff:ffff:ffff::/48", IpRange(before_truncate, 48).ToString());
EXPECT_EQ("ffff:ffff:ffff:ffff::/64",
IpRange(before_truncate, 64).ToString());
EXPECT_EQ("ffff:ffff:ffff:ffff:8000::/65",
IpRange(before_truncate, 65).ToString());
EXPECT_EQ("ffff:ffff:ffff:ffff:f903::4/127",
IpRange(before_truncate, 127).ToString());
}
TEST(IpRangeTest, FromStringWorksIPv4) {
IpRange range;
ASSERT_TRUE(range.FromString("127.0.3.249/26"));
EXPECT_EQ("127.0.3.192/26", range.ToString());
}
TEST(IpRangeTest, FromStringWorksIPv6) {
IpRange range;
ASSERT_TRUE(range.FromString("ff01:8f21:77f9::/33"));
EXPECT_EQ("ff01:8f21::/33", range.ToString());
}
TEST(IpRangeTest, FirstAddressWorksIPv6) {
IpRange range;
ASSERT_TRUE(range.FromString("ffff:ffff::/64"));
QuicIpAddress first_address = range.FirstAddressInRange();
EXPECT_EQ("ffff:ffff::", first_address.ToString());
}
TEST(IpRangeTest, FirstAddressWorksIPv4) {
IpRange range;
ASSERT_TRUE(range.FromString("10.0.0.0/24"));
QuicIpAddress first_address = range.FirstAddressInRange();
EXPECT_EQ("10.0.0.0", first_address.ToString());
}
} // namespace
} // namespace quic