using Theriapolis.Core.Rules.Stats; using Xunit; namespace Theriapolis.Tests.Rules; public sealed class ProficiencyBonusTests { [Theory] [InlineData(1, 2)] [InlineData(2, 2)] [InlineData(3, 2)] [InlineData(4, 2)] [InlineData(5, 3)] [InlineData(6, 3)] [InlineData(8, 3)] [InlineData(9, 4)] [InlineData(12, 4)] [InlineData(13, 5)] [InlineData(16, 5)] [InlineData(17, 6)] [InlineData(20, 6)] public void ForLevel_MatchesD20Table(int level, int expected) { Assert.Equal(expected, ProficiencyBonus.ForLevel(level)); } [Theory] [InlineData(0)] [InlineData(-1)] [InlineData(21)] [InlineData(100)] public void ForLevel_OutOfRange_Throws(int level) { Assert.Throws(() => ProficiencyBonus.ForLevel(level)); } }