public IPAddress (byte[] address)
{
+ if (address == null)
+ throw new ArgumentNullException ("address");
+
int len = address.Length;
+#if NET_2_0
if (len != 16 && len != 4)
throw new ArgumentException ("address");
+#else
+ if (len != 16)
+ throw new ArgumentException ("address");
+#endif
if (len == 16) {
Buffer.BlockCopy(address, 0, m_Numbers, 0, 16);
public IPAddress(byte[] address, long scopeId)
{
+ if (address == null)
+ throw new ArgumentNullException ("address");
+
if (address.Length != 16)
throw new ArgumentException("address");
int pos = ip.IndexOf (' ');
if (pos != -1)
- ip = ip.Substring (0, pos);
+ ip = ip.Substring (0, pos);
if (ip.Length == 0 || ip [ip.Length - 1] == '.')
return null;
Assertion.AssertEquals ("#03", true, new Uri("http://[0:0:0:0::0.0.0.1]/").IsLoopback);
}
-#if NET_2_0
- [Test]
- public void FromBytes3 ()
+ [Test] // bug #76792
+ public void Constructor0_Address_4Byte ()
{
- // This one works in 2.0
- new IPAddress (new byte [4]);
+ byte[] bytes = new byte[4] { 192, 202, 112, 37 };
+#if NET_2_0
+ IPAddress i = new IPAddress (bytes);
+ Assert.AreEqual (bytes, i.GetAddressBytes (), "#1");
+ Assert.AreEqual ("192.202.112.37", i.ToString (), "#2");
+#else
+ try {
+ new IPAddress (bytes);
+ Assert.Fail ("#1");
+ } catch (ArgumentException ex) {
+ Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+ Assert.IsNotNull (ex.Message, "#3");
+ Assert.AreEqual ("address", ex.Message, "#4");
+ Assert.IsNull (ex.ParamName, "#5");
+ Assert.IsNull (ex.InnerException, "#6");
+ }
+#endif
}
-
+
[Test]
- [ExpectedException (typeof (ArgumentException))]
- public void FromBytes4 ()
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void Constructor0_Address_Null ()
{
- new IPAddress (new byte [4], 0);
+ new IPAddress ((byte []) null);
}
-#else
+
[Test]
- [ExpectedException (typeof (ArgumentException))]
- public void FromBytes1 ()
+ public void Constructor1_Address_4Byte ()
{
- new IPAddress (new byte [4]);
+ byte [] bytes = new byte [4] { 192, 202, 112, 37 };
+ try {
+ new IPAddress (bytes, 0);
+ Assert.Fail ("#1");
+ } catch (ArgumentException ex) {
+ Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+ Assert.IsNotNull (ex.Message, "#3");
+ Assert.AreEqual ("address", ex.Message, "#4");
+ Assert.IsNull (ex.ParamName, "#5");
+ Assert.IsNull (ex.InnerException, "#6");
+ }
}
-
+
[Test]
- [ExpectedException (typeof (ArgumentException))]
- public void FromBytes2 ()
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void Constructor1_Address_Null ()
{
- new IPAddress (new byte [4], 0);
+ new IPAddress ((byte []) null, 5);
}
-#endif
-
#if NET_2_0
[Test]