Packet FakeDataPacketRandom(Random rand) { //Random messages var messages = new MessageExample[rand.Next(0, 30)]; for (int i = 0; i < messages.Length; i++) { messages[i] = new MessageExample(rand.Next(int.MinValue, int.MaxValue), RandomExtensions.RandomString(rand.Next(1, 25), rand)); } //Random Id ushort id = (ushort)rand.Next(0, ushort.MaxValue); ushort ackId = (ushort)rand.Next(0, ushort.MaxValue); //Random ackedBits var buffer = new byte[Packet.ackedBytesLength]; rand.NextBytes(buffer); var ackedBits = new AckBitArray(buffer); //Random ulong for salt var buf = new byte[8]; rand.NextBytes(buf); var salt = (ulong)BitConverter.ToInt64(buf, 0); return(new Packet(id, ackId, ackedBits, PacketType.dataUnreliable, salt, messages, byte.MaxValue)); }
public void Decode_RandomSerializedPacket_ReturnsCorrectHeaderAndDataInfo() { Random rand = new Random(0); for (int i = 0; i < 100; i++) { var randomPacket = FakeDataPacketRandom(rand); var expectedData = randomPacket.GetMessages(); var serialized = randomPacket.Serialize(); (var decodedHeader, var decodedData) = Packet.Deserialize(serialized); Assert.AreEqual(decodedHeader.id, randomPacket.Id); Assert.AreEqual(decodedHeader.ackId, randomPacket.AckId); Assert.AreEqual(decodedHeader.packetType, randomPacket.Type); Assert.AreEqual(decodedHeader.salt, randomPacket.Salt); Assert.IsTrue(decodedHeader.ackedBits == randomPacket.AckedBits); //Check data Array for (int j = 0; j < expectedData.Length; j++) { Assert.AreEqual(decodedData[j].Type, MessageType.MessageExample); MessageExample md = (MessageExample)decodedData[j]; MessageExample me = (MessageExample)expectedData[j]; Assert.AreEqual(md.IntData, me.IntData); Assert.AreEqual(md.StringData, me.StringData); } } }
Packet FakeDataPacketB() { //Engineered to take up all byte space List <Message> data = new List <Message>(); int lengthTotal = 0; MessageExample m = new MessageExample(0, "Test12"); //17 byte message for 17*59 = 1003 max size while (lengthTotal < PacketManager._maxPacketDataBytes) { data.Add(m); lengthTotal += m.Length; } var ackedBits = new AckBitArray(Packet.ackedBitsLength, 0xFFFFFFFFFFFFFFFF); return(new Packet(ushort.MaxValue, ushort.MaxValue, ackedBits, PacketType.dataUnreliable, ulong.MaxValue, data.ToArray(), byte.MaxValue)); }