From 0c7f2309b45f113ce50ae69ebc3b95d5af27083b Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 8 Jan 2023 10:32:20 +0100 Subject: [PATCH] tests: fix tests for new version --- .../Walking/WalkCommandHandlerTests.cs | 51 +++++++-- .../Packets/CListPacketConverterTests.cs | 104 +++++++++++------- .../Packets/InPacketConverterTests.cs | 5 +- 3 files changed, 109 insertions(+), 51 deletions(-) diff --git a/Tests/NosSmooth.Core.Tests/Commands/Walking/WalkCommandHandlerTests.cs b/Tests/NosSmooth.Core.Tests/Commands/Walking/WalkCommandHandlerTests.cs index e0f2403903360e31e6e2ff82df51750fa87a00f7..c3c0f8cf337477bd37526744ef3e7f1519eacfc1 100644 --- a/Tests/NosSmooth.Core.Tests/Commands/Walking/WalkCommandHandlerTests.cs +++ b/Tests/NosSmooth.Core.Tests/Commands/Walking/WalkCommandHandlerTests.cs @@ -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(), + 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); } /// @@ -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(); diff --git a/Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs b/Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs index 0d999436c672d1a1766cd5b4b9d3caa1e764affd..fb254b3fedc8e5faba7519942fc30215f406434f 100644 --- a/Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs +++ b/Tests/NosSmooth.Packets.Tests/Converters/Packets/CListPacketConverterTests.cs @@ -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[] + new OptionalWrapper>[] { - 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(new CListPetSubPacket(0, 2105)), + new NullableWrapper(new CListPetSubPacket(0, 319)), + new NullableWrapper(new CListPetSubPacket(0, 2106)), + new NullableWrapper(new CListPetSubPacket(0, 2107)), + new NullableWrapper(new CListPetSubPacket(0, 2108)), + new NullableWrapper(new CListPetSubPacket(0, 2100)), + new NullableWrapper(new CListPetSubPacket(0, 2102)), + new NullableWrapper(new CListPetSubPacket(0, 317)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(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[] + new OptionalWrapper>[] { - 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(new CListPetSubPacket(0, 2105)), + new NullableWrapper(new CListPetSubPacket(0, 319)), + new NullableWrapper(new CListPetSubPacket(0, 2106)), + new NullableWrapper(new CListPetSubPacket(0, 2107)), + new NullableWrapper(new CListPetSubPacket(0, 2108)), + new NullableWrapper(new CListPetSubPacket(0, 2100)), + new NullableWrapper(new CListPetSubPacket(0, 2102)), + new NullableWrapper(new CListPetSubPacket(0, 317)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), + new NullableWrapper(new CListPetSubPacket(null, null)), }, 0, 0 ); Assert.Equal(expectedPacket, packetResult.Entity); } + + /// + /// Tests that deserialization of pets list with optional values works correctly. + /// + [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 diff --git a/Tests/NosSmooth.Packets.Tests/Converters/Packets/InPacketConverterTests.cs b/Tests/NosSmooth.Packets.Tests/Converters/Packets/InPacketConverterTests.cs index 19357302084f960f47967880557f0dfee9a5a4e1..716e6a0d42ed5cfc073b7043f0cbf59bcbb2a564 100644 --- a/Tests/NosSmooth.Packets.Tests/Converters/Packets/InPacketConverterTests.cs +++ b/Tests/NosSmooth.Packets.Tests/Converters/Packets/InPacketConverterTests.cs @@ -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(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(null), null, 26, false,