// // 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 // using NUnit.Framework; using System; using System.Net; 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", }; 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(), "12.1.1.3 ", "12.1.1.3", " 12.1.1.1", "0.0.0.0", "12.1 .1.2", "12.0.0.1", ".1.1.6", "0.1.1.6", "12.1.7", "12.1.0.7", "12.1.8. ", "12.1.8.0", "12", "0.0.0.12", "12.1 foo.1.2.3.4.5.bar", "12.0.0.1", "12.1.2. ", "12.1.2.0", "12.. .", "12.0.0.0", " ", "0.0.0.0", " foo", "0.0.0.0" }; static object[] ipv4ParseWrong = new object[] { "12.+1.1.4", typeof(FormatException), "12.1.-1.5", typeof(FormatException), "257.1.1.9", typeof(FormatException), "12.", typeof(FormatException), "12.1.2.", typeof(FormatException), "12...", typeof(FormatException), null, typeof(ArgumentNullException), }; [Test] public void PublicFields () { Assertion.AssertEquals ("Any", IPAddress.Any.Address, (long) 0); Assertion.AssertEquals ("Broadcast", IPAddress.Broadcast.Address, (long) 0xFFFFFFFF); long loopback = IPAddress.HostToNetworkOrder (BitConverter.IsLittleEndian ? 0x7f000001 : 0x0100007f); Assertion.AssertEquals ("Loopback", IPAddress.Loopback.Address, loopback); Assertion.AssertEquals ("None", IPAddress.None.Address, (long) 0xFFFFFFFF); } [Test] public void ToStringTest () { IPAddress ip = IPAddress.Parse ("192.168.1.1"); Assertion.AssertEquals ("ToString #1", "192.168.1.1", ip.ToString ()); Assertion.AssertEquals ("ToString #2", "0.0.0.0", IPAddress.Any.ToString ()); Assertion.AssertEquals ("ToString #3", "255.255.255.255", IPAddress.Broadcast.ToString ()); Assertion.AssertEquals ("ToString #4", "127.0.0.1", IPAddress.Loopback.ToString ()); Assertion.AssertEquals ("ToString #5", "255.255.255.255", IPAddress.None.ToString ()); #if NET_1_1 for(int i=0; i