public void TestEncodeAndDecode() { RTTPacket sentP = new RTTPacket { DCIDLength = 2, DCID = new byte[] { 0x1a, 0x85 }, PacketNumberLength = 3, SCIDLength = 2, SCID = new byte[] { 0x09, 0x34 }, PacketNumber = 91235, }; // Create a size 2 payload sentP.AddFrame(new PaddingFrame()); sentP.AddFrame(new PaddingFrame()); byte[] b = sentP.Encode(); Packet p = Packet.Unpack(b); Assert.AreEqual(p.GetType(), typeof(RTTPacket)); RTTPacket recP = p as RTTPacket; Assert.AreEqual((UInt32)2, recP.DCIDLength); CollectionAssert.AreEqual(new byte[] { 0x1a, 0x85 }, recP.DCID); Assert.AreEqual((UInt32)2, recP.SCIDLength); CollectionAssert.AreEqual(new byte[] { 0x09, 0x34 }, recP.SCID); Assert.AreEqual((UInt32)3, recP.PacketNumberLength); Assert.AreEqual((UInt32)91235, recP.PacketNumber); Assert.AreEqual((UInt64)5, recP.Length.Value); // 5 = PacketNumberLength + Payload.Length }