コード例 #1
0
        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));
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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));
        }