public void GetBytesValidSequence() { Message message = new Message(new byte[10], (byte)245); MemoryStream ms = new MemoryStream(); message.WriteTo(ms); // len(payload) + 1 + 4 Assert.AreEqual(15, ms.Length); // first 4 bytes = the magic number Assert.AreEqual((byte)245, ms.ToArray()[0]); // next 4 bytes = the checksum Assert.IsTrue(message.Checksum.SequenceEqual(ms.ToArray().Skip(1).Take(4).ToArray<byte>())); // remaining bytes = the payload Assert.AreEqual(10, ms.ToArray().Skip(5).ToArray<byte>().Length); }
public void GetBytesValidSequence() { Message message = new Message(new byte[10], CompressionCodecs.NoCompressionCodec); MemoryStream ms = new MemoryStream(); message.WriteTo(ms); // len(payload) + 1 + 4 Assert.AreEqual(16, ms.Length); // first 4 bytes = the magic number Assert.AreEqual((byte)1, ms.ToArray()[0]); // attributes Assert.AreEqual((byte)0, ms.ToArray()[1]); // next 4 bytes = the checksum Assert.IsTrue(message.Checksum.SequenceEqual(ms.ToArray().Skip(2).Take(4).ToArray<byte>())); // remaining bytes = the payload Assert.AreEqual(10, ms.ToArray().Skip(6).ToArray<byte>().Length); }
public void WriteToValidSequenceForCustomConstructor() { byte[] messageBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; byte[] customChecksum = new byte[] { 3, 4, 5, 6 }; Message message = new Message(messageBytes, (byte)33, customChecksum); MemoryStream ms = new MemoryStream(); message.WriteTo(ms); Assert.AreEqual((byte)33, ms.ToArray()[MagicNumberPartOffset]); byte[] checksumPart = new byte[ChecksumPartLength]; Array.Copy(ms.ToArray(), ChecksumPartOffset, checksumPart, 0, ChecksumPartLength); Assert.AreEqual(customChecksum, checksumPart); byte[] dataPart = new byte[messageBytes.Length]; Array.Copy(ms.ToArray(), DataPartOffset, dataPart, 0, messageBytes.Length); Assert.AreEqual(messageBytes, dataPart); }
public void WriteToValidSequenceForDefaultConstructor() { byte[] messageBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Message message = new Message(messageBytes); MemoryStream ms = new MemoryStream(); message.WriteTo(ms); Assert.AreEqual(0, ms.ToArray()[MagicNumberPartOffset]); // default magic number should be 0 byte[] checksumPart = new byte[ChecksumPartLength]; Array.Copy(ms.ToArray(), ChecksumPartOffset, checksumPart, 0, ChecksumPartLength); Assert.AreEqual(Crc32Hasher.Compute(messageBytes), checksumPart); byte[] dataPart = new byte[messageBytes.Length]; Array.Copy(ms.ToArray(), DataPartOffset, dataPart, 0, messageBytes.Length); Assert.AreEqual(messageBytes, dataPart); }