diff --git a/Projects/Server.Tests/Server.Tests.csproj b/Projects/Server.Tests/Server.Tests.csproj
index 06e81f456..71402d410 100644
--- a/Projects/Server.Tests/Server.Tests.csproj
+++ b/Projects/Server.Tests/Server.Tests.csproj
@@ -4,8 +4,7 @@
Debug;Release;Analyze
-
-
+
diff --git a/Projects/Server.Tests/Tests/Collections/PooledRefQueueTests.cs b/Projects/Server.Tests/Tests/Collections/PooledRefQueueTests.cs
index a9d3576b0..4ec313394 100644
--- a/Projects/Server.Tests/Tests/Collections/PooledRefQueueTests.cs
+++ b/Projects/Server.Tests/Tests/Collections/PooledRefQueueTests.cs
@@ -1,5 +1,4 @@
using System;
-using Moq;
using Server.Collections;
using Server.Random;
using Xunit;
@@ -8,22 +7,57 @@ namespace Server.Tests;
public sealed class PooledRefQueueTests : IDisposable
{
+ private class MockedRandomSource(int queueCount, int mockedValue) : IRandomSource
+ {
+ private int _queueCount = queueCount;
+ private int _mockedValue = mockedValue;
+
+ public int Next() => throw new NotImplementedException();
+
+ public int Next(int maxValue) => _mockedValue;
+
+ public int Next(int minValue, int count) => throw new NotImplementedException();
+
+ public uint Next(uint maxValue) => throw new NotImplementedException();
+
+ public uint Next(uint minValue, uint count) => throw new NotImplementedException();
+
+ public long Next(long maxValue) => throw new NotImplementedException();
+
+ public long Next(long minValue, long count) => throw new NotImplementedException();
+
+ public double NextDouble() => throw new NotImplementedException();
+
+ public void NextBytes(Span buffer)
+ {
+ throw new NotImplementedException();
+ }
+
+ public int NextInt() => throw new NotImplementedException();
+
+ public uint NextUInt() => throw new NotImplementedException();
+
+ public ulong NextULong() => throw new NotImplementedException();
+
+ public bool NextBool() => throw new NotImplementedException();
+
+ public byte NextByte() => throw new NotImplementedException();
+
+ public float NextFloat() => throw new NotImplementedException();
+
+ public float NextFloatNonZero() => throw new NotImplementedException();
+
+ public double NextDoubleNonZero() => throw new NotImplementedException();
+
+ public double NextDoubleHighRes() => throw new NotImplementedException();
+ }
+
public void Dispose() => RandomSources.SetRng(null);
private static void PrepareRng(int queueCount, int rngValue)
{
- Mock mockRng = new Mock();
- mockRng
- .Setup(rng => rng.Next(It.IsAny()))
- .Returns(
- (int size) =>
- {
- Assert.Equal(queueCount, size);
- return rngValue;
- }
- );
-
- RandomSources.SetRng(mockRng.Object);
+ var mockedRng = new MockedRandomSource(queueCount, rngValue);
+ RandomSources.SetRng(mockedRng);
}
[Fact]
diff --git a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/AccountPacketTests.cs b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/AccountPacketTests.cs
index a0f480386..046fc0cd8 100644
--- a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/AccountPacketTests.cs
+++ b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/AccountPacketTests.cs
@@ -1,290 +1,327 @@
using System;
using System.Collections.Generic;
using System.Net;
-using Moq;
using Server.Accounting;
using Server.Network;
using Xunit;
-namespace Server.Tests.Network
+namespace Server.Tests.Network;
+
+public class AccountPacketTests : IClassFixture
{
- public class AccountPacketTests : IClassFixture
+ private class MockedAccount : IAccount
{
- public readonly Dictionary dictionary = new();
- public Mock accountMock;
+ public int TotalGold { get; }
+ public int TotalPlat { get; }
+ public bool DepositGold(int amount) => throw new NotImplementedException();
- public AccountPacketTests()
+ public bool DepositPlat(int amount) => throw new NotImplementedException();
+
+ public bool WithdrawGold(int amount) => throw new NotImplementedException();
+
+ public bool WithdrawPlat(int amount) => throw new NotImplementedException();
+
+ public long GetTotalGold() => throw new NotImplementedException();
+
+ public int CompareTo(IAccount other) => throw new NotImplementedException();
+
+ public string Username { get; set; }
+ public string Email { get; set; }
+ public AccessLevel AccessLevel { get; set; }
+ public int Length { get; }
+ public int Limit { get; }
+ public int Count { get; }
+
+ private Dictionary _mobiles = new();
+
+ public Mobile this[int index]
{
- accountMock = new Mock();
- accountMock
- .Setup(sb => sb[It.IsAny()])
- .Returns((int key) => dictionary[key]);
- accountMock
- .SetupSet(sb => sb[It.IsAny()] = It.IsAny())
- .Callback(
- (int key, Mobile m) =>
- {
- dictionary[key] = m;
- if (m != null)
- {
- m.Account = accountMock.Object;
- }
- });
- }
-
- [Fact]
- public void TestChangeCharacter()
- {
- var firstMobile = new Mobile((Serial)0x1);
- firstMobile.DefaultMobileInit();
- firstMobile.RawName = "Test Mobile";
-
- var secondMobile = new Mobile((Serial)0x2);
- secondMobile.DefaultMobileInit();
- secondMobile.RawName = null;
-
- var account = accountMock.Object;
- account[0] = firstMobile;
- account[1] = null;
- account[2] = secondMobile;
-
- // var account = new MockAccount(new[] { firstMobile, null, secondMobile });
- var expected = new ChangeCharacter(account).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendChangeCharacter(account);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestClientVersionReq()
- {
- var expected = new ClientVersionReq().Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
-
- ns.SendClientVersionRequest();
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestDeleteResult()
- {
- var expected = new DeleteResult(DeleteResultType.BadRequest).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendCharacterDeleteResult(DeleteResultType.BadRequest);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestPopupMessage()
- {
- var expected = new PopupMessage(PMMessage.LoginSyncError).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendPopupMessage(PMMessage.LoginSyncError);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Theory, InlineData(ProtocolChanges.Version70610), InlineData(ProtocolChanges.Version6000)]
- public void TestSupportedFeatures(ProtocolChanges protocolChanges)
- {
- var firstMobile = new Mobile((Serial)0x1);
- firstMobile.DefaultMobileInit();
- firstMobile.Name = "Test Mobile";
-
- var account = accountMock.Object;
- account[0] = firstMobile;
- account[1] = null;
- account[2] = null;
- account[3] = null;
- account[4] = null;
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.Account = account;
- ns.ProtocolChanges = protocolChanges;
-
- var expected = new SupportedFeatures(ns).Compile();
- ns.SendSupportedFeature();
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestLoginConfirm()
- {
- var m = new Mobile((Serial)0x1);
- m.DefaultMobileInit();
- m.Body = 0x100;
- m.X = 100;
- m.Y = 10;
- m.Z = -10;
- m.Direction = Direction.Down;
- m.LogoutMap = Map.Felucca;
-
- var expected = new LoginConfirm(m).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendLoginConfirmation(m);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestLoginComplete()
- {
- var expected = new LoginComplete().Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendLoginComplete();
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestCharacterListUpdate()
- {
- var firstMobile = new Mobile((Serial)0x1);
- firstMobile.DefaultMobileInit();
- firstMobile.RawName = "Test Mobile";
-
- var account = accountMock.Object;
- account[0] = null;
- account[1] = firstMobile;
- account[2] = null;
- account[3] = null;
- account[4] = null;
-
- var expected = new CharacterListUpdate(account).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendCharacterListUpdate(account);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestCharacterList70130()
- {
- var firstMobile = new Mobile((Serial)0x1);
- firstMobile.DefaultMobileInit();
- firstMobile.Name = "Test Mobile";
-
- var account = accountMock.Object;
- account[0] = null;
- account[1] = firstMobile;
- account[2] = null;
- account[3] = null;
- account[4] = null;
-
- var info = new[]
+ get => _mobiles[index];
+ set
{
- new CityInfo("Test City", "Test Building", 50, 100, 10, -10)
- };
-
- var expected = new CharacterList(account, info).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.CityInfo = info;
- ns.Account = account;
- ns.ProtocolChanges = ProtocolChanges.Version70130;
-
- ns.SendCharacterList();
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ _mobiles[index] = value;
+ if (value != null)
+ {
+ value.Account = this;
+ }
+ }
}
- [Fact]
- public void TestCharacterListOld()
+ public void Delete()
{
- var firstMobile = new Mobile((Serial)0x1);
- firstMobile.DefaultMobileInit();
- firstMobile.Name = "Test Mobile";
-
- var account = accountMock.Object;
- account[0] = null;
- account[1] = firstMobile;
- account[2] = null;
- account[3] = null;
- account[4] = null;
-
- var info = new[]
- {
- new CityInfo("Test City", "Test Building", 50, 100, 10, -10)
- };
-
- var expected = new CharacterListOld(account, info).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.CityInfo = info;
- ns.Account = account;
-
- ns.SendCharacterList();
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ throw new NotImplementedException();
}
- [Fact]
- public void TestAccountLoginRej()
+ public void SetPassword(string password)
{
- var reason = ALRReason.BadComm;
- var expected = new AccountLoginRej(reason).Compile();
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendAccountLoginRejected(reason);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ throw new NotImplementedException();
}
- [Fact]
- public void TestAccountLoginAck()
+ public bool CheckPassword(string password) => throw new NotImplementedException();
+ }
+
+ [Fact]
+ public void TestChangeCharacter()
+ {
+ var firstMobile = new Mobile((Serial)0x1);
+ firstMobile.DefaultMobileInit();
+ firstMobile.RawName = "Test Mobile";
+
+ var secondMobile = new Mobile((Serial)0x2);
+ secondMobile.DefaultMobileInit();
+ secondMobile.RawName = null;
+
+ var account = new MockedAccount
{
- var info = new[]
- {
- new ServerInfo("Test Server", 0, TimeZoneInfo.Local, IPEndPoint.Parse("127.0.0.1"))
- };
+ [0] = firstMobile,
+ [1] = null,
+ [2] = secondMobile
+ };
- var expected = new AccountLoginAck(info).Compile();
+ // var account = new MockAccount(new[] { firstMobile, null, secondMobile });
+ var expected = new ChangeCharacter(account).Compile();
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.ServerInfo = info;
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendChangeCharacter(account);
- ns.SendAccountLoginAck();
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
+ [Fact]
+ public void TestClientVersionReq()
+ {
+ var expected = new ClientVersionReq().Compile();
- [Fact]
- public void TestPlayServerAck()
+ var ns = PacketTestUtilities.CreateTestNetState();
+
+ ns.SendClientVersionRequest();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestDeleteResult()
+ {
+ var expected = new DeleteResult(DeleteResultType.BadRequest).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendCharacterDeleteResult(DeleteResultType.BadRequest);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestPopupMessage()
+ {
+ var expected = new PopupMessage(PMMessage.LoginSyncError).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendPopupMessage(PMMessage.LoginSyncError);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Theory, InlineData(ProtocolChanges.Version70610), InlineData(ProtocolChanges.Version6000)]
+ public void TestSupportedFeatures(ProtocolChanges protocolChanges)
+ {
+ var firstMobile = new Mobile((Serial)0x1);
+ firstMobile.DefaultMobileInit();
+ firstMobile.Name = "Test Mobile";
+
+ var account = new MockedAccount
{
- var si = new ServerInfo("Test Server", 0, TimeZoneInfo.Local, IPEndPoint.Parse("127.0.0.1"));
- var authId = 0x123456;
+ [0] = firstMobile,
+ [1] = null,
+ [2] = null,
+ [3] = null,
+ [4] = null
+ };
- var expected = new PlayServerAck(si, authId).Compile();
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.Account = account;
+ ns.ProtocolChanges = protocolChanges;
- var ns = PacketTestUtilities.CreateTestNetState();
+ var expected = new SupportedFeatures(ns).Compile();
+ ns.SendSupportedFeature();
- ns.SendPlayServerAck(si, authId);
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
+ [Fact]
+ public void TestLoginConfirm()
+ {
+ var m = new Mobile((Serial)0x1);
+ m.DefaultMobileInit();
+ m.Body = 0x100;
+ m.X = 100;
+ m.Y = 10;
+ m.Z = -10;
+ m.Direction = Direction.Down;
+ m.LogoutMap = Map.Felucca;
+
+ var expected = new LoginConfirm(m).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendLoginConfirmation(m);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestLoginComplete()
+ {
+ var expected = new LoginComplete().Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendLoginComplete();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestCharacterListUpdate()
+ {
+ var firstMobile = new Mobile((Serial)0x1);
+ firstMobile.DefaultMobileInit();
+ firstMobile.RawName = "Test Mobile";
+
+ var account = new MockedAccount
+ {
+ [0] = null,
+ [1] = firstMobile,
+ [2] = null,
+ [3] = null,
+ [4] = null
+ };
+
+ var expected = new CharacterListUpdate(account).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendCharacterListUpdate(account);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestCharacterList70130()
+ {
+ var firstMobile = new Mobile((Serial)0x1);
+ firstMobile.DefaultMobileInit();
+ firstMobile.Name = "Test Mobile";
+
+ var account = new MockedAccount
+ {
+ [0] = null,
+ [1] = firstMobile,
+ [2] = null,
+ [3] = null,
+ [4] = null
+ };
+
+ var info = new[]
+ {
+ new CityInfo("Test City", "Test Building", 50, 100, 10, -10)
+ };
+
+ var expected = new CharacterList(account, info).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.CityInfo = info;
+ ns.Account = account;
+ ns.ProtocolChanges = ProtocolChanges.Version70130;
+
+ ns.SendCharacterList();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestCharacterListOld()
+ {
+ var firstMobile = new Mobile((Serial)0x1);
+ firstMobile.DefaultMobileInit();
+ firstMobile.Name = "Test Mobile";
+
+ var account = new MockedAccount
+ {
+ [0] = null,
+ [1] = firstMobile,
+ [2] = null,
+ [3] = null,
+ [4] = null
+ };
+
+ var info = new[]
+ {
+ new CityInfo("Test City", "Test Building", 50, 100, 10, -10)
+ };
+
+ var expected = new CharacterListOld(account, info).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.CityInfo = info;
+ ns.Account = account;
+
+ ns.SendCharacterList();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestAccountLoginRej()
+ {
+ var reason = ALRReason.BadComm;
+ var expected = new AccountLoginRej(reason).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendAccountLoginRejected(reason);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestAccountLoginAck()
+ {
+ var info = new[]
+ {
+ new ServerInfo("Test Server", 0, TimeZoneInfo.Local, IPEndPoint.Parse("127.0.0.1"))
+ };
+
+ var expected = new AccountLoginAck(info).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.ServerInfo = info;
+
+ ns.SendAccountLoginAck();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestPlayServerAck()
+ {
+ var si = new ServerInfo("Test Server", 0, TimeZoneInfo.Local, IPEndPoint.Parse("127.0.0.1"));
+ var authId = 0x123456;
+
+ var expected = new PlayServerAck(si, authId).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+
+ ns.SendPlayServerAck(si, authId);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
}
diff --git a/Projects/UOContent.Tests/Tests/Engines/ML Quests/MLQuestPacketTests.cs b/Projects/UOContent.Tests/Tests/Engines/ML Quests/MLQuestPacketTests.cs
index 2a1f36a3f..f1f50720e 100644
--- a/Projects/UOContent.Tests/Tests/Engines/ML Quests/MLQuestPacketTests.cs
+++ b/Projects/UOContent.Tests/Tests/Engines/ML Quests/MLQuestPacketTests.cs
@@ -1,43 +1,86 @@
using System;
-using Moq;
using Server.Tests;
using Server.Tests.Network;
using Xunit;
-namespace Server.Engines.MLQuests
+namespace Server.Engines.MLQuests;
+
+public class MLQuestPacketTests
{
- public class MLQuestPacketTests
+ private class MockedRace(
+ int raceID,
+ int raceIndex,
+ string name,
+ string pluralName,
+ int maleBody,
+ int femaleBody,
+ int maleGhostBody,
+ int femaleGhostBody,
+ Expansion requiredExpansion
+ )
+ : Race(raceID,
+ raceIndex,
+ name,
+ pluralName,
+ maleBody,
+ femaleBody,
+ maleGhostBody,
+ femaleGhostBody,
+ requiredExpansion
+ )
{
- [Theory]
- [InlineData(true, 1)]
- [InlineData(false, 2)]
- public void TestRaceChanger(bool female, int raceId)
- {
- var raceMock = new Mock(
- raceId, 0, "Test Race", "Test Races", 0x1, 0x2, 0x3, 0x4, Expansion.None
- );
+ public override bool ValidateHair(bool female, int itemID) => throw new NotImplementedException();
- var race = raceMock.Object;
+ public override int RandomHair(bool female) => throw new NotImplementedException();
- var expected = new RaceChanger(female, race).Compile();
+ public override bool ValidateFacialHair(bool female, int itemID) => throw new NotImplementedException();
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendRaceChanger(female, race);
+ public override int RandomFacialHair(bool female) => throw new NotImplementedException();
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
+ public override int ClipSkinHue(int hue) => throw new NotImplementedException();
- [Fact]
- public void TestCloseRaceChanger()
- {
- var expected = new CloseRaceChanger().Compile();
+ public override int RandomSkinHue() => throw new NotImplementedException();
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.SendCloseRaceChanger();
+ public override int ClipHairHue(int hue) => throw new NotImplementedException();
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
+ public override int RandomHairHue() => throw new NotImplementedException();
+ }
+
+ [Theory]
+ [InlineData(true, 1)]
+ [InlineData(false, 2)]
+ public void TestRaceChanger(bool female, int raceId)
+ {
+ var race = new MockedRace(
+ raceId,
+ 0,
+ "Test Race",
+ "Test Races",
+ 0x1,
+ 0x2,
+ 0x3,
+ 0x4,
+ Expansion.None
+ );
+
+ var expected = new RaceChanger(female, race).Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendRaceChanger(female, race);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestCloseRaceChanger()
+ {
+ var expected = new CloseRaceChanger().Compile();
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.SendCloseRaceChanger();
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
}
diff --git a/Projects/UOContent.Tests/Tests/Multis/Boats/BoatPacketTests.cs b/Projects/UOContent.Tests/Tests/Multis/Boats/BoatPacketTests.cs
index d015ec80a..3f5772eb0 100644
--- a/Projects/UOContent.Tests/Tests/Multis/Boats/BoatPacketTests.cs
+++ b/Projects/UOContent.Tests/Tests/Multis/Boats/BoatPacketTests.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Moq;
using Server;
using Server.Multis;
using Server.Multis.Boats;
@@ -10,120 +9,114 @@ using Server.Tests;
using Server.Tests.Network;
using Xunit;
-namespace UOContent.Tests
+namespace UOContent.Tests;
+
+public class BoatPacketTests : IClassFixture
{
- public class BoatPacketTests : IClassFixture
+ [Theory]
+ [InlineData(Direction.West, 10, 100, 200)]
+ public void TestMoveBoatHS(Direction d, int speed, int xOffset, int yOffset)
{
- [Theory]
- [InlineData(Direction.West, 10, 100, 200)]
- public void TestMoveBoatHS(Direction d, int speed, int xOffset, int yOffset)
+ var item1 = new Item((Serial)0x1000)
{
- var item1 = new Item((Serial)0x1000)
- {
- ItemID = 0x13B9,
- Location = new Point3D(11, 21, 16),
- Map = Map.Felucca,
- Visible = true
- };
- var item2 = new Item((Serial)0x2000)
- {
- ItemID = 0x13B9,
- Location = new Point3D(100, 200, 16),
- Map = Map.Felucca,
- Visible = true
- };
-
- var beholder = new Mock((Serial)0x100);
- beholder.Object.DefaultMobileInit();
- beholder.Object.Location = new Point3D(10, 20, 15);
- beholder.Object.Map = Map.Felucca;
- beholder.Setup(m => m.CanSee(It.Is(e => e == beholder.Object))).Returns(true);
- beholder.Setup(m => m.CanSee(It.Is(e => e == item1))).Returns(true);
- beholder.Setup(m => m.CanSee(It.Is(e => e == item2))).Returns(false);
-
- var list = new List { item1, beholder.Object };
- var notContained = new List { item2 };
- var boat = new TestBoat((Serial)0x3000, list, notContained)
- {
- Location = new Point3D(10, 20, 15),
- Facing = Direction.Right,
- Map = Map.Felucca
- };
-
- beholder.Setup(m => m.CanSee(It.Is(e => e == boat))).Returns(true);
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.ProtocolChanges = ProtocolChanges.HighSeas;
- var expected = new MoveBoatHS(beholder.Object, boat, d, speed, list, xOffset, yOffset).Compile();
-
- ns.SendMoveBoatHS(beholder.Object, boat, d, speed, boat.GetMovingEntities(true), xOffset, yOffset);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- [Fact]
- public void TestDisplayBoatHS()
+ ItemID = 0x13B9,
+ Location = new Point3D(11, 21, 16),
+ Map = Map.Felucca,
+ Visible = true
+ };
+ var item2 = new Item((Serial)0x2000)
{
- var item1 = new Item((Serial)0x1000)
- {
- ItemID = 0x13B9,
- Location = new Point3D(11, 21, 16),
- Map = Map.Felucca
- };
- var item2 = new Item((Serial)0x2000)
- {
- ItemID = 0x13B9,
- Location = new Point3D(100, 200, 16),
- Map = Map.Felucca
- };
+ ItemID = 0x13B9,
+ Location = new Point3D(100, 200, 16),
+ Map = Map.Felucca,
+ Visible = true
+ };
- var beholder = new Mock((Serial)0x100);
- beholder.Object.DefaultMobileInit();
- beholder.Object.Location = new Point3D(10, 20, 15);
- beholder.Setup(m => m.CanSee(It.Is(e => e == beholder.Object))).Returns(true);
- beholder.Setup(m => m.CanSee(It.Is(e => e == item1))).Returns(true);
- beholder.Setup(m => m.CanSee(It.Is(e => e == item2))).Returns(false);
+ var beholder = new MockedMobile((Serial)0x100);
+ beholder.DefaultMobileInit();
+ beholder.Location = new Point3D(10, 20, 15);
+ beholder.Map = Map.Felucca;
+ beholder.CanSeeEntities.Add(item1);
- var list = new List { item1, beholder.Object };
- var notContained = new List { item2 };
- var boat = new TestBoat((Serial)0x3000, list, notContained)
- {
- Location = new Point3D(10, 20, 15),
- Facing = Direction.Right
- };
-
- beholder.Setup(m => m.CanSee(It.Is(e => e == boat))).Returns(true);
-
- var ns = PacketTestUtilities.CreateTestNetState();
- ns.ProtocolChanges = ProtocolChanges.HighSeas;
-
- var expected = new DisplayBoatHS(beholder.Object, boat).Compile();
-
- ns.SendDisplayBoatHS(beholder.Object, boat);
-
- var result = ns.SendPipe.Reader.TryRead();
- AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
- }
-
- public class TestBoat : BaseBoat
+ var list = new List { item1, beholder };
+ var notContained = new List { item2 };
+ var boat = new TestBoat((Serial)0x3000, list, notContained)
{
- private readonly List components;
- private readonly List notContained;
+ Location = new Point3D(10, 20, 15),
+ Facing = Direction.Right,
+ Map = Map.Felucca
+ };
- public TestBoat(Serial serial, List list, List notContainedList) : base(serial)
- {
- components = list;
- notContained = notContainedList;
- Components = new MultiComponentList(new List());
- }
+ beholder.CanSeeEntities.Add(boat);
- public override MultiComponentList Components { get; }
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.ProtocolChanges = ProtocolChanges.HighSeas;
+ var expected = new MoveBoatHS(beholder, boat, d, speed, list, xOffset, yOffset).Compile();
- public override bool Contains(int x, int y) => !notContained.Any(e => e.X == x && e.Y == y);
+ ns.SendMoveBoatHS(beholder, boat, d, speed, boat.GetMovingEntities(true), xOffset, yOffset);
- public override MovingEntitiesEnumerable GetMovingEntities(bool includeBoat = false) =>
- new(this, true, new Map.PooledEnumerable(components));
- }
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ [Fact]
+ public void TestDisplayBoatHS()
+ {
+ var item1 = new Item((Serial)0x1000)
+ {
+ ItemID = 0x13B9,
+ Location = new Point3D(11, 21, 16),
+ Map = Map.Felucca
+ };
+ var item2 = new Item((Serial)0x2000)
+ {
+ ItemID = 0x13B9,
+ Location = new Point3D(100, 200, 16),
+ Map = Map.Felucca
+ };
+
+ var beholder = new MockedMobile((Serial)0x100);
+ beholder.DefaultMobileInit();
+ beholder.Location = new Point3D(10, 20, 15);
+
+ beholder.CanSeeEntities.Add(item1);
+
+ var list = new List { item1, beholder };
+ var notContained = new List { item2 };
+ var boat = new TestBoat((Serial)0x3000, list, notContained)
+ {
+ Location = new Point3D(10, 20, 15),
+ Facing = Direction.Right
+ };
+
+ beholder.CanSeeEntities.Add(boat);
+
+ var ns = PacketTestUtilities.CreateTestNetState();
+ ns.ProtocolChanges = ProtocolChanges.HighSeas;
+
+ var expected = new DisplayBoatHS(beholder, boat).Compile();
+
+ ns.SendDisplayBoatHS(beholder, boat);
+
+ var result = ns.SendPipe.Reader.TryRead();
+ AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
+ }
+
+ private class TestBoat(Serial serial, List list, List notContainedList) : BaseBoat(serial)
+ {
+ public override MultiComponentList Components { get; } = new(new List());
+
+ public override bool Contains(int x, int y) => !notContainedList.Any(e => e.X == x && e.Y == y);
+
+ public override MovingEntitiesEnumerable GetMovingEntities(bool includeBoat = false) =>
+ new(this, true, new Map.PooledEnumerable(list));
+ }
+
+ private class MockedMobile(Serial serial) : Mobile(serial)
+ {
+ public HashSet CanSeeEntities = new();
+ public override bool CanSee(Mobile m) => m == this;
+
+ public override bool CanSee(Item i) => CanSeeEntities.Contains(i);
}
}
diff --git a/Projects/UOContent.Tests/UOContent.Tests.csproj b/Projects/UOContent.Tests/UOContent.Tests.csproj
index 4c7f59576..6d6f86bed 100644
--- a/Projects/UOContent.Tests/UOContent.Tests.csproj
+++ b/Projects/UOContent.Tests/UOContent.Tests.csproj
@@ -4,8 +4,7 @@
Debug;Release;Analyze
-
-
+