// // 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.JoinLeaveType); 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.JoinLeave, packet.Type); Assert.Null(packet.ListMembersPlayerIds); Assert.NotNull(packet.JoinLeaveType); Assert.Null(packet.LeaderId); Assert.Null(packet.PlayerHealths); Assert.Equal(RaidJoinLeaveType.PlayerLeft, packet.JoinLeaveType); } /// /// 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.JoinLeaveType); 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.JoinLeaveType); 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 ); } }