示例#1
0
        public void TestGetRequestPacketExists()
        {
            PacketQueue queue = new PacketQueue();
            IPacketWrapper packetRequest = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper packetResponse = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Response,
                    RequestId = 1
                }
            };

            queue.PacketSend(packetRequest);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);

            IPacketWrapper fetchedRequestPacket = queue.GetRequestPacket(packetResponse);

            Assert.AreEqual(packetRequest, fetchedRequestPacket);
        }
示例#2
0
        public void TestPacketEmptyConstructor()
        {
            MockPacket packet = new MockPacket();

            Assert.AreEqual(PacketOrigin.None, packet.Packet.Origin);
            Assert.AreEqual(PacketType.None, packet.Packet.Type);
            Assert.IsNull(packet.Packet.RequestId);
            Assert.GreaterOrEqual(DateTime.Now, packet.Packet.Stamp);
        }
示例#3
0
        public void TestPacketParameterConstructor()
        {
            MockPacket packet = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Server,
                    Type = PacketType.Response
                }
            };

            Assert.AreEqual(PacketOrigin.Server, packet.Packet.Origin);
            Assert.AreEqual(PacketType.Response, packet.Packet.Type);
            Assert.IsNull(packet.Packet.RequestId);
            Assert.GreaterOrEqual(DateTime.Now, packet.Packet.Stamp);
        }
示例#4
0
        public IPacketWrapper Deserialize(byte[] packetData)
        {
            int length = BitConverter.ToInt32(packetData, 12);

            MockPacket wrapper = new MockPacket {
                Packet = {
                    Origin = (PacketOrigin)BitConverter.ToInt32(packetData, 0),
                    Type = (PacketType)BitConverter.ToInt32(packetData, 4),
                    RequestId = BitConverter.ToInt32(packetData, 8)
                },
                Text = Encoding.ASCII.GetString(packetData, (int)this.PacketHeaderSize, length)
            };

            wrapper.Packet.DebugText = String.Format("{0} {1} {2} {3}", wrapper.Packet.Origin, wrapper.Packet.Type, wrapper.Packet.RequestId, wrapper.Packet.Text);

            return wrapper;
        }
示例#5
0
        protected virtual void OnPacketReceived(IClient client, MockPacket request)
        {
            PacketReceivedHandler handler = PacketReceived;

            if (handler != null) {
                handler(client, request);
            }
        }
示例#6
0
        public void TestPacketReceivedRemovedAndPopped()
        {
            PacketQueue queue = new PacketQueue();

            IPacketWrapper firstPacketRequest = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper secondPacketRequest = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 2
                }
            };

            IPacketWrapper firstPacketResponse = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Response,
                    RequestId = 1
                }
            };

            queue.PacketSend(firstPacketRequest);
            queue.PacketSend(secondPacketRequest);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);
            Assert.AreEqual(1, queue.QueuedPackets.Count);

            IPacketWrapper poppedPacket = queue.PacketReceived(firstPacketResponse);
            Assert.AreEqual(secondPacketRequest, poppedPacket);

            queue.PacketSend(poppedPacket);

            Assert.AreEqual(1, queue.OutgoingPackets.Count);
            Assert.AreEqual(0, queue.QueuedPackets.Count);
        }
示例#7
0
        public void TestRestartConnectionOnQueueFailureTruey()
        {
            PacketQueue queue = new PacketQueue();
            IPacketWrapper packet = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1,
                    Stamp = DateTime.Now.AddMinutes(-5)
                }
            };

            IPacketWrapper poppedPacket = queue.PacketSend(packet);

            Assert.AreEqual(packet, poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);

            Assert.IsTrue(queue.RestartConnectionOnQueueFailure());
        }
示例#8
0
        public void TestRestartConnectionOnQueueFailureFalsey()
        {
            PacketQueue queue = new PacketQueue();
            IPacketWrapper packet = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper poppedPacket = queue.PacketSend(packet);

            Assert.AreEqual(packet, poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);

            Assert.IsFalse(queue.RestartConnectionOnQueueFailure());
        }
示例#9
0
        public void TestPacketSendQueued()
        {
            PacketQueue queue = new PacketQueue();
            IPacketWrapper firstPacket = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper poppedPacket = queue.PacketSend(firstPacket);

            // Client would send to the server.

            Assert.AreEqual(firstPacket, poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);

            IPacketWrapper secondPacket = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            poppedPacket = queue.PacketSend(secondPacket);

            // Popped packet is null, client would essentially ignore it until later.

            Assert.IsNull(poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);
            Assert.AreEqual(1, queue.QueuedPackets.Count);
        }
示例#10
0
        public void TestPacketSendImmediate()
        {
            PacketQueue queue = new PacketQueue();
            IPacketWrapper packet = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper poppedPacket = queue.PacketSend(packet);

            // Client would send to the server.

            Assert.AreEqual(packet, poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);
            Assert.AreEqual(0, queue.QueuedPackets.Count);
        }
示例#11
0
        public void TestPacketReceivedRemoveFromOutgoing()
        {
            PacketQueue queue = new PacketQueue();

            IPacketWrapper sentPacket = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Request,
                    RequestId = 1
                }
            };

            IPacketWrapper recievedPacket = new MockPacket() {
                Packet = {
                    Origin = PacketOrigin.Client,
                    Type = PacketType.Response,
                    RequestId = 1
                }
            };

            IPacketWrapper poppedPacket = queue.PacketSend(sentPacket);

            // Client would send to the server.

            Assert.AreEqual(sentPacket, poppedPacket);
            Assert.AreEqual(1, queue.OutgoingPackets.Count);
            Assert.AreEqual(0, queue.QueuedPackets.Count);

            poppedPacket = queue.PacketReceived(recievedPacket);

            Assert.IsNull(poppedPacket);
            Assert.AreEqual(0, queue.OutgoingPackets.Count);
            Assert.AreEqual(0, queue.QueuedPackets.Count);
        }