~ruther/NosSmooth

ref: aa2fdc4455c4df918f5e0a42b22216fd0856350b NosSmooth/Tests/NosSmooth.Packets.Tests/Converters/Packets/RaidPacketConverterTests.cs -rw-r--r-- 4.2 KiB
aa2fdc44 — František Boháček feat(packets): make lists and conditional parameters non-optional non-nullable 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