@@ 30,7 30,17 @@ public class WalkCommandHandlerTests
{
var calledPetWalk = false;
var calledPlayerWalk = false;
- var command = new WalkCommand(0, 0, new[] { 1, 2 }, 0);
+ var command = new WalkCommand
+ (
+ 0,
+ 0,
+ new (int, short, short)[]
+ {
+ (1, 0, 0),
+ (2, 0, 0)
+ },
+ 0
+ );
var walkHandler = new WalkCommandHandler
(
new FakeNostaleClient
@@ 66,7 76,13 @@ public class WalkCommandHandlerTests
(
0,
0,
- new[] { 2, 5, 7, 9 },
+ new (int, short, short)[]
+ {
+ (2, 0, 0),
+ (5, 0, 0),
+ (7, 0, 0),
+ (9, 0, 0),
+ },
0,
true,
false,
@@ 104,7 120,7 @@ public class WalkCommandHandlerTests
(
10,
15,
- Array.Empty<int>(),
+ null,
0,
true,
false,
@@ 142,7 158,14 @@ public class WalkCommandHandlerTests
(
10,
15,
- new[] { 1, 2, 5, 7, 8 },
+ new (int, short, short)[]
+ {
+ (1, 0, 0),
+ (2, 0, 0),
+ (5, 0, 0),
+ (7, 0, 0),
+ (8, 0, 0),
+ },
0,
true,
false,
@@ 156,7 179,7 @@ public class WalkCommandHandlerTests
{
if (c is PetWalkCommand petWalkCommand)
{
- if (command.PetSelectors.Contains(petWalkCommand.PetSelector))
+ if (command.Pets?.Select(x => x.PetSelector).Contains(petWalkCommand.PetSelector) ?? false)
{
calledCount++;
}
@@ 171,7 194,7 @@ public class WalkCommandHandlerTests
);
await walkHandler.HandleCommand(command);
- Assert.Equal(command.PetSelectors.Length, calledCount);
+ Assert.Equal(command.Pets?.Count ?? -1, calledCount);
}
/// <summary>
@@ 185,7 208,14 @@ public class WalkCommandHandlerTests
(
10,
15,
- new[] { 1, 2, 5, 7, 8 },
+ new (int, short, short)[]
+ {
+ (1, 0, 1),
+ (2, 1, 0),
+ (5, 0, 1),
+ (7, 1, 0),
+ (8, 0, 1),
+ },
0,
true,
false,
@@ 199,8 229,11 @@ public class WalkCommandHandlerTests
{
if (c is PetWalkCommand petWalkCommand)
{
- Assert.True((command.TargetX - petWalkCommand.TargetX) <= 3);
- Assert.True((command.TargetY - petWalkCommand.TargetY) <= 3);
+ Assert.True
+ (
+ (petWalkCommand.TargetX == 0 && petWalkCommand.TargetY == 1)
+ || (petWalkCommand.TargetX == 1 && petWalkCommand.TargetY == 0)
+ );
Assert.Equal(command.ReturnDistanceTolerance, petWalkCommand.ReturnDistanceTolerance);
}
return Result.FromSuccess();
@@ 4,6 4,7 @@
// 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 System.Linq;
using Microsoft.Extensions.DependencyInjection;
using NosSmooth.Packets.Enums.Players;
using NosSmooth.Packets.Server.Login;
@@ 60,34 61,34 @@ public class CListPacketConverterTests
null,
4452,
4468,
- 4468,
4840,
4131,
+ null,
null
),
- 1,
+ 99,
string.Empty,
1,
1,
- new NullableWrapper<CListPetSubPacket>[]
+ new OptionalWrapper<NullableWrapper<CListPetSubPacket>>[]
{
- 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),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2105)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 319)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2106)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2107)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2108)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2100)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2102)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 317)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
},
0,
0
@@ 110,7 111,7 @@ public class CListPacketConverterTests
{
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",
+ "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",
PacketSource.Server
);
Assert.True(packetResult.IsSuccess);
@@ 138,33 139,56 @@ public class CListPacketConverterTests
null,
null
),
- 1,
+ 99,
string.Empty,
1,
1,
- new NullableWrapper<CListPetSubPacket>[]
+ new OptionalWrapper<NullableWrapper<CListPetSubPacket>>[]
{
- 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),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2105)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 319)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2106)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2107)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2108)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2100)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 2102)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(0, 317)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
+ new NullableWrapper<CListPetSubPacket>(new CListPetSubPacket(null, null)),
},
0,
0
);
Assert.Equal(expectedPacket, packetResult.Entity);
}
+
+ /// <summary>
+ /// Tests that deserialization of pets list with optional values works correctly.
+ /// </summary>
+ [Fact]
+ public void Converter_Deserialization_PresentFalseForNotPresent()
+ {
+ 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 packet = (CListPacket)packetResult.Entity;
+ Assert.Equal(27, packet.PetsSubPacket.Count);
+
+ Assert.False(packet.PetsSubPacket.Last().Present);
+ for (var i = 0; i < 26; i++)
+ {
+ Assert.True(packet.PetsSubPacket[i].Present);
+ Assert.True(packet.PetsSubPacket[i].Value.Value is null);
+ }
+ }
}=
\ No newline at end of file
@@ 13,6 13,7 @@ using NosSmooth.Packets.Server.Character;
using NosSmooth.Packets.Server.Maps;
using NosSmooth.Packets.Server.Weapons;
using NosSmooth.PacketSerializer;
+using NosSmooth.PacketSerializer.Abstractions;
using NosSmooth.PacketSerializer.Abstractions.Attributes;
using NosSmooth.PacketSerializer.Extensions;
using NosSmooth.PacketSerializer.Packets;
@@ 91,7 92,7 @@ public class InPacketConverterTests
0,
new UpgradeRareSubPacket(10, 8),
new UpgradeRareSubPacket(10, 8),
- new FamilySubPacket(null, null),
+ new NullableWrapper<FamilySubPacket>(null),
null,
26,
false,
@@ 174,7 175,7 @@ public class InPacketConverterTests
0,
new UpgradeRareSubPacket(10, 8),
new UpgradeRareSubPacket(10, 8),
- new FamilySubPacket("-1", null),
+ new NullableWrapper<FamilySubPacket>(null),
null,
26,
false,