summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Common/StringUtilTest.cpp
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2026-02-13 20:44:40 -0600
committerJordan Woyak <jordan.woyak@gmail.com>2026-02-15 23:13:18 -0600
commitcbd43914a51f8b9c20133cf0b5f9204b7d6c8b7f (patch)
treedb4f51dd948cbb51da4a1bdc7a825e6397d03eb5 /Source/UnitTests/Common/StringUtilTest.cpp
parent0ff8fb71a32d8791b6ec4398762091d7f04ab7ce (diff)
Network: Improve IPv4PortRange::ToString to support CIDR notation and only last octet difference.
Diffstat (limited to 'Source/UnitTests/Common/StringUtilTest.cpp')
-rw-r--r--Source/UnitTests/Common/StringUtilTest.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/UnitTests/Common/StringUtilTest.cpp b/Source/UnitTests/Common/StringUtilTest.cpp
index c8bd5f4deb..f7c3b9169b 100644
--- a/Source/UnitTests/Common/StringUtilTest.cpp
+++ b/Source/UnitTests/Common/StringUtilTest.cpp
@@ -373,6 +373,42 @@ TEST(StringUtil, StringToIPv4PortRange)
EXPECT_TRUE(parse("192.168.0.13-14:80-81")->IsMatch(parse("192.168.0.14:81")->first));
}
+TEST(StringUtil, IPv4PortRangeToString)
+{
+ Common::IPv4PortRange subject{
+ .first = {{10, 3, 0, 127}, 0},
+ .last = {{10, 3, 0, 127}, 0},
+ };
+
+ EXPECT_EQ(subject.ToString(), "10.3.0.127");
+
+ subject.last.port = Common::swap16(80); // First port is still zero.
+ EXPECT_EQ(subject.ToString(), "10.3.0.127");
+
+ subject.first.port = Common::swap16(80);
+ EXPECT_EQ(subject.ToString(), "10.3.0.127:80");
+
+ subject.last.port = Common::swap16(88);
+ EXPECT_EQ(subject.ToString(), "10.3.0.127:80-88");
+
+ subject.last.ip_address = {10, 3, 0, 128};
+ EXPECT_EQ(subject.ToString(), "10.3.0.127-128:80-88");
+
+ subject.last.ip_address = {10, 3, 7, 35};
+ EXPECT_EQ(subject.ToString(), "10.3.0.127-10.3.7.35:80-88");
+
+ subject.first.ip_address = {192, 168, 0, 0};
+ subject.last.ip_address = {192, 168, 0, 255};
+ EXPECT_EQ(subject.ToString(), "192.168.0.0/24:80-88");
+
+ subject.last.ip_address = {192, 168, 3, 255};
+ EXPECT_EQ(subject.ToString(), "192.168.0.0/22:80-88");
+
+ subject.first.ip_address = {};
+ subject.last.ip_address = {255, 255, 255, 255};
+ EXPECT_EQ(subject.ToString(), "0.0.0.0/0:80-88");
+}
+
TEST(StringUtil, CharacterEncodingConversion)
{
// wstring