diff --git a/Directory.Packages.props b/Directory.Packages.props index 72ad532bd..d9ba14a7e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -44,7 +44,7 @@ - + diff --git a/test/NosCore.GameObject.Tests/Services/MateService/MateServiceTests.cs b/test/NosCore.GameObject.Tests/Services/MateService/MateServiceTests.cs index 80c4d5278..6a307866e 100644 --- a/test/NosCore.GameObject.Tests/Services/MateService/MateServiceTests.cs +++ b/test/NosCore.GameObject.Tests/Services/MateService/MateServiceTests.cs @@ -14,6 +14,8 @@ using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.Data.StaticEntities; +using NosCore.Packets; +using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Mates; using NosCore.Shared.Enumerations; using System.Collections.Generic; @@ -327,5 +329,27 @@ public async Task AMateIsNeverPlacedInsideAWallAsync() Assert.IsTrue(walled.IsWalkable(mate.PositionX, mate.PositionY), $"placed at {mate.PositionX},{mate.PositionY}, which is not walkable"); } + + [TestMethod] + public async Task ASpacedMateNameReachesTheClientAsOneFieldAsync() + { + var service = Build(new[] + { + new MateDto { MateId = 1, CharacterId = CharacterId, VNum = ChickenVNum, MateType = MateType.Pet, IsTeamMember = true, Name = "Joyeux Mouton" } + }, Creature(ChickenVNum, "Chicken", 157, 10)); + + var mate = (await service.LoadAsync(CharacterId))[0]; + var serializer = new Serializer(typeof(IPacket).Assembly.GetTypes() + .Where(p => p.GetInterfaces().Contains(typeof(IPacket)) && p.IsClass && !p.IsAbstract) + .ToList()); + + foreach (var packet in new IPacket[] + { mate.GenerateIn(RegionType.EN), mate.GenerateScp(RegionType.EN), mate.GenerateScn(RegionType.EN) }) + { + var line = serializer.Serialize(new[] { packet }).TrimEnd(); + StringAssert.Contains(line, "Joyeux^Mouton", + $"the name has to travel as one field: {line}"); + } + } } }