Fix bad serials (#304)

- [X] Fixes bad serial calculations
- [X] Tightens HexStrings

Bumps release version
Updates documentation
This commit is contained in:
Kamron Batman 2020-11-08 12:09:26 -08:00 • committed by GitHub
parent b0c1076cb5
commit ae436cb55f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
46 changed files with 76 additions and 51 deletions

View file

@ -0,0 +1,95 @@
using Server.Utilities;
using Xunit;
namespace Server.Tests
{
public class ActivatorExtensionsTests
{
[Fact]
public void TestZeroParamsActivator()
{
var result = typeof(TestZeroParamsClass).CreateInstance<TestZeroParamsClass>();
Assert.IsType<TestZeroParamsClass>(result);
}
[Fact]
public void TestZeroParamsNullActivator()
{
var result = typeof(TestZeroParamsClass).CreateInstance<TestZeroParamsClass>(null, null);
Assert.IsType<TestZeroParamsClass>(result);
}
[Fact]
public void TestTwoParamsActivator()
{
var result = typeof(TestTwoParamsClass).CreateInstance<TestTwoParamsClass>(10, "ModernUO");
Assert.IsType<TestTwoParamsClass>(result);
Assert.Equal(10, result.Amount);
Assert.Equal("ModernUO", result.Name);
}
[Fact]
public void TestAllParamsOptionalActivator()
{
var result = typeof(TestTwoOptionalParamsClass).CreateInstance<TestTwoOptionalParamsClass>();
Assert.IsType<TestTwoOptionalParamsClass>(result);
Assert.Equal(1, result.Amount);
Assert.Equal("Test ModernUO", result.Name);
}
[Fact]
public void TestAllParamsNullOptionalActivator()
{
var result = typeof(TestTwoOptionalParamsClass).CreateInstance<TestTwoOptionalParamsClass>(null);
Assert.IsType<TestTwoOptionalParamsClass>(result);
Assert.Equal(1, result.Amount);
Assert.Equal("Test ModernUO", result.Name);
}
[Fact]
public void TestLessParamsOptionalActivator()
{
var result = typeof(TestTwoOptionalParamsClass).CreateInstance<TestTwoOptionalParamsClass>(10);
Assert.IsType<TestTwoOptionalParamsClass>(result);
Assert.Equal(10, result.Amount);
Assert.Equal("Test ModernUO", result.Name);
}
[Fact]
public void TestTwoParamsOptionalActivator()
{
var result = typeof(TestTwoOptionalParamsClass).CreateInstance<TestTwoOptionalParamsClass>(10, "Prod ModernUO");
Assert.IsType<TestTwoOptionalParamsClass>(result);
Assert.Equal(10, result.Amount);
Assert.Equal("Prod ModernUO", result.Name);
}
private class TestZeroParamsClass
{
}
private class TestTwoParamsClass
{
public int Amount;
public string Name;
public TestTwoParamsClass(int amount, string name)
{
Amount = amount;
Name = name;
}
}
private class TestTwoOptionalParamsClass
{
public int Amount;
public string Name;
public TestTwoOptionalParamsClass(int amount = 1, string name = "Test ModernUO")
{
Amount = amount;
Name = name;
}
}
}
}

View file

@ -0,0 +1,26 @@
using System;
using Xunit;
namespace Server.Tests.Accounting
{
public class HexStringConverterTest
{
[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];
HexStringConverter.GetBytes(input, outputBytes);
Assert.Equal(bytes, outputBytes.ToArray());
Assert.Equal(input, bytes.ToHexString());
}
[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

@ -0,0 +1,18 @@
using Xunit;
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")]
public void TestIsNullOrDefault(string value, string defaultValue, string expected)
{
var actual = value.DefaultIfNullOrEmpty(defaultValue);
Assert.Equal(expected, actual);
}
}
}