// // IPAddressTest.cs - NUnit Test Cases for System.Net.IPAddress // // Authors: // Gonzalo Paniagua Javier (gonzalo@ximian.com) // Martin Willemoes Hansen (mwh@sysrq.dk) // // (C) Ximian, Inc. http://www.ximian.com // (C) 2003 Martin Willemoes Hansen // Copyright (C) 2005 Novell, Inc (http://www.novell.com) // using NUnit.Framework; using System; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; namespace MonoTests.System.Net { [TestFixture] public class IPAddressTest { static string[] ipv6AddressList = new string[] { "::", "0:0:0:0:0:0:0:0", "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", "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", "E:0:6:6:6:6:6:6", "E:0:6:6:6:6:6:6", "E:E::1", "E:E:0:0:0:0:0:1", "E:E::2:2", "E:E:0:0:0:0:2:2", "E:E:0:5:5:5:5:5", "E:E:0:5:5:5:5:5", "E:E:E::1", "E:E:E:0:0:0:0:1", "E:E:E::2:2", "E:E:E:0:0:0:2:2", "E:E:E:0:4:4:4:4", "E:E:E:0:4:4:4:4", "E:E:E:E::1", "E:E:E:E:0:0:0:1", "E:E:E:E::2:2", "E:E:E:E:0:0:2:2", "E:E:E:E:0:3:3:3", "E:E:E:E:0:3:3:3", "E:E:E:E:E::1", "E:E:E:E:E:0:0:1", "E:E:E:E:E:0:2:2", "E:E:E:E:E:0:2:2", "E:E:E:E:E:E:0:1", "E:E:E:E:E:E:0:1", "::0.2.0.2", "0:0:0:0:0:0:2:2", "::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", "::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", "1:1:1::1:1:0", "1:1:1:0:0:1:1:0", "::1234:0:0", "0:0:0:0:0:1234:0:0", "3ffe:38e1::100:1:1", "3ffe:38e1::0100:1:0001", "0:0:1:2::", "0:0:1:2:00:00:000:0000", "100:0:1:2::abcd", "100:0:1:2:0:0:000:abcd", "ffff::abcd", "ffff:0:0:0:0:0:00:abcd", "ffff:0:0:2::abcd", "ffff:0:0:2:0:0:00:abcd", "0:0:1:2::", "0:0:1:2:0:00:0000:0000", "::1:0:0", "0000:0000::1:0000:0000", "::111:234:5:6:789a:0", "0:0:111:234:5:6:789A:0", "11:22:33:44:55:66:77:8", "11:22:33:44:55:66:77:8", "0:0:7711:ab42:1230::", "::7711:ab42:1230:0:0:0", "fec0:0:0:ffff::1%1", }; static string[] ipv4ParseOk = new string[] { "192.168.1.1", "192.168.1.1", "0xff.0x7f.0x20.0x01", "255.127.32.1", "0xff.0x7f.0x20.0xf", "255.127.32.15", "0.0.0.0", IPAddress.Any.ToString(), "255.255.255.255", IPAddress.Broadcast.ToString(), #if ONLY_1_1 "12.1.1.3 ", "12.1.1.3", "12.1 foo.1.2.3.4.5.bar", "12.0.0.1", "12.1.4.6 foo.bar.test.test.bag", "12.1.4.6", "12.6 foo.1.2.3.4.5.", "12.0.0.6", "12.1.1.3 g", "12.1.1.3", " ", "0.0.0.0", "", "0.0.0.0", #endif "12.1.1.3 abc", "12.1.1.3", "12.1 .1.2", "12.0.0.1", "12.1 .zzzz.2", "12.0.0.1", "12.1.7", "12.1.0.7", "12", "0.0.0.12", "12.5.3 foo.67.test.test.7FFFFFFFFFfaFFF789FFFFFFFFFFFFFFF", "12.5.0.3", "12.1 foo.bar.test.test.baf", "12.0.0.1", "12.1.4.6 foo.bar.test.test.baf", "12.1.4.6", "12.3 foo.bar.test.test.4", "12.0.0.3", "12 foo.bar.test.test.baf", "0.0.0.12", "65536", "0.1.0.0", "65535", "0.0.255.255", "20.65535", "20.0.255.255", "0313.027035210", "203.92.58.136", // bug #411920 "0313.0134.035210", "203.92.58.136", // too "7848198702", "211.202.2.46", // too "1434328179", "85.126.28.115", // too "3397943208", "202.136.127.168", // too }; static string [] ipv4ParseWrong = new string [] { " foo", "12.. .", "12.1.2. ", "12.1.8. ", ".1.1.6", " 12.1.1.1", "12.+1.1.4", "12.1.-1.5", "257.1.1.9", "255.1.1.256", #if NET_2_0 "12.1.1.3 ", "12.1 foo.1.2.3.4.5.bar", "12.1 foo.1.2.3.4.5.", "12.1.1.3 g", " ", "", #endif "12.1.foo.1.2.3.4.5.bar", "12.", "12.1.2.", "12...", " " }; [Test] public void PublicFields () { Assert.AreEqual ((long) 0, IPAddress.Any.Address, "#1"); Assert.AreEqual ((long) 0xFFFFFFFF, IPAddress.Broadcast.Address, "#2"); long loopback = IPAddress.HostToNetworkOrder (BitConverter.IsLittleEndian ? 0x7f000001 : 0x0100007f); Assert.AreEqual (loopback, IPAddress.Loopback.Address, "#3"); Assert.AreEqual ((long) 0xFFFFFFFF, IPAddress.None.Address, "#4"); } [Test] public void ToStringV4 () { IPAddress ip = IPAddress.Parse ("192.168.1.1"); Assert.AreEqual ("192.168.1.1", ip.ToString (), "#1"); Assert.AreEqual ("0.0.0.0", IPAddress.Any.ToString (), "#2"); Assert.AreEqual ("255.255.255.255", IPAddress.Broadcast.ToString (), "#3"); Assert.AreEqual ("127.0.0.1", IPAddress.Loopback.ToString (), "#4"); Assert.AreEqual ("255.255.255.255", IPAddress.None.ToString (), "#5"); } #if NET_1_1 [Test] public void ToStringV6 () { if (!Socket.SupportsIPv6) Assert.Ignore ("IPv6 must be enabled in machine.config"); for(int i=0; i