48 lines
1.8 KiB
C#
48 lines
1.8 KiB
C#
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);
|
|
}
|
|
} |