using System; using NUnit.Framework; using pflib_net.dice; namespace pflib_net.Tests; [TestFixture] [TestOf(typeof(Dice))] public class DiceTest { [Test] [Repeat(100)] public void D20RollProducesValueBetween1And20() { var die = new Dice(20); Assert.That(die.GetValue(), Is.InRange(1, 20)); } [Test] [TestCase(10)] [TestCase(-10)] public void RollAddsValuesCorrectly(int value) { var die = new Dice(4, add: value); Assert.That(die.GetValue(), Is.InRange(1 + value, 4 + value)); } [Test] [Repeat(100)] public void RollMultipleDiceHasCorrectAmountOfDice() { var dice = new Dice(4, 20); Assert.That(dice.GetValue(), Is.InRange(20, 4 * 20)); } [Test] public void KeepHighestHasCorrectNumberOfDice() { var dice = new Dice(1, 40, 20); Assert.That(dice.GetValue(), Is.EqualTo(20)); } [Test] public void KeepLowestHasCorrectNumberOfDice() { var dice = new Dice(1, 40, keepLowest: 20); Assert.That(dice.GetValue(), Is.EqualTo(20)); } [Test] [TestCase(1, 1)] public void CannotSetKeepHighestAndKeepLowest(int high, int low) { var e = Assert.Throws( () => new Dice(1, 40, high, low)); } }