Esempio n. 1
0
        public void TestUserLosesIfNotDouble()
        {
            var wager = new Wager()
            {
                Stake = 1.0f
            };
            var diceRoll   = new DiceRollMachine();
            var testRoller = new TestDiceRollProvider();

            diceRoll.DiceRoller           = testRoller;
            testRoller.PreDeterminedRolls = new[] { 6, 1 };
            var result = diceRoll.Play(wager);

            Assert.IsFalse(result.IsSuccess);
        }
Esempio n. 2
0
        public void TestPaysOutNinePoundOnDoubleSix()
        {
            var wager = new Wager()
            {
                Stake = 1.0f
            };
            var diceRoll   = new DiceRollMachine();
            var testRoller = new TestDiceRollProvider();

            diceRoll.DiceRoller           = testRoller;
            testRoller.PreDeterminedRolls = new[] { 6, 6 };
            var result = diceRoll.Play(wager);

            Assert.AreEqual(9.0f, result.Returns, 0.01f);
        }
Esempio n. 3
0
        static bool SimulateOutcome(int iterationCount)
        {
            var diceRoll = new DiceRollMachine();

            diceRoll.DiceRoller.DiceFaces = 4;
            var roulette        = new RouletteMachine();
            var rouletteResults = roulette.Simulate(iterationCount);
            var diceRollResults = diceRoll.Simulate(iterationCount);

            var rouletteTitle      = "Roulette";
            var diceRollTitle      = "Dice Roll";
            var roulettePercentage = OutputSimResults(rouletteTitle, iterationCount, rouletteResults);
            var diceRollPercentage = OutputSimResults(diceRollTitle, iterationCount, diceRollResults);
            var bestMachine        = "Neither";

            if (roulettePercentage > diceRollPercentage)
            {
                if (IsWithinProfitLimit(rouletteTitle, roulettePercentage))
                {
                    bestMachine = rouletteTitle;
                }
                else
                {
                    bestMachine = diceRollTitle;
                }
            }
            else if (diceRollPercentage > roulettePercentage)
            {
                if (IsWithinProfitLimit(diceRollTitle, diceRollPercentage))
                {
                    bestMachine = diceRollTitle;
                }
                else
                {
                    bestMachine = rouletteTitle;
                }
            }

            Console.WriteLine($"{bestMachine} would provide the best profit margin.\n");

            Console.WriteLine("Would you like to rerun the simulation? (y/n)");

            return(Console.ReadLine().ToLower() == "y");
        }