From d40bd57dbe8830b6320f41d354d44f815ab10230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Wed, 29 Dec 2021 22:40:05 +0100 Subject: [PATCH] feat: add move packet with tests --- .../Packets/Server/Map/MovePacket.cs | 34 ++++++++++ .../Packets/MovePacketConverterTests.cs | 65 +++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 Core/NosSmooth.Packets/Packets/Server/Map/MovePacket.cs create mode 100644 Tests/NosSmooth.Packets.Tests/Converters/Packets/MovePacketConverterTests.cs diff --git a/Core/NosSmooth.Packets/Packets/Server/Map/MovePacket.cs b/Core/NosSmooth.Packets/Packets/Server/Map/MovePacket.cs new file mode 100644 index 0000000000000000000000000000000000000000..ab67b084b6236774cc5b6155bec1fbf430d52241 --- /dev/null +++ b/Core/NosSmooth.Packets/Packets/Server/Map/MovePacket.cs @@ -0,0 +1,34 @@ +// +// MovePacket.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using NosCore.Shared.Enumerations; +using NosSmooth.Packets.Attributes; + +namespace NosSmooth.Packets.Packets.Server.Map; + +/// +/// The entity has moved to the given position. +/// +/// +/// +/// +/// +/// +[PacketHeader("mv", PacketSource.Server)] +[GenerateSerializer] +public record MovePacket +( + [PacketIndex(0)] + VisualType EntityType, + [PacketIndex(1)] + long EntityId, + [PacketIndex(2)] + short MapX, + [PacketIndex(3)] + short MapY, + [PacketIndex(4)] + byte Speed +) : IPacket; \ No newline at end of file diff --git a/Tests/NosSmooth.Packets.Tests/Converters/Packets/MovePacketConverterTests.cs b/Tests/NosSmooth.Packets.Tests/Converters/Packets/MovePacketConverterTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..b8290a3f3de060bff8707711b0cc6711824dfb14 --- /dev/null +++ b/Tests/NosSmooth.Packets.Tests/Converters/Packets/MovePacketConverterTests.cs @@ -0,0 +1,65 @@ +// +// MovePacketConverterTests.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Microsoft.Extensions.DependencyInjection; +using NosCore.Shared.Enumerations; +using NosSmooth.Packets.Attributes; +using NosSmooth.Packets.Converters; +using NosSmooth.Packets.Converters.Packets; +using NosSmooth.Packets.Extensions; +using NosSmooth.Packets.Packets.Server.Map; +using NosSmooth.Packets.Packets.Server.Map.Generated; +using Xunit; + +namespace NosSmooth.Packets.Tests.Converters.Packets; + +/// +/// Tests . +/// +public class MovePacketConverterTests +{ + private readonly IPacketSerializer _packetSerializer; + + /// + /// Initializes a new instance of the class. + /// + public MovePacketConverterTests() + { + var provider = new ServiceCollection() + .AddSingleton() + .AddPacketSerialization() + .BuildServiceProvider(); + + _packetSerializer = provider.GetRequiredService(); + } + + /// + /// Tests that the converter serializes mv packet correctly. + /// + [Fact] + public void Converter_Serialization_SerializesCorrectly() + { + MovePacket packet = new MovePacket(VisualType.Monster, 122, 15, 20, 10); + var result = _packetSerializer.Serialize(packet); + Assert.True(result.IsSuccess); + + Assert.Equal("mv 3 122 15 20 10", result.Entity); + } + + /// + /// Tests that the converter serializes mv packet correctly. + /// + [Fact] + public void Converter_Deserialization_DeserializesCorrectly() + { + var packetString = "mv 3 122 15 20 10"; + var result = _packetSerializer.Deserialize(packetString, PacketSource.Server); + Assert.True(result.IsSuccess); + + MovePacket actualPacket = new MovePacket(VisualType.Monster, 122, 15, 20, 10); + Assert.Equal(result.Entity, actualPacket); + } +} \ No newline at end of file