public void IpV4AddressRandomTest() { Assert.AreEqual(IpV4Address.AllHostsGroupAddress, new IpV4Address("224.0.0.1")); Random random = new Random(); for (int i = 0; i != 1000; ++i) { IpV4Address address = random.NextIpV4Address(); Assert.AreEqual(address, new IpV4Address(address.ToString())); Assert.IsTrue(address == new IpV4Address(address.ToString())); Assert.IsFalse(address != new IpV4Address(address.ToString())); Assert.AreEqual(address.GetHashCode(), new IpV4Address(address.ToString()).GetHashCode()); Assert.AreEqual(address, new IpV4Address(address.ToValue())); Assert.AreNotEqual(address, random.NextIpV4Address()); Assert.IsFalse(address == random.NextIpV4Address()); Assert.IsTrue(address != random.NextIpV4Address()); Assert.AreNotEqual(address.GetHashCode(), random.NextIpV4Address().GetHashCode()); Assert.AreNotEqual(2, address); Assert.IsFalse(address.Equals(null)); } }
/// <summary> /// Receives with a high probability a unique hashcode using source and destination info /// </summary> /// <returns>Hash value</returns> public override int GetHashCode() { unchecked { var hashCode = 13; hashCode = (source.GetHashCode() * 397) ^ sourcePort; hashCode += (destination.GetHashCode() * 397) ^ destinationPort; return(hashCode); } }