summaryrefslogtreecommitdiff
path: root/src/VBox/Runtime/testcase/tstRTStrFormat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Runtime/testcase/tstRTStrFormat.cpp')
-rw-r--r--src/VBox/Runtime/testcase/tstRTStrFormat.cpp108
1 files changed, 107 insertions, 1 deletions
diff --git a/src/VBox/Runtime/testcase/tstRTStrFormat.cpp b/src/VBox/Runtime/testcase/tstRTStrFormat.cpp
index b87c9924b..e0504e5f5 100644
--- a/src/VBox/Runtime/testcase/tstRTStrFormat.cpp
+++ b/src/VBox/Runtime/testcase/tstRTStrFormat.cpp
@@ -336,6 +336,97 @@ int main()
CHECK42("%RTnaipv4", Ipv4Addr.u, "255.255.255.255");
RTNETADDRIPV6 Ipv6Addr;
+
+ /* any */
+ memset(&Ipv6Addr, 0, sizeof(Ipv6Addr));
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::");
+
+ /* loopback */
+ Ipv6Addr.au8[15] = 1;
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::1");
+
+ /* IPv4-compatible */
+ Ipv6Addr.au8[12] = 1;
+ Ipv6Addr.au8[13] = 1;
+ Ipv6Addr.au8[14] = 1;
+ Ipv6Addr.au8[15] = 1;
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::1.1.1.1");
+
+ /* IPv4-mapped */
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0xffff);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::ffff:1.1.1.1");
+
+ /* IPv4-translated */
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0xffff);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::ffff:0:1.1.1.1");
+
+ /* single zero word is not abbreviated, leading zeroes are not printed */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0001);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "0:1:0:1:0:1:0:1");
+
+ /* longest run is abbreviated (here: at the beginning) */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0000);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "::1:0:0:1:0");
+
+ /* longest run is abbreviated (here: first) */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0001);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "1::1:0:0:1");
+
+ /* longest run is abbreviated (here: second) */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0001);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "1:0:0:1::1");
+
+ /* longest run is abbreviated (here: at the end) */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0000);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "1:0:0:1::");
+
+ /* first of the two runs of equal length is abbreviated */
+ Ipv6Addr.au16[0] = RT_H2N_U16_C(0x2001);
+ Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0db8);
+ Ipv6Addr.au16[2] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[3] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[4] = RT_H2N_U16_C(0x0001);
+ Ipv6Addr.au16[5] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0000);
+ Ipv6Addr.au16[7] = RT_H2N_U16_C(0x0001);
+ CHECK42("%RTnaipv6", &Ipv6Addr, "2001:db8::1:0:0:1");
+
Ipv6Addr.au16[0] = RT_H2N_U16_C(0x2001);
Ipv6Addr.au16[1] = RT_H2N_U16_C(0x0db8);
Ipv6Addr.au16[2] = RT_H2N_U16_C(0x85a3);
@@ -344,11 +435,26 @@ int main()
Ipv6Addr.au16[5] = RT_H2N_U16_C(0x8a2e);
Ipv6Addr.au16[6] = RT_H2N_U16_C(0x0370);
Ipv6Addr.au16[7] = RT_H2N_U16_C(0x7334);
- CHECK42("%RTnaipv6", &Ipv6Addr, "2001:0db8:85a3:0000:0000:8a2e:0370:7334");
+ CHECK42("%RTnaipv6", &Ipv6Addr, "2001:db8:85a3::8a2e:370:7334");
+
Ipv6Addr.au64[0] = UINT64_MAX;
Ipv6Addr.au64[1] = UINT64_MAX;
CHECK42("%RTnaipv6", &Ipv6Addr, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
+ RTNETADDR NetAddr;
+ memset(&NetAddr, 0, sizeof(NetAddr));
+
+ /* plain IPv6 address if port is not specified */
+ NetAddr.enmType = RTNETADDRTYPE_IPV6;
+ NetAddr.uAddr.au16[0] = RT_H2N_U16_C(0x0001);
+ NetAddr.uAddr.au16[7] = RT_H2N_U16_C(0x0001);
+ NetAddr.uPort = RTNETADDR_PORT_NA;
+ CHECK42("%RTnaddr", &NetAddr, "1::1");
+
+ /* square brackets around IPv6 address if port is specified */
+ NetAddr.uPort = 1;
+ CHECK42("%RTnaddr", &NetAddr, "[1::1]:1");
+
CHECK42("%RTproc", (RTPROCESS)0xffffff, "00ffffff");
CHECK42("%RTproc", (RTPROCESS)0x43455443, "43455443");