public void DiceTerm_CalculateResultsChooseDiceTest()
        {
            // setup test
            IExpressionTerm term = new FudgeDiceTerm(5, 3);

            // run test
            IReadOnlyList <TermResult> results = term.CalculateResults(roller);

            // validate results
            Assert.IsNotNull(results);
            Assert.AreEqual(5, results.Count);
            int included = 0;

            foreach (TermResult r in results)
            {
                Assert.IsNotNull(r);
                Assert.AreEqual(1, r.Scalar);
                AssertHelpers.IsWithinRangeInclusive(-1, 1, r.Value);
                Assert.AreEqual("FudgeDiceTerm.dF", r.Type);
                if (r.AppliesToResultCalculation)
                {
                    included++;
                }
            }
            Assert.AreEqual(3, included);
        }
        public void FudgeDiceTerm_CalculateResultsNullDieRollerTest()
        {
            // setup test
            IExpressionTerm term = new FudgeDiceTerm(1);

            // run test
            Assert.ThrowsException <ArgumentNullException>(() => term.CalculateResults(null));

            // validate results
        }
        public void DiceTerm_CalculateResultsTest()
        {
            // setup test
            IExpressionTerm term = new FudgeDiceTerm(1);

            // run test
            IReadOnlyList <TermResult> results = term.CalculateResults(roller);

            // validate results
            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count);
            TermResult r = results.FirstOrDefault();

            Assert.IsNotNull(r);
            Assert.AreEqual(1, r.Scalar);
            AssertHelpers.IsWithinRangeInclusive(-1, 1, r.Value);
            Assert.AreEqual("FudgeDiceTerm.dF", r.Type);
        }