public void RandomDatagramTest() { Random random = new Random(); for (int i = 0; i != 1000; ++i) { Datagram datagram = random.NextDatagram(random.Next(1024)); Assert.AreEqual(datagram, new Datagram(new List <byte>(datagram).ToArray())); Assert.AreEqual(datagram.GetHashCode(), new Datagram(new List <byte>(datagram).ToArray()).GetHashCode()); Assert.AreNotEqual(datagram, random.NextDatagram(random.Next(10 * 1024))); Assert.AreNotEqual(datagram.GetHashCode(), random.NextDatagram(random.Next(10 * 1024)).GetHashCode()); if (datagram.Length != 0) { Assert.AreNotEqual(datagram, Datagram.Empty); Assert.AreNotEqual(datagram, random.NextDatagram(datagram.Length)); if (datagram.Length > 2) { Assert.AreNotEqual(datagram.GetHashCode(), random.NextDatagram(datagram.Length).GetHashCode()); } } else { Assert.AreEqual(datagram, Datagram.Empty); } // Check Enumerable IEnumerable enumerable = datagram; int offset = 0; foreach (byte b in enumerable) { Assert.AreEqual(datagram[offset++], b); } } }