using PkmnLib.Static; namespace PkmnLib.Tests.Static; public class GrowthRateTests { [Test] public void EmptyLookupGrowthRateTestShouldThrowArgumentException() { Action act = () => _ = new LookupGrowthRate("Test", []); act.Should().Throw().WithMessage("Experience table must have at least one entry."); } [Test] public void NonZeroLookupGrowthRateTestShouldThrowArgumentException() { Action act = () => _ = new LookupGrowthRate("Test", [1]); act.Should().Throw().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() .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); } }