Esempio n. 1
0
        public async Task RollingDiceWithZeroSidesIsInvalid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var         diceRoller = new DiceRoller(rng);
            Func <Task> task       = async() => await diceRoller.Roll("1d0");

            await task.Should().ThrowAsync <InvalidOperationException>();
        }
Esempio n. 2
0
        public async Task SubtractingAConstantFromDiceIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("2d6-10");

            result.ExpressionTotal.Should().Be(-7);
            result.DiceRolls.Should().BeEquivalentTo(rng.Take(2));
        }
Esempio n. 3
0
        public async Task SubtractingTwoDiceIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("2d6-1d5");

            result.ExpressionTotal.Should().Be(0);
            result.DiceRolls.Should().BeEquivalentTo(rng);
        }
Esempio n. 4
0
        public async Task WhenNoCountIsSpecifiedOneDiceIsRolled()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("d6");

            result.ExpressionTotal.Should().Be(1);
            result.DiceRolls.Should().BeEquivalentTo(rng.Take(1));
        }
Esempio n. 5
0
        public async Task RollingZeroDiceIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("0d6");

            result.ExpressionTotal.Should().Be(0);
            result.DiceRolls.Should().BeEmpty();
        }
Esempio n. 6
0
        public async Task ParenthesesTakePrecedence()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("(3d6+2)*2");

            result.ExpressionTotal.Should().Be(16);
            result.DiceRolls.Should().BeEquivalentTo(rng);
        }
Esempio n. 7
0
        public async Task MultiplyingTakesPrecedenceOverAdding()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("3d6+2*2");

            result.ExpressionTotal.Should().Be(10);
            result.DiceRolls.Should().BeEquivalentTo(rng);
        }
Esempio n. 8
0
        public async Task RollingSimpleDiceExpressionIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("3d6");

            result.ExpressionTotal.Should().Be(6);
            result.DiceRolls.Should().BeEquivalentTo(rng);
        }
Esempio n. 9
0
        public async Task DividingDiceByAConstantIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("3d6/2");

            result.ExpressionTotal.Should().Be(3);
            result.DiceRolls.Should().BeEquivalentTo(rng);
        }
Esempio n. 10
0
        public async Task MultiplyingDiceByAConstantIsValid()
        {
            var rng = new FakeDiceRng {
                1, 2, 3
            };
            var diceRoller = new DiceRoller(rng);
            var result     = await diceRoller.Roll("2d6*2");

            result.ExpressionTotal.Should().Be(6);
            result.DiceRolls.Should().BeEquivalentTo(rng.Take(2));
        }