Cleanup & Fixes for .NET 5 (#309)

- [X] Fixes several bugs
- [X] Updates more ordinal issues
- [X] Cleans up the code a bit
- [X] Turns classes static that should have been
- [X] Changes TcpServer.Instances to a HashSet

Bumps release version
This commit is contained in:
Kamron Batman 2020-11-15 10:03:50 -08:00 • committed by GitHub
parent 4ad8811df2
commit 525cda5413
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
266 changed files with 1348 additions and 1800 deletions

View file

@ -8,60 +8,59 @@ namespace Server.Tests.Network
{
public class CircularBufferReaderTests
{
[Theory]
[Theory, InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 0),
InlineData("Test String", "utf-u", false, -1, 1024, 1024, 0),
InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 0),
InlineData("Test String", "utf-16", false, -1, 1024, 1024, 0),
InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 1030),
InlineData("Test String", "utf-u", false, -1, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 1030),
InlineData("Test String", "utf-16", false, -1, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 1020),
InlineData("Test String", "utf-u", false, -1, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 1020),
InlineData("Test String", "utf-16", false, -1, 1024, 1024, 1020),
InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 0),
InlineData("Test String", "utf-u", false, 8, 1024, 1024, 0),
InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 0),
InlineData("Test String", "utf-16", false, 8, 1024, 1024, 0),
InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 1030),
InlineData("Test String", "utf-u", false, 8, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 1030),
InlineData("Test String", "utf-16", false, 8, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 1020),
InlineData("Test String", "utf-u", false, 8, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 1020),
InlineData("Test String", "utf-16", false, 8, 1024, 1024, 1020),
InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 0),
InlineData("Test String", "utf-u", false, 20, 1024, 1024, 0),
InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 0),
InlineData("Test String", "utf-16", false, 20, 1024, 1024, 0),
InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 1030),
InlineData("Test String", "utf-u", false, 20, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 1030),
InlineData("Test String", "utf-16", false, 20, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 1020),
InlineData("Test String", "utf-u", false, 20, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 1020),
InlineData("Test String", "utf-16", false, 20, 1024, 1024, 1020)]
// First only, beginning
[InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-u", false, -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", false, -1, 1024, 1024, 0)]
// Second only
[InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-u", false, -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", false, -1, 1024, 1024, 1030)]
// Split
[InlineData("Test String", "us-ascii", false, -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-u", false, -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", false, -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", false, -1, 1024, 1024, 1020)]
// First only, beginning, fixed length smaller
[InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 0)]
[InlineData("Test String", "utf-u", false, 8, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", false, 8, 1024, 1024, 0)]
// Second only, fixed length smaller
[InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 1030)]
[InlineData("Test String", "utf-u", false, 8, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", false, 8, 1024, 1024, 1030)]
// Split, fixed length smaller
[InlineData("Test String", "us-ascii", false, 8, 1024, 1024, 1020)]
[InlineData("Test String", "utf-u", false, 8, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", false, 8, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", false, 8, 1024, 1024, 1020)]
// First only, beginning, fixed length bigger
[InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 0)]
[InlineData("Test String", "utf-u", false, 20, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", false, 20, 1024, 1024, 0)]
// Second only, fixed length bigger
[InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 1030)]
[InlineData("Test String", "utf-u", false, 20, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", false, 20, 1024, 1024, 1030)]
// Split, fixed length bigger
[InlineData("Test String", "us-ascii", false, 20, 1024, 1024, 1020)]
[InlineData("Test String", "utf-u", false, 20, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", false, 20, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", false, 20, 1024, 1024, 1020)]
public void TestReadString(
string value,
string encodingStr,

View file

@ -7,54 +7,47 @@ namespace Server.Tests.Buffers
{
public class CircularBufferWriterTests
{
[Theory]
[Theory, InlineData("Test String", "us-ascii", -1, 1024, 1024, 0),
InlineData("Test String", "utf-8", -1, 1024, 1024, 0), InlineData("Test String", "utf-16BE", -1, 1024, 1024, 0),
InlineData("Test String", "utf-16", -1, 1024, 1024, 0), InlineData("Test String", "us-ascii", -1, 1024, 1024, 1030),
InlineData("Test String", "utf-8", -1, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", -1, 1024, 1024, 1030),
InlineData("Test String", "utf-16", -1, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", -1, 1024, 1024, 1020),
InlineData("Test String", "utf-8", -1, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", -1, 1024, 1024, 1020),
InlineData("Test String", "utf-16", -1, 1024, 1024, 1020), InlineData("Test String", "us-ascii", 8, 1024, 1024, 0),
InlineData("Test String", "utf-16BE", 8, 1024, 1024, 0), InlineData("Test String", "utf-16", 8, 1024, 1024, 0),
InlineData("Test String", "us-ascii", 8, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", 8, 1024, 1024, 1030),
InlineData("Test String", "utf-16", 8, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", 8, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", 8, 1024, 1024, 1020),
InlineData("Test String", "utf-16", 8, 1024, 1024, 1020), InlineData("Test String", "us-ascii", 20, 1024, 1024, 0),
InlineData("Test String", "utf-16BE", 20, 1024, 1024, 0), InlineData("Test String", "utf-16", 20, 1024, 1024, 0),
InlineData("Test String", "us-ascii", 20, 1024, 1024, 1030),
InlineData("Test String", "utf-16BE", 20, 1024, 1024, 1030),
InlineData("Test String", "utf-16", 20, 1024, 1024, 1030),
InlineData("Test String", "us-ascii", 20, 1024, 1024, 1020),
InlineData("Test String", "utf-16BE", 20, 1024, 1024, 1020),
InlineData("Test String", "utf-16", 20, 1024, 1024, 1020)]
// First only, beginning
[InlineData("Test String", "us-ascii", -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-8", -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", -1, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", -1, 1024, 1024, 0)]
// Second only
[InlineData("Test String", "us-ascii", -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-8", -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", -1, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", -1, 1024, 1024, 1030)]
// Split
[InlineData("Test String", "us-ascii", -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-8", -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", -1, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", -1, 1024, 1024, 1020)]
// First only, beginning, fixed length smaller
[InlineData("Test String", "us-ascii", 8, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", 8, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", 8, 1024, 1024, 0)]
// Second only, fixed length smaller
[InlineData("Test String", "us-ascii", 8, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", 8, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", 8, 1024, 1024, 1030)]
// Split, fixed length smaller
[InlineData("Test String", "us-ascii", 8, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", 8, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", 8, 1024, 1024, 1020)]
// First only, beginning, fixed length bigger
[InlineData("Test String", "us-ascii", 20, 1024, 1024, 0)]
[InlineData("Test String", "utf-16BE", 20, 1024, 1024, 0)]
[InlineData("Test String", "utf-16", 20, 1024, 1024, 0)]
// Second only, fixed length bigger
[InlineData("Test String", "us-ascii", 20, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16BE", 20, 1024, 1024, 1030)]
[InlineData("Test String", "utf-16", 20, 1024, 1024, 1030)]
// Split, fixed length bigger
[InlineData("Test String", "us-ascii", 20, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16BE", 20, 1024, 1024, 1020)]
[InlineData("Test String", "utf-16", 20, 1024, 1024, 1020)]
public void TestWriteString(
string value,
string encodingStr,

View file

@ -65,9 +65,7 @@ namespace Server.Tests.Network
AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
[Theory]
[InlineData(ProtocolChanges.Version70610)]
[InlineData(ProtocolChanges.Version6000)]
[Theory, InlineData(ProtocolChanges.Version70610), InlineData(ProtocolChanges.Version6000)]
public void TestSupportedFeatures(ProtocolChanges protocolChanges)
{
var firstMobile = new Mobile(0x1);

View file

@ -21,9 +21,7 @@ namespace Server.Tests.Network
AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
[Theory]
[InlineData(true)]
[InlineData(false)]
[Theory, InlineData(true), InlineData(false)]
public void TestSetWarMode(bool warmode)
{
var expected = new SetWarMode(warmode).Compile();

View file

@ -6,10 +6,7 @@ namespace Server.Tests.Network
{
public class DamagePacketTests : IClassFixture<ServerFixture>
{
[Theory]
[InlineData(10)]
[InlineData(-5)]
[InlineData(1024)]
[Theory, InlineData(10), InlineData(-5), InlineData(1024)]
public void TestDamagePacketOld(int inputAmount)
{
Serial serial = 0x1024;
@ -23,11 +20,7 @@ namespace Server.Tests.Network
AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
[Theory]
[InlineData(10)]
[InlineData(-5)]
[InlineData(1024)]
[InlineData(100000)]
[Theory, InlineData(10), InlineData(-5), InlineData(1024), InlineData(100000)]
public void TestDamage(int inputAmount)
{
Serial serial = 0x1024;

View file

@ -6,8 +6,7 @@ namespace Server.Tests.Network
{
public class EffectPackets
{
[Theory]
[InlineData(10, 1000, 10, 5)]
[Theory, InlineData(10, 1000, 10, 5)]
public void TestSoundEffect(ushort soundID, int x, int y, int z)
{
var p = new Point3D(x, y, z);
@ -91,9 +90,7 @@ namespace Server.Tests.Network
AssertThat.Equal(actual, expected);
}
[Theory]
[InlineData(ScreenEffectType.DarkFlash)]
[InlineData(ScreenEffectType.FadeInOut)]
[Theory, InlineData(ScreenEffectType.DarkFlash), InlineData(ScreenEffectType.FadeInOut)]
public void TestScreenEffect(ScreenEffectType screenType)
{
var expected = new ScreenEffect(screenType).Compile();

View file

@ -221,10 +221,8 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(ProtocolChanges.Version70610)]
[InlineData(ProtocolChanges.Version400a)]
[InlineData(ProtocolChanges.Version502b)]
[Theory, InlineData(ProtocolChanges.Version70610), InlineData(ProtocolChanges.Version400a),
InlineData(ProtocolChanges.Version502b)]
public void TestMobileStatusExtended(ProtocolChanges changes)
{
var beholder = new Mobile(0x1)
@ -340,10 +338,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData("None")]
[InlineData("Lesser")]
[InlineData("Lethal")]
[Theory, InlineData("None"), InlineData("Lesser"), InlineData("Lethal")]
public void TestHealthbarPoison(string pName)
{
var p = Poison.GetPoison(pName);
@ -366,11 +361,7 @@ namespace Server.Tests.Network
Assert.Equal(p?.Level, m.Poison?.Level);
}
[Theory]
[InlineData(false, false)]
[InlineData(true, false)]
[InlineData(false, true)]
[InlineData(true, true)]
[Theory, InlineData(false, false), InlineData(true, false), InlineData(false, true), InlineData(true, true)]
public void TestYellowBar(bool isBlessed, bool isYellowHealth)
{
var m = new Mobile(0x1);
@ -464,10 +455,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(0, 0, 0, 0)]
[InlineData(10, 1024, 0, 0)]
[InlineData(10, 1024, 11, 2048)]
[Theory, InlineData(0, 0, 0, 0), InlineData(10, 1024, 0, 0), InlineData(10, 1024, 11, 2048)]
public void TestMobileIncoming(int hairItemId, int hairHue, int facialHairItemId, int facialHairHue)
{
var beholder = new Mobile(0x1)
@ -594,13 +582,11 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(ProtocolChanges.Version6000, 0, 0, 0, 0)]
[InlineData(ProtocolChanges.Version6000, 10, 1024, 0, 0)]
[InlineData(ProtocolChanges.Version6000, 10, 1024, 11, 2048)]
[InlineData(ProtocolChanges.Version7000, 0, 0, 0, 0)]
[InlineData(ProtocolChanges.Version7000, 10, 1024, 0, 0)]
[InlineData(ProtocolChanges.Version7000, 10, 1024, 11, 2048)]
[Theory, InlineData(ProtocolChanges.Version6000, 0, 0, 0, 0),
InlineData(ProtocolChanges.Version6000, 10, 1024, 0, 0),
InlineData(ProtocolChanges.Version6000, 10, 1024, 11, 2048), InlineData(ProtocolChanges.Version7000, 0, 0, 0, 0),
InlineData(ProtocolChanges.Version7000, 10, 1024, 0, 0),
InlineData(ProtocolChanges.Version7000, 10, 1024, 11, 2048)]
public void TestMobileIncomingOld(
ProtocolChanges protocolChanges, int hairItemId, int hairHue, int facialHairItemId, int facialHairHue
)

View file

@ -7,10 +7,7 @@ namespace Server.Tests.Network
{
public class MovementPacketTests : IClassFixture<ServerFixture>
{
[Theory]
[InlineData(0)]
[InlineData(1)]
[InlineData(2)]
[Theory, InlineData(0), InlineData(1), InlineData(2)]
public void TestSpeedControl(byte speedControl)
{
var data = new SpeedControl(speedControl).Compile();

View file

@ -43,9 +43,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(false)]
[InlineData(true)]
[Theory, InlineData(false), InlineData(true)]
public void TestDeathStatus(bool isDead)
{
var data = new DeathStatus(isDead).Compile();
@ -61,11 +59,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(0, true)]
[InlineData(0, false)]
[InlineData(100, true)]
[InlineData(1000, false)]
[Theory, InlineData(0, true), InlineData(0, false), InlineData(100, true), InlineData(1000, false)]
public void TestSpecialAbility(int abilityId, bool active)
{
var data = new ToggleSpecialAbility(abilityId, active).Compile();
@ -82,9 +76,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData("This is a header", "This is a body", "This is a footer")]
[InlineData(null, null, null)]
[Theory, InlineData("This is a header", "This is a body", "This is a footer"), InlineData(null, null, null)]
public void TestDisplayProfile(string header, string body, string footer)
{
Serial m = 0x1000;
@ -110,9 +102,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(LRReason.CannotLift)]
[InlineData(LRReason.TryToSteal)]
[Theory, InlineData(LRReason.CannotLift), InlineData(LRReason.TryToSteal)]
public void TestLiftRej(LRReason reason)
{
var data = new LiftRej(reason).Compile();
@ -140,9 +130,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(1, 2, 3)]
[InlineData(4, 5, 6)]
[Theory, InlineData(1, 2, 3), InlineData(4, 5, 6)]
public void TestWeather(int type, int density, int temp)
{
var data = new Weather(type, density, temp).Compile();
@ -235,10 +223,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(0)]
[InlineData(10)]
[InlineData(255)]
[Theory, InlineData(0), InlineData(10), InlineData(255)]
public void TestSequence(byte num)
{
var data = new Sequence(num).Compile();
@ -252,10 +237,8 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(SkillName.Alchemy, 0, 1)]
[InlineData(SkillName.Archery, 10, 1000)]
[InlineData(SkillName.Begging, 100000, 1000)]
[Theory, InlineData(SkillName.Alchemy, 0, 1), InlineData(SkillName.Archery, 10, 1000),
InlineData(SkillName.Begging, 100000, 1000)]
public void TestSkillChange(SkillName skillName, int baseFixedPoint, int capFixedPoint)
{
// TODO: Eliminate all of this and just create a Skill directly
@ -287,10 +270,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData("This is a URL, I promise")]
[Theory, InlineData(null), InlineData(""), InlineData("This is a URL, I promise")]
public void TestLaunchBrowser(string url)
{
var data = new LaunchBrowser(url).Compile();
@ -341,9 +321,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(1, false)]
[InlineData(2, true)]
[Theory, InlineData(1, false), InlineData(2, true)]
public void TestSeasonChange(int season, bool playSound)
{
var data = new SeasonChange(season, playSound).Compile();
@ -358,10 +336,8 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(0x1024, "Test Title", true, true)]
[InlineData(0x1024, "Test Title", false, true)]
[InlineData(0x1024, "Test Title", true, false)]
[Theory, InlineData(0x1024, "Test Title", true, true), InlineData(0x1024, "Test Title", false, true),
InlineData(0x1024, "Test Title", true, false)]
public void TestDisplayPaperdoll(uint m, string title, bool warmode, bool canLift)
{
var data = new DisplayPaperdoll(m, title, warmode, canLift).Compile();
@ -388,10 +364,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(MusicName.Approach)]
[InlineData(MusicName.Combat1)]
[InlineData(MusicName.ValoriaShips)]
[Theory, InlineData(MusicName.Approach), InlineData(MusicName.Combat1), InlineData(MusicName.ValoriaShips)]
public void TestPlayMusic(MusicName music)
{
var data = new PlayMusic(music).Compile();
@ -405,9 +378,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(10, 1, "Some text")]
[InlineData(100, 10, "Some more text")]
[Theory, InlineData(10, 1, "Some text"), InlineData(100, 10, "Some more text")]
public void TestScrollMessage(int type, int tip, string text)
{
var data = new ScrollMessage(type, tip, text).Compile();
@ -462,10 +433,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(0)]
[InlineData(10)]
[InlineData(100)]
[Theory, InlineData(0), InlineData(10), InlineData(100)]
public void TestPingAck(byte ping)
{
var data = new PingAck(ping).Compile();

View file

@ -8,9 +8,8 @@ namespace Server.Tests.Network
{
public class SecureTradePacketTests : IClassFixture<ServerFixture>
{
[Theory]
[InlineData("short-name")]
[InlineData("this is a really long name that is more than 30 characters, probably")]
[Theory, InlineData("short-name"),
InlineData("this is a really long name that is more than 30 characters, probably")]
public void TestDisplaySecureTrade(string name)
{
var m = new Mobile(0x1);
@ -59,9 +58,9 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(true, false)] // Update first
[InlineData(false, true)] // Update second
[Theory, InlineData(true, false), InlineData(false, true)]
// Update first
// Update second
public void TestUpdateSecureTrade(bool first, bool second)
{
var firstCont = new Container(World.NewItem);
@ -83,9 +82,7 @@ namespace Server.Tests.Network
AssertThat.Equal(data, expectedData);
}
[Theory]
[InlineData(100000, 30, TradeFlag.UpdateGold)]
[InlineData(250000, 50000, TradeFlag.UpdateLedger)]
[Theory, InlineData(100000, 30, TradeFlag.UpdateGold), InlineData(250000, 50000, TradeFlag.UpdateLedger)]
public void TestUpdateGoldSecureTrade(int gold, int plat, TradeFlag flag)
{
var cont = new Container(World.NewItem);

View file

@ -5,8 +5,7 @@ namespace Server.Tests.Accounting
{
public class HexStringConverterTest
{
[Theory]
[InlineData("ABCDEF1234", new byte[] { 0xAB, 0xCD, 0xEF, 0x12, 0x34 })]
[Theory, InlineData("ABCDEF1234", new byte[] { 0xAB, 0xCD, 0xEF, 0x12, 0x34 })]
public void TestGetBytes(string input, byte[] bytes)
{
Span<byte> outputBytes = stackalloc byte[input.Length / 2];
@ -16,8 +15,7 @@ namespace Server.Tests.Accounting
Assert.Equal(input, bytes.ToHexString());
}
[Theory]
[InlineData("[AB, CD, EF, 12, 34]", new byte[] { 0xAB, 0xCD, 0xEF, 0x12, 0x34 })]
[Theory, InlineData("[AB, CD, EF, 12, 34]", new byte[] { 0xAB, 0xCD, 0xEF, 0x12, 0x34 })]
public void TestsGetStringDelimited(string expected, byte[] bytes)
{
Assert.Equal(expected, bytes.ToDelimitedHexString());

View file

@ -4,10 +4,8 @@ namespace Server.Tests
{
public class TestStringHelpers
{
[Theory]
[InlineData(null, "default value", "default value")]
[InlineData("", "default value", "default value")]
[InlineData("this is a valid string", "default value", "this is a valid string")]
[Theory, InlineData(null, "default value", "default value"), InlineData("", "default value", "default value"),
InlineData("this is a valid string", "default value", "this is a valid string")]
public void TestIsNullOrDefault(string value, string defaultValue, string expected)
{
var actual = value.DefaultIfNullOrEmpty(defaultValue);