Initial commit

This commit is contained in:
2024-07-20 13:51:52 +02:00
commit 3845f91601
26 changed files with 1822 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
using PkmnLib.Static;
namespace PkmnLib.Tests.Static;
public class GrowthRateTests
{
[Test]
public void EmptyLookupGrowthRateTestShouldThrowArgumentException()
{
Action act = () => _ = new LookupGrowthRate("Test", []);
act.Should().Throw<ArgumentException>().WithMessage("Experience table must have at least one entry.");
}
[Test]
public void NonZeroLookupGrowthRateTestShouldThrowArgumentException()
{
Action act = () => _ = new LookupGrowthRate("Test", [1]);
act.Should().Throw<ArgumentException>().WithMessage("Experience table must start at 0.");
}
[Test]
public void TooLargeLookupGrowthRateTestShouldThrowArgumentException()
{
Action act = () => _ = new LookupGrowthRate("Test", Enumerable.Range(0, LevelInt.MaxValue + 1).Select(i => (uint)i));
act.Should().Throw<ArgumentException>().WithMessage($"Experience table may have at most {LevelInt.MaxValue} entries.");
}
[Test]
public void LookupGrowthRateTest()
{
var growthRate = new LookupGrowthRate("Test", [0, 1, 2, 3, 4, 5]);
growthRate.CalculateLevel(0).Should().Be(1);
growthRate.CalculateLevel(1).Should().Be(2);
growthRate.CalculateLevel(2).Should().Be(3);
growthRate.CalculateLevel(3).Should().Be(4);
growthRate.CalculateLevel(4).Should().Be(5);
growthRate.CalculateLevel(5).Should().Be(6);
growthRate.CalculateExperience(1).Should().Be(0);
growthRate.CalculateExperience(2).Should().Be(1);
growthRate.CalculateExperience(3).Should().Be(2);
growthRate.CalculateExperience(4).Should().Be(3);
growthRate.CalculateExperience(5).Should().Be(4);
growthRate.CalculateExperience(6).Should().Be(5);
}
}

View File

@@ -0,0 +1,48 @@
using System.Collections;
using PkmnLib.Static.Utils;
namespace PkmnLib.Tests.Static;
public class StringKeyTests
{
private static IEnumerable StringKeyEqualityTestCases
{
get
{
yield return new TestCaseData("test", "test").Returns(true);
yield return new TestCaseData("test", "test2").Returns(false);
yield return new TestCaseData("test2", "test2").Returns(true);
yield return new TestCaseData("Test", "test").Returns(true);
yield return new TestCaseData("TeSt", "tesT").Returns(true);
yield return new TestCaseData("TeSt", "tesv").Returns(false);
}
}
[Test]
[TestCaseSource(nameof(StringKeyEqualityTestCases))]
public bool StringKeyEqualityTest(string k1, string k2)
{
var sk1 = new StringKey(k1);
var sk2 = new StringKey(k2);
return sk1 == sk2;
}
[Test]
[TestCaseSource(nameof(StringKeyEqualityTestCases))]
public bool HashCodeEqualityTest(string k1, string k2)
{
var sk1 = new StringKey(k1);
var sk2 = new StringKey(k2);
return sk1.GetHashCode() == sk2.GetHashCode();
}
[Test]
[TestCaseSource(nameof(StringKeyEqualityTestCases))]
public bool HashSetEqualityTest(string k1, string k2)
{
var sk1 = new StringKey(k1);
var sk2 = new StringKey(k2);
var hs = new HashSet<StringKey> { sk1 };
return hs.Contains(sk2);
}
}