public void TestBWinNextTurn()
        {
            UltimateBoard b = Games.GetBoard(Games.Draw, 53);

            b.Play((1, 0, 1, 0));
            b.Play((1, 0, 0, 0));
            b.Play((0, 1, 2, 0));
            b.Play((1, 0, 1, 2));
            b.Play((0, 2, 1, 0)); // Now the only available play wins the game.
            Assert.That(RandomSimulator.Simulate(b), Is.EqualTo(0));
        }
        public void TestELargerTree()
        {
            UltimateBoard b = Games.GetBoard(Games.Draw, 53);

            b.Play((1, 0, 1, 0));
            b.Play((1, 0, 0, 0));
            b.Play((0, 1, 2, 0));
            b.Play((1, 0, 1, 2));
            float sum = 0;

            for (int i = 0; i < 1000; i++)
            {
                sum += RandomSimulator.Simulate(new UltimateBoard(b));
            }
            Assert.That(sum / 1000, Is.GreaterThan(0.76).And.LessThan(0.86));
        }
        public void TestADrawnGame()
        {
            UltimateBoard b = Games.GetBoard(Games.Draw, Games.Draw.Length); // Play the game to the end.

            Assert.That(RandomSimulator.Simulate(b), Is.EqualTo(0.5f));
        }
        public void TestAWonBySecond()
        {
            UltimateBoard b = Games.GetBoard(Games.OWins, Games.OWins.Length); // Play the game until O wins.

            Assert.That(RandomSimulator.Simulate(b), Is.EqualTo(1));
        }