public void DiceTerm_CalculateResultsExplodingLowerThanMaxTest()
        {
            // setup test
            IExpressionTerm term = new DiceTerm(10, 12, exploding: 9);

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

            // validate results
            Assert.IsNotNull(results);
            int count = 10;

            foreach (TermResult r in results)
            {
                Assert.IsNotNull(r);
                Assert.AreEqual(1, r.Scalar);
                AssertHelpers.IsWithinRangeInclusive(1, 12, r.Value);
                if (r.Value >= 9)
                {
                    count++;
                }
                Assert.AreEqual("DiceTerm.d12", r.Type);
            }
            Assert.AreEqual(count, results.Count);
        }
        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);
        }
Esempio n. 3
0
        public void Dice_RollMultipleFudgeDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.FudgeDice(6);

            // run test
            DiceResult result = dice.Roll(this.roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(-6, 6, result.Value);
            Assert.AreEqual(6, result.Results.Count);
            int sum = 0;

            foreach (TermResult r in result.Results)
            {
                AssertHelpers.IsWithinRangeInclusive(-1, 1, r.Value);
                sum += r.Value;
            }
            Assert.AreEqual(sum, result.Value);
            Assert.AreEqual("6f", result.DiceExpression);
        }
Esempio n. 4
0
        public void Dice_RollSingleDieTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.Dice(20);

            // run test
            DiceResult result = dice.Roll(roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(1, 20, result.Value);
            Assert.AreEqual(1, result.Results.Count);
            int sum = 0;

            foreach (TermResult r in result.Results)
            {
                AssertHelpers.IsWithinRangeInclusive(1, 20, r.Value);
                sum += r.Value;
            }
            Assert.AreEqual(sum, result.Value);
            Assert.AreEqual("1d20", result.DiceExpression);
        }
Esempio n. 5
0
        public void Dice_RollExplodingDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.Dice(6, 4, exploding: 6);

            // run test
            DiceResult result = dice.Roll(roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            int sum = 0, count = 4;

            foreach (TermResult r in result.Results)
            {
                Assert.IsNotNull(r);
                Assert.AreEqual(1, r.Scalar);
                AssertHelpers.IsWithinRangeInclusive(1, 6, r.Value);
                Assert.AreEqual("DiceTerm.d6", r.Type);
                sum += r.Value;
                if (r.Value >= 6)
                {
                    count++;
                }
            }
            Assert.AreEqual(count, result.Results.Count);
            Assert.AreEqual(sum, result.Value);
            Assert.AreEqual("4d6!6", result.DiceExpression);
        }
Esempio n. 6
0
        public void Dice_RollScalarMultiplierDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.Dice(8, 2, 10);

            // run test
            DiceResult result = dice.Roll(roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(20, 160, result.Value);
            Assert.AreEqual(2, result.Results.Count);
            int sum = 0;

            foreach (TermResult r in result.Results)
            {
                AssertHelpers.IsWithinRangeInclusive(1, 8, r.Value);
                sum += (int)(r.Value * r.Scalar);
            }
            Assert.AreEqual(sum, result.Value);
            Assert.AreEqual("2d8x10", result.DiceExpression);
        }
        public void DiceParser_ParseDiceWithExplodingNoValueRandomTest()
        {
            // setup test
            DiceParser parser = new DiceParser();

            // run test
            DiceResult result = parser.Parse("10d6!", this.config, new RandomDieRoller());

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("10d6!", result.DiceExpression);
            int sum = 0, count = 10;

            foreach (TermResult r in result.Results)
            {
                Assert.IsNotNull(r);
                Assert.AreEqual(1, r.Scalar);
                AssertHelpers.IsWithinRangeInclusive(1, 6, r.Value);
                Assert.AreEqual("DiceTerm.d6", r.Type);
                sum += r.Value;
                if (r.Value >= 6)
                {
                    count++;
                }
            }
            Assert.AreEqual(count, result.Results.Count);
            Assert.AreEqual(sum, result.Value);
        }
        public void DiceTerm_CalculateResultsExplodingAndChooseTest()
        {
            // setup test
            IExpressionTerm term = new DiceTerm(10, 12, choose: 8, exploding: 9);

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

            // validate results
            Assert.IsNotNull(results);
            int included = 0;

            foreach (TermResult r in results)
            {
                Assert.IsNotNull(r);
                Assert.AreEqual(1, r.Scalar);
                AssertHelpers.IsWithinRangeInclusive(1, 12, r.Value);
                Assert.AreEqual("DiceTerm.d12", r.Type);
                if (r.AppliesToResultCalculation)
                {
                    included++;
                }
            }
            Assert.AreEqual(8, included);
        }
        public void DieRollTracker_AddMultipleDieRollTest()
        {
            // setup test
            IDieRollTracker t = new DieRollTracker();

            // run test
            t.AddDieRoll(6, 4, typeof(RandomDieRoller));
            t.AddDieRoll(6, 3, typeof(RandomDieRoller));
            t.AddDieRoll(6, 1, typeof(RandomDieRoller));
            t.AddDieRoll(6, 6, typeof(RandomDieRoller));
            t.AddDieRoll(6, 2, typeof(RandomDieRoller));
            t.AddDieRoll(6, 4, typeof(RandomDieRoller));

            Task <IList <DieTrackingData> > task = t.GetTrackingDataAsync();

            task.Wait();
            IList <DieTrackingData> d = task.Result;

            // validate results
            Assert.IsNotNull(d);
            Assert.AreEqual(6, d.Count);
            foreach (DieTrackingData e in d)
            {
                Assert.AreEqual("RandomDieRoller", e.RollerType);
                Assert.AreEqual("6", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 6, e.Result);
            }
        }
Esempio n. 10
0
        public void DieRollTrackerWithMathNetRoller_MultipleDieSidesTest()
        {
            // setup test
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(8);
            this.roller.Roll(8);
            this.roller.Roll(8);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);
            this.roller.Roll(20);

            // run test
            Task <IList <DieTrackingData> > t1 = this.tracker.GetTrackingDataAsync(dieSides: "12");

            t1.Wait();
            IList <DieTrackingData> data1 = t1.Result;

            Task <IList <DieTrackingData> > t2 = this.tracker.GetTrackingDataAsync(dieSides: "8");

            t2.Wait();
            IList <DieTrackingData> data2 = t2.Result;

            Task <IList <DieTrackingData> > t3 = this.tracker.GetTrackingDataAsync(dieSides: "20");

            t3.Wait();
            IList <DieTrackingData> data3 = t3.Result;

            // validate results
            Assert.AreEqual(17, data1.Count + data2.Count + data3.Count);
            Assert.AreEqual(4, data1.Count);
            foreach (DieTrackingData e in data1)
            {
                Assert.AreEqual("12", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 12, e.Result);
            }
            Assert.AreEqual(3, data2.Count);
            foreach (DieTrackingData e in data2)
            {
                Assert.AreEqual("8", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 8, e.Result);
            }
            Assert.AreEqual(10, data3.Count);
            foreach (DieTrackingData e in data3)
            {
                Assert.AreEqual("20", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 20, e.Result);
            }
        }
        public void SecureRandomDieRoller_Rolld8Test()
        {
            // setup test
            IDieRoller die = new SecureRandomDieRoller();

            // run test
            int result = die.Roll(8);

            // validate results
            AssertHelpers.IsWithinRangeInclusive(1, 8, result);
        }
Esempio n. 12
0
        public void RandomDieRoller_Rolld20Test()
        {
            // setup test
            IDieRoller die = new RandomDieRoller();

            // run test
            int result = die.Roll(20);

            // validate results
            AssertHelpers.IsWithinRangeInclusive(1, 20, result);
        }
        public void MathNetDieRoller_Rolld6Test()
        {
            // setup test
            IDieRoller die = new MathNetDieRoller();

            // run test
            int result = die.Roll(6);

            // validate results
            AssertHelpers.IsWithinRangeInclusive(1, 6, result);
        }
        public void MathNetDieRoller_RollWithAnotherRandomSourceTest()
        {
            // setup test - try out a different MathNet random source (there are many)
            IDieRoller die = new MathNetDieRoller(new WH2006());

            // run test
            for (int i = 0; i < 1000; i++)
            {
                int result = die.Roll(6);

                // validate results
                AssertHelpers.IsWithinRangeInclusive(1, 6, result);
            }
        }
Esempio n. 15
0
        public void DiceParser_ParseSingleFudgeDieTest()
        {
            // setup test
            DiceParser parser = new DiceParser();

            // run test
            DiceResult result = parser.Parse("f", config, this.roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("f", result.DiceExpression);
            Assert.AreEqual(1, result.Results.Count);
            AssertHelpers.IsWithinRangeInclusive(-1, 1, result.Value);
        }
        public void SecureRandomDieRoller_RollThousanD6Test()
        {
            // setup test
            IDieRoller die = new SecureRandomDieRoller();

            // run test
            for (int i = 0; i < 1000; i++)
            {
                int result = die.Roll(6);

                // validate results
                AssertHelpers.IsWithinRangeInclusive(1, 6, result);
            }
        }
        public void DiceParser_ParseParensFudgeTest()
        {
            // setup test
            DiceParser parser = new DiceParser();

            // run test
            DiceResult result = parser.Parse("(10f-2) / (1+1)", this.config, this.roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("(10f-2)/(1+1)", result.DiceExpression);
            Assert.AreEqual(10, result.Results.Count);
            AssertHelpers.IsWithinRangeInclusive(-5, 5, result.Value);
        }
        public void SecureRandomDieRoller_RollMultipleFudgeTest()
        {
            // setup test
            IDieRoller die = new SecureRandomDieRoller();

            // run test
            for (int i = 0; i < 100; i++)
            {
                int result = die.Roll(3, -2);

                // validate results
                AssertHelpers.IsWithinRangeInclusive(-1, 1, result);
            }
        }
Esempio n. 19
0
        public void Dice_RollChooseDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.Dice(6, 4, choose: 3);

            // run test
            DiceResult result = dice.Roll(roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(3, 18, result.Value);
            AssertHelpers.AssertDiceChoose(result, "4d6k3", "DiceTerm.d6", 4, 3);
        }
Esempio n. 20
0
        public void Dice_RollFudgeChooseDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            dice.FudgeDice(6, 3);

            // run test
            DiceResult result = dice.Roll(this.roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(-3, 3, result.Value);
            AssertHelpers.AssertDiceChoose(result, "6fk3", "FudgeDiceTerm.dF", 6, 3);
        }
        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);
        }
        public void DieRollTracker_AddMultipleDieRollDieTypesTest()
        {
            // setup test
            IDieRollTracker t = new DieRollTracker();

            // run test
            t.AddDieRoll(6, 4, typeof(RandomDieRoller));
            t.AddDieRoll(6, 3, typeof(RandomDieRoller));
            t.AddDieRoll(6, 5, typeof(RandomDieRoller));
            t.AddDieRoll(6, 6, typeof(RandomDieRoller));
            t.AddDieRoll(6, 2, typeof(ConstantDieRoller));
            t.AddDieRoll(6, 2, typeof(ConstantDieRoller));

            Task <IList <DieTrackingData> > task = t.GetTrackingDataAsync();

            task.Wait();
            IList <DieTrackingData> d = task.Result;

            // validate results
            Assert.IsNotNull(d);
            Assert.AreEqual(6, d.Count);
            int i;

            for (i = 0; i < 2; i++)
            {
                DieTrackingData e = d[i];
                Assert.AreEqual("ConstantDieRoller", e.RollerType);
                Assert.AreEqual("6", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 6, e.Result);
            }

            for (int x = i; x < 6; x++)
            {
                DieTrackingData e = d[x];
                Assert.AreEqual("RandomDieRoller", e.RollerType);
                Assert.AreEqual("6", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 6, e.Result);
            }
        }
Esempio n. 23
0
        public void Dice_ParseMultipleDiceTest()
        {
            // setup test
            IDice dice = new Dice();

            // run test
            DiceResult result = dice.Roll("3d6+2", roller);

            // validate results
            Assert.IsNotNull(result);
            Assert.AreEqual("OnePlat.DiceNotation.DieRoller.RandomDieRoller", result.DieRollerUsed);
            AssertHelpers.IsWithinRangeInclusive(5, 20, result.Value);
            int sum = 0;

            foreach (TermResult r in result.Results)
            {
                AssertHelpers.IsWithinRangeInclusive(1, 6, r.Value);
                sum += r.Value;
            }
            sum += 2;
            Assert.AreEqual(sum, result.Value);
            Assert.AreEqual("3d6+2", result.DiceExpression);
        }
Esempio n. 24
0
        public void DieRollTrackerWithMathNetRoller_SingleDieSidesTest()
        {
            // setup test
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(12);
            this.roller.Roll(12);

            // run test
            Task <IList <DieTrackingData> > t = this.tracker.GetTrackingDataAsync();

            t.Wait();
            IList <DieTrackingData> data = t.Result;

            // validate results
            Assert.AreEqual(5, data.Count);
            foreach (DieTrackingData e in data)
            {
                Assert.AreEqual("MathNetDieRoller", e.RollerType);
                Assert.AreEqual("12", e.DieSides);
                AssertHelpers.IsWithinRangeInclusive(1, 12, e.Result);
            }
        }