From c0805850c10eb0a9a67a28e58748b8cfe2dcc023 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sat, 11 Jul 2020 01:01:57 -0700 Subject: [PATCH] Adds more packet tests (#176) --- .../Old/Outgoing/MovementPacketTests.cs | 112 ++++++++++++++++++ .../Old/Outgoing/ObjectHelpResponseTests.cs | 35 ++++++ .../Old Packets/ObjectHelpResponsePackets.cs | 4 +- 3 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 Projects/Server.Tests/Network/Packets/Old/Outgoing/MovementPacketTests.cs create mode 100644 Projects/Server.Tests/Network/Packets/Old/Outgoing/ObjectHelpResponseTests.cs diff --git a/Projects/Server.Tests/Network/Packets/Old/Outgoing/MovementPacketTests.cs b/Projects/Server.Tests/Network/Packets/Old/Outgoing/MovementPacketTests.cs new file mode 100644 index 000000000..4da64e50b --- /dev/null +++ b/Projects/Server.Tests/Network/Packets/Old/Outgoing/MovementPacketTests.cs @@ -0,0 +1,112 @@ +using System; +using System.Buffers; +using Server.Network; +using Xunit; + +namespace Server.Tests.Network.Packets +{ + public class MovementPacketTests : IClassFixture + { + [Theory] + [InlineData(0)] + [InlineData(1)] + [InlineData(2)] + public void TestSpeedControl(byte speedControl) + { + Span data = new SpeedControl(speedControl).Compile(); + + Span expectedData = stackalloc byte[6]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0xBF); // Packet ID + expectedData.Write(ref pos, (ushort)6); // Length + expectedData.Write(ref pos, (ushort)0x26); // Command + expectedData.Write(ref pos, speedControl); + + AssertThat.Equal(data, expectedData); + } + + [Fact] + public void TestMovePlayer() + { + const Direction d = Direction.Left; + Span data = new MovePlayer(d).Compile(); + + Span expectedData = stackalloc byte[2]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0x97); // Packet ID + expectedData.Write(ref pos, (byte)d); + + AssertThat.Equal(data, expectedData); + } + + [Fact] + public void TestMovementRej() + { + Mobile m = new Mobile(0x1); + m.DefaultMobileInit(); + + const byte seq = 100; + + Span data = new MovementRej(seq, m).Compile(); + + Span expectedData = stackalloc byte[8]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0x21); // Packet ID + expectedData.Write(ref pos, seq); + expectedData.Write(ref pos, (short)m.X); + expectedData.Write(ref pos, (short)m.Y); + expectedData.Write(ref pos, (byte)m.Direction); + expectedData.Write(ref pos, (byte)m.Z); + + AssertThat.Equal(data, expectedData); + } + + [Fact] + public void TestMovementAck() + { + Mobile m = new Mobile(0x1); + m.DefaultMobileInit(); + + const byte seq = 100; + int noto = Notoriety.Compute(m, m); + + Span data = MovementAck.Instantiate(seq, m).Compile(); + + Span expectedData = stackalloc byte[3]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0x22); // Packet ID + expectedData.Write(ref pos, seq); + expectedData.Write(ref pos, (byte)noto); + + AssertThat.Equal(data, expectedData); + } + + [Fact] + public void TestNullFastwalkStack() + { + Span data = new NullFastwalkStack().Compile(); + + Span expectedData = stackalloc byte[29]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0xBF); // Packet ID + expectedData.Write(ref pos, (ushort)29); // Length + expectedData.Write(ref pos, (short)0x1); // Sub-packet + +#if NO_LOCAL_INIT + expectedData.Write(ref pos, 0); // Key 1 + expectedData.Write(ref pos, 0); // Key 2 + expectedData.Write(ref pos, 0); // Key 3 + expectedData.Write(ref pos, 0); // Key 4 + expectedData.Write(ref pos, 0); // Key 5 + expectedData.Write(ref pos, 0); // Key 6 +#endif + + AssertThat.Equal(data, expectedData); + } + } +} diff --git a/Projects/Server.Tests/Network/Packets/Old/Outgoing/ObjectHelpResponseTests.cs b/Projects/Server.Tests/Network/Packets/Old/Outgoing/ObjectHelpResponseTests.cs new file mode 100644 index 000000000..f0109ba55 --- /dev/null +++ b/Projects/Server.Tests/Network/Packets/Old/Outgoing/ObjectHelpResponseTests.cs @@ -0,0 +1,35 @@ +using System; +using System.Buffers; +using Server.Network; +using Xunit; + +namespace Server.Tests.Network.Packets +{ + public class ObjectHelpResponseTests + { + [Fact] + public void TestObjectHelpResponse() + { + Serial s = 0x100; + string text = "This is some testing text"; + + Span data = new ObjectHelpResponse(s, text).Compile(); + + int length = 9 + text.Length * 2; + + Span expectedData = stackalloc byte[length]; + int pos = 0; + + expectedData.Write(ref pos, (byte)0xB7); // Packet ID + expectedData.Write(ref pos, (ushort)length); // Length + expectedData.Write(ref pos, s); + expectedData.WriteBigUni(ref pos, text); + +#if NO_LOCAL_INIT + expectedData.Write(ref pos, (ushort)0); // Terminator +#endif + + AssertThat.Equal(data, expectedData); + } + } +} diff --git a/Projects/Server/Network/Packets/Old Packets/ObjectHelpResponsePackets.cs b/Projects/Server/Network/Packets/Old Packets/ObjectHelpResponsePackets.cs index 1be6a902f..d19b284ec 100644 --- a/Projects/Server/Network/Packets/Old Packets/ObjectHelpResponsePackets.cs +++ b/Projects/Server/Network/Packets/Old Packets/ObjectHelpResponsePackets.cs @@ -23,11 +23,11 @@ namespace Server.Network { public sealed class ObjectHelpResponse : Packet { - public ObjectHelpResponse(IEntity e, string text) : base(0xB7) + public ObjectHelpResponse(Serial e, string text) : base(0xB7) { EnsureCapacity(9 + text.Length * 2); - Stream.Write(e.Serial); + Stream.Write(e); Stream.WriteBigUniNull(text); } }