|
|
@@ -27,7 +27,62 @@ public class IPAddressTest
|
|
|
"1::", "1:0:0:0:0:0:0:0",
|
|
|
"2:2::", "2:2:0:0:0:0:0:0",
|
|
|
"7:7:7:7:7:7:7:0", "7:7:7:7:7:7:7:0",
|
|
|
-// "::1", "0:0:0:0:0:0:0:1", FIXME: ToString not working
|
|
|
+ "::1", "0:0:0:0:0:0:0:1",
|
|
|
+ "::2", "0:0:0:0:0:0:0:2",
|
|
|
+ "::F", "0:0:0:0:0:0:0:F",
|
|
|
+ "::10", "0:0:0:0:0:0:0:10",
|
|
|
+ "::A0", "0:0:0:0:0:0:0:A0",
|
|
|
+ "::F0", "0:0:0:0:0:0:0:F0",
|
|
|
+ "::FF", "0:0:0:0:0:0:0:FF",
|
|
|
+ "::0.1.0.0", "0:0:0:0:0:0:1:0",
|
|
|
+ "::0.2.0.0", "0:0:0:0:0:0:2:0",
|
|
|
+ "::0.15.0.0", "0:0:0:0:0:0:F:0",
|
|
|
+ "::0.16.0.0", "0:0:0:0:0:0:10:0",
|
|
|
+ "::0.160.0.0", "0:0:0:0:0:0:A0:0",
|
|
|
+ "::0.240.0.0", "0:0:0:0:0:0:F0:0",
|
|
|
+ "::0.255.0.0", "0:0:0:0:0:0:FF:0",
|
|
|
+ "::1001", "0:0:0:0:0:0:0:1001",
|
|
|
+ "::1002", "0:0:0:0:0:0:0:1002",
|
|
|
+ "::100F", "0:0:0:0:0:0:0:100F",
|
|
|
+ "::1010", "0:0:0:0:0:0:0:1010",
|
|
|
+ "::10A0", "0:0:0:0:0:0:0:10A0",
|
|
|
+ "::10F0", "0:0:0:0:0:0:0:10F0",
|
|
|
+ "::10FF", "0:0:0:0:0:0:0:10FF",
|
|
|
+ "::0.1.0.1", "0:0:0:0:0:0:1:1",
|
|
|
+ "::0.2.0.2", "0:0:0:0:0:0:2:2",
|
|
|
+ "::0.15.0.15", "0:0:0:0:0:0:F:F",
|
|
|
+ "::0.16.0.16", "0:0:0:0:0:0:10:10",
|
|
|
+ "::0.160.0.160", "0:0:0:0:0:0:A0:A0",
|
|
|
+ "::0.240.0.240", "0:0:0:0:0:0:F0:F0",
|
|
|
+ "::0.255.0.255", "0:0:0:0:0:0:FF:FF",
|
|
|
+ "::FFFF:0:1", "0:0:0:0:0:FFFF:0:1",
|
|
|
+ "::FFFF:0:2", "0:0:0:0:0:FFFF:0:2",
|
|
|
+ "::FFFF:0:F", "0:0:0:0:0:FFFF:0:F",
|
|
|
+ "::FFFF:0:10", "0:0:0:0:0:FFFF:0:10",
|
|
|
+ "::FFFF:0:A0", "0:0:0:0:0:FFFF:0:A0",
|
|
|
+ "::FFFF:0:F0", "0:0:0:0:0:FFFF:0:F0",
|
|
|
+ "::FFFF:0:FF", "0:0:0:0:0:FFFF:0:FF",
|
|
|
+ "::FFFF:0.1.0.0", "0:0:0:0:0:FFFF:1:0",
|
|
|
+ "::FFFF:0.2.0.0", "0:0:0:0:0:FFFF:2:0",
|
|
|
+ "::FFFF:0.15.0.0", "0:0:0:0:0:FFFF:F:0",
|
|
|
+ "::FFFF:0.16.0.0", "0:0:0:0:0:FFFF:10:0",
|
|
|
+ "::FFFF:0.160.0.0", "0:0:0:0:0:FFFF:A0:0",
|
|
|
+ "::FFFF:0.240.0.0", "0:0:0:0:0:FFFF:F0:0",
|
|
|
+ "::FFFF:0.255.0.0", "0:0:0:0:0:FFFF:FF:0",
|
|
|
+ "::FFFF:0:1001", "0:0:0:0:0:FFFF:0:1001",
|
|
|
+ "::FFFF:0:1002", "0:0:0:0:0:FFFF:0:1002",
|
|
|
+ "::FFFF:0:100F", "0:0:0:0:0:FFFF:0:100F",
|
|
|
+ "::FFFF:0:1010", "0:0:0:0:0:FFFF:0:1010",
|
|
|
+ "::FFFF:0:10A0", "0:0:0:0:0:FFFF:0:10A0",
|
|
|
+ "::FFFF:0:10F0", "0:0:0:0:0:FFFF:0:10F0",
|
|
|
+ "::FFFF:0:10FF", "0:0:0:0:0:FFFF:0:10FF",
|
|
|
+ "::FFFF:0.1.0.1", "0:0:0:0:0:FFFF:1:1",
|
|
|
+ "::FFFF:0.2.0.2", "0:0:0:0:0:FFFF:2:2",
|
|
|
+ "::FFFF:0.15.0.15", "0:0:0:0:0:FFFF:F:F",
|
|
|
+ "::FFFF:0.16.0.16", "0:0:0:0:0:FFFF:10:10",
|
|
|
+ "::FFFF:0.160.0.160", "0:0:0:0:0:FFFF:A0:A0",
|
|
|
+ "::FFFF:0.240.0.240", "0:0:0:0:0:FFFF:F0:F0",
|
|
|
+ "::FFFF:0.255.0.255", "0:0:0:0:0:FFFF:FF:FF",
|
|
|
"0:7:7:7:7:7:7:7", "0:7:7:7:7:7:7:7",
|
|
|
"E::1", "E:0:0:0:0:0:0:1",
|
|
|
"E::2:2", "E:0:0:0:0:0:2:2",
|
|
|
@@ -48,6 +103,7 @@ public class IPAddressTest
|
|
|
"::FFFF:192.168.0.1", "::FFFF:192.168.0.1",
|
|
|
"::FFFF:0.168.0.1", "::FFFF:0.168.0.1",
|
|
|
"::FFFF", "::0.0.255.255",
|
|
|
+ "::EEEE:A00:1", "::EEEE:10.0.0.1",
|
|
|
"::10.0.0.1", "::10.0.0.1",
|
|
|
"1234::1234:0:0", "1234:0:0:0:0:1234:0:0",
|
|
|
"1:0:1:0:1:0:1:0", "1:0:1:0:1:0:1:0",
|
|
|
@@ -66,6 +122,23 @@ public class IPAddressTest
|
|
|
"fec0:0:0:ffff::1%1",
|
|
|
};
|
|
|
|
|
|
+ static string[] ipv6ParseWrong = new string[] {
|
|
|
+ ":::4df",
|
|
|
+ "4df:::",
|
|
|
+ "0:::4df",
|
|
|
+ "4df:::0",
|
|
|
+ "::4df:::",
|
|
|
+ "0::4df:::",
|
|
|
+ " ::1",
|
|
|
+ ":: 1",
|
|
|
+ ":",
|
|
|
+ "0:0:0:0:0:0:0:0:0",
|
|
|
+ "0:0:0:0:0:0:0",
|
|
|
+ "0FFFF::",
|
|
|
+ "FFFF0::",
|
|
|
+ "[::1",
|
|
|
+ };
|
|
|
+
|
|
|
static string[] ipv4ParseOk = new string[] {
|
|
|
"192.168.1.1", "192.168.1.1",
|
|
|
"0xff.0x7f.0x20.0x01", "255.127.32.1",
|
|
|
@@ -553,6 +626,26 @@ public class IPAddressTest
|
|
|
Assert.IsTrue (IPAddress.Parse ("2001::1").IsIPv6Teredo, "#1");
|
|
|
Assert.IsFalse (IPAddress.Parse ("2002::1").IsIPv6Teredo, "#2");
|
|
|
}
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void ParseWrongV6 ()
|
|
|
+ {
|
|
|
+ if (!Socket.SupportsIPv6)
|
|
|
+ Assert.Ignore ("IPv6 must be enabled in machine.config");
|
|
|
+
|
|
|
+ for (int i = 0; i < ipv6ParseWrong.Length; i++) {
|
|
|
+ string ipAddress = ipv6ParseWrong [i];
|
|
|
+
|
|
|
+ try {
|
|
|
+ IPAddress ip = IPAddress.Parse (ipAddress);
|
|
|
+ Assert.Fail ("#1:" + i + " (" + ipAddress + ")");
|
|
|
+ } catch (FormatException ex) {
|
|
|
+ Assert.AreEqual (typeof (FormatException), ex.GetType (), "#2:" + i);
|
|
|
+ Assert.IsNull (ex.InnerException, "#3:" + i);
|
|
|
+ Assert.IsNotNull (ex.Message, "#4:" + i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
#endif
|
|
|
}
|
|
|
}
|