public void ProcessSinglePacketTest() { int logindeniedpacketlength = 2; byte ExtraByte1 = 0xAB; byte ExtraByte2 = 0xBA; byte LoginDeniedPacketID = 0x82; LoginRejectReason LoginDeniedReasonCode = LoginRejectReason.CharTransfer; byte[] buffer = new byte[] { LoginDeniedPacketID, (byte)LoginDeniedReasonCode, ExtraByte1, ExtraByte2 }; int bufferDataLengthExpected = buffer.Length - logindeniedpacketlength; ServerPacket packet; PacketBuffer reader = new PacketBuffer(20); using (MemoryStream ms = new MemoryStream(buffer)) { reader.Read(ms); packet = handler.RecieveSinglePacketIfAvailable(reader); } Assert.AreEqual(bufferDataLengthExpected, reader.Length); Assert.IsTrue(packet is LoginDeniedPacket); Assert.AreEqual(LoginDeniedReasonCode, ((LoginDeniedPacket)packet).Reason); Assert.AreEqual(ExtraByte1, reader[0]); Assert.AreEqual(ExtraByte2, reader[1]); }
public void OnPacketTest() { using (Client client = CreateClient()) { bool connected = false; bool gotpacket = false; List <ServerPacket> Packets = new List <ServerPacket>(); int ThisThreadID = Thread.CurrentContext.ContextID; int OnConnectedThreadID = -1; int OnPacketThreadID = -1; client.OnConnected += delegate(string server, int port) { connected = true; OnConnectedThreadID = Thread.CurrentContext.ContextID; }; client.OnUnhandledPacket += delegate(ServerPacket packet) { gotpacket = true; Packets.Add(packet); OnPacketThreadID = Thread.CurrentContext.ContextID; }; client.ConnectToServer(IPAddress.Loopback.ToString(), echoserver.Port); WaitForTrue(ref connected); if (!connected) { Assert.Inconclusive("Unable to connect to server."); } else { byte LoginDeniedPacketID = 0x82; LoginRejectReason LoginDeniedReasonCode1 = LoginRejectReason.BadPass; LoginRejectReason LoginDeniedReasonCode2 = LoginRejectReason.Idle; byte[] TwoLoginDeniedPackets = new byte[] { LoginDeniedPacketID, (byte)LoginDeniedReasonCode1, LoginDeniedPacketID, (byte)LoginDeniedReasonCode2 }; client.Send(TwoLoginDeniedPackets, 4); Assert.IsTrue(Packets.Count == 0, "We should not have been able to receive a packet this fast, the packet pump may be running synchronously."); WaitForTrue(ref gotpacket); Assert.IsTrue(gotpacket); Assert.IsTrue(Packets.Count > 0); Assert.IsTrue(Packets[0] is LoginDeniedPacket); Assert.AreEqual(LoginDeniedReasonCode1, ((LoginDeniedPacket)Packets[0]).Reason); Assert.IsTrue(Packets.Count > 1); Assert.IsTrue(Packets[1] is LoginDeniedPacket); Assert.AreEqual(LoginDeniedReasonCode2, ((LoginDeniedPacket)Packets[1]).Reason); Assert.AreEqual(ThisThreadID, OnConnectedThreadID, "OnConnected Executed on a different thread!"); Assert.AreEqual(ThisThreadID, OnPacketThreadID, "OnPacket Executed on a different thread!"); } } }
public void ProcessSinglePacketSegmentedTest() { byte LoginDeniedPacketID = 0x82; LoginRejectReason LoginDeniedReasonCode = LoginRejectReason.CharTransfer; byte[] buffer = new byte[1]; buffer[0] = LoginDeniedPacketID; int bufferLengthExpected = 1; ServerPacket packet; PacketBuffer reader = new PacketBuffer(20); using (MemoryStream ms = new MemoryStream(buffer)) { reader.Read(ms); packet = handler.RecieveSinglePacketIfAvailable(reader); } Assert.AreEqual(bufferLengthExpected, reader.Length); Assert.IsNull(packet); buffer = new byte[2]; buffer[0] = LoginDeniedPacketID; buffer[1] = (byte)LoginDeniedReasonCode; bufferLengthExpected = 0; reader = new PacketBuffer(20); using (MemoryStream ms = new MemoryStream(buffer)) { reader.Read(ms); packet = handler.RecieveSinglePacketIfAvailable(reader); } Assert.AreEqual(bufferLengthExpected, reader.Length); Assert.IsTrue(packet is LoginDeniedPacket); Assert.AreEqual(LoginDeniedReasonCode, ((LoginDeniedPacket)packet).Reason); }
public LoginDeniedPacket(LoginRejectReason reason) { Reason = reason; }