~ruther/NosSmooth

ref: 6de4f21874ea1ac10ee4079a74cb05a4ebcae39b NosSmooth/Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs -rw-r--r-- 4.2 KiB
6de4f218 — Rutherther fix(game): add skills api to the service provider 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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;

/// <summary>
/// Tests RaidPacketConverter.
/// </summary>
public class RaidPacketConverterTests
{
    private readonly IPacketSerializer _packetSerializer;

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

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

    /// <summary>
    /// Tests that deserialization of raid packet of list members.
    /// </summary>
    [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);
    }

    /// <summary>
    /// Tests that deserialization of raid packet of leave.
    /// </summary>
    [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);
    }

    /// <summary>
    /// Tests that deserialization of raid packet of leader.
    /// </summary>
    [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);
    }

    /// <summary>
    /// Tests that deserialization of raid packet of member healths.
    /// </summary>
    [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
        );
    }
}
Do not follow this link