From 2d04dbdf91273632e828a7605a83380b7c78938f Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 8 Jan 2023 12:53:29 +0100 Subject: [PATCH] tests: add raid packet tests --- .../Packets/RaidPacketConverterTests.cs | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs diff --git a/Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs b/Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs new file mode 100644 index 0000000..0271172 --- /dev/null +++ b/Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs @@ -0,0 +1,134 @@ +// +// RaidPacketConverterTests.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 NosSmooth.Packets.Enums.Raids; +using NosSmooth.Packets.Server.Raids; +using NosSmooth.PacketSerializer; +using NosSmooth.PacketSerializer.Abstractions.Attributes; +using NosSmooth.PacketSerializer.Extensions; +using NosSmooth.PacketSerializer.Packets; +using Xunit; + +namespace NosSmooth.Packets.Tests.Converters.Packets; + +/// +/// Tests RaidPacketConverter. +/// +public class RaidPacketConverterTests +{ + private readonly IPacketSerializer _packetSerializer; + + /// + /// Initializes a new instance of the class. + /// + public RaidPacketConverterTests() + { + var provider = new ServiceCollection() + .AddPacketSerialization() + .BuildServiceProvider(); + + _packetSerializer = provider.GetRequiredService(); + provider.GetRequiredService().AddDefaultPackets(); + } + + /// + /// Tests that deserialization of raid packet of list members. + /// + [Fact] + public void Converter_Deserialization_ListMembers() + { + var packetResult = _packetSerializer.Deserialize + ( + "raid 0 1 2 3 4 5", + PacketSource.Server + ); + Assert.True(packetResult.IsSuccess); + var packet = (RaidPacket)packetResult.Entity; + Assert.Equal(RaidPacketType.ListMembers, packet.Type); + Assert.NotNull(packet.ListMembersPlayerIds); + Assert.Null(packet.LeaveType); + Assert.Null(packet.LeaderId); + Assert.Null(packet.PlayerHealths); + + Assert.Equal(new long[] { 1, 2, 3, 4, 5 }, packet.ListMembersPlayerIds); + } + + /// + /// Tests that deserialization of raid packet of leave. + /// + [Fact] + public void Converter_Deserialization_Leave() + { + var packetResult = _packetSerializer.Deserialize + ( + "raid 1 0", + PacketSource.Server + ); + Assert.True(packetResult.IsSuccess); + var packet = (RaidPacket)packetResult.Entity; + Assert.Equal(RaidPacketType.Leave, packet.Type); + Assert.Null(packet.ListMembersPlayerIds); + Assert.NotNull(packet.LeaveType); + Assert.Null(packet.LeaderId); + Assert.Null(packet.PlayerHealths); + + Assert.Equal(RaidLeaveType.PlayerLeft, packet.LeaveType); + } + + /// + /// Tests that deserialization of raid packet of leader. + /// + [Fact] + public void Converter_Deserialization_Leader() + { + var packetResult = _packetSerializer.Deserialize + ( + "raid 2 50", + PacketSource.Server + ); + Assert.True(packetResult.IsSuccess); + var packet = (RaidPacket)packetResult.Entity; + Assert.Equal(RaidPacketType.Leader, packet.Type); + Assert.Null(packet.ListMembersPlayerIds); + Assert.Null(packet.LeaveType); + Assert.NotNull(packet.LeaderId); + Assert.Null(packet.PlayerHealths); + + Assert.Equal(50, packet.LeaderId); + } + + /// + /// Tests that deserialization of raid packet of member healths. + /// + [Fact] + public void Converter_Deserialization_MemberHealths() + { + var packetResult = _packetSerializer.Deserialize + ( + "raid 3 1.100.100 2.90.95 3.95.90", + PacketSource.Server + ); + Assert.True(packetResult.IsSuccess); + var packet = (RaidPacket)packetResult.Entity; + Assert.Equal(RaidPacketType.PlayerHealths, packet.Type); + Assert.Null(packet.ListMembersPlayerIds); + Assert.Null(packet.LeaveType); + Assert.Null(packet.LeaderId); + Assert.NotNull(packet.PlayerHealths); + + Assert.Equal + ( + new[] + { + new RaidPlayerHealthsSubPacket(1, 100, 100), + new RaidPlayerHealthsSubPacket(2, 90, 95), + new RaidPlayerHealthsSubPacket(3, 95, 90) + }, + packet.PlayerHealths + ); + } +} \ No newline at end of file -- 2.49.0