~ruther/NosSmooth

d7c4f20154675aaa5783e7086ec63377b05e6c02 — Rutherther 2 years ago ecb4ceb
feat(tests): add clist packet tests
1 files changed, 169 insertions(+), 0 deletions(-)

A Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs
A Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs => Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs +169 -0
@@ 0,0 1,169 @@
//
//  CListPacketConverterTests.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.Players;
using NosSmooth.Packets.Server.Login;
using NosSmooth.PacketSerializer;
using NosSmooth.PacketSerializer.Abstractions.Attributes;
using NosSmooth.PacketSerializer.Extensions;
using NosSmooth.PacketSerializer.Packets;
using Xunit;

namespace NosSmooth.Packets.Tests.Converters.Packets;

/// <summary>
/// Tests CListPacketConverter.
/// </summary>
public class CListPacketConverterTests
{
    private readonly IPacketSerializer _packetSerializer;

    /// <summary>
    /// Initializes a new instance of the <see cref="CListPacketConverterTests"/> class.
    /// </summary>
    public CListPacketConverterTests()
    {
        var provider = new ServiceCollection()
            .AddPacketSerialization()
            .BuildServiceProvider();

        _packetSerializer = provider.GetRequiredService<IPacketSerializer>();
        provider.GetRequiredService<IPacketTypesRepository>().AddDefaultPackets();
    }

    /// <summary>
    /// Tests that the serialization runs correctly.
    /// </summary>
    [Fact]
    public void Converter_Serialization_SerializesCorrectly()
    {
        var packet = new CListPacket
        (
            1,
            "derfy",
            0,
            SexType.Female,
            HairStyle.HairStyleA,
            HairColor.FlashPurple,
            0,
            PlayerClass.Archer,
            99,
            80,
            new CListEquipmentSubPacket
            (
                null,
                null,
                4452,
                4468,
                4468,
                4840,
                4131,
                null
            ),
            1,
            string.Empty,
            1,
            1,
            new[]
            {
                new CListPetSubPacket(0, 2105),
                new CListPetSubPacket(0, 319),
                new CListPetSubPacket(0, 2106),
                new CListPetSubPacket(0, 2107),
                new CListPetSubPacket(0, 2108),
                new CListPetSubPacket(0, 2100),
                new CListPetSubPacket(0, 2102),
                new CListPetSubPacket(0, 317),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
            },
            0,
            0
        );
        var packetResult = _packetSerializer.Serialize(packet);
        Assert.True(packetResult.IsSuccess);

        Assert.Equal
        (
            "clist 1 derfy 0 1 0 106 0 2 99 80 -1.-1.4452.4468.4840.4131.-1.-1 99  1 1 0.2105.0.319.0.2106.0.2107.0.2108.0.2100.0.2102.0.317.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1 0 0",
            packetResult.Entity
        );
    }

    /// <summary>
    /// Tests that the deserialization runs correctly.
    /// </summary>
    [Fact]
    public void Converter_Deserialization_DeserializesCorrectly()
    {
        var packetResult = _packetSerializer.Deserialize
        (
            "clist 2 KexpExp 0 1 0 9 0 0 22 0 -1.12.1.8.-1.-1.-1.-1.-1.-1 20  1 1 -1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1. 0 0",
            PacketSource.Server
        );
        Assert.True(packetResult.IsSuccess);

        var expectedPacket = new CListPacket
        (
            1,
            "derfy",
            0,
            SexType.Female,
            HairStyle.HairStyleA,
            HairColor.FlashPurple,
            0,
            PlayerClass.Archer,
            99,
            80,
            new CListEquipmentSubPacket
            (
                null,
                null,
                4452,
                4468,
                4840,
                4131,
                null,
                null
            ),
            1,
            string.Empty,
            1,
            1,
            new[]
            {
                new CListPetSubPacket(0, 2105),
                new CListPetSubPacket(0, 319),
                new CListPetSubPacket(0, 2106),
                new CListPetSubPacket(0, 2107),
                new CListPetSubPacket(0, 2108),
                new CListPetSubPacket(0, 2100),
                new CListPetSubPacket(0, 2102),
                new CListPetSubPacket(0, 317),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
                new CListPetSubPacket(null, null),
            },
            0,
            0
        );
        Assert.Equal(expectedPacket, packetResult.Entity);
    }
}
\ No newline at end of file

Do not follow this link