public void GameIsADrawRulePasses_WhenAllResultRulesFail()
        {
            IBoard board = MockRepository.GenerateMock<IBoard>();
            char[] drawBoardPositions = { '0', 'A', 'B', 'C', 'E', 'D', 'G', 'H', 'P', 'X' };
            board.Stub(b => b.BoardPositions).Return(drawBoardPositions);

            var gameIsADrawRule = new GameIsADrawRule(board);

            Assert.IsTrue(gameIsADrawRule.Apply());
        }
        public void GameIsADrawRuleFails_WhenNoneOfTheDiagonals_InTheTicTacToeHasSamePlayerSymbol()
        {
            IBoard board = MockRepository.GenerateMock<IBoard>();
            char[] drawBoardPositions = { '0', 'X', 'X', 'X', '4', '5', '6', '7', '8', '9' };
            board.Stub(b => b.BoardPositions).Return(drawBoardPositions);

            var gameIsADrawRule = new GameIsADrawRule(board);

            Assert.IsFalse(gameIsADrawRule.Apply());
        }
        public void CheckForDraw_ReturnsFalse_WhenDrawRuleFails()
        {
            IGameRule diagonalWinningRule = MockRepository.GenerateMock<IGameRule>();
            IGameRule verticalWinningRule = MockRepository.GenerateMock<IGameRule>();
            IGameRule horizantalWinningRule = MockRepository.GenerateMock<IGameRule>();
            IBoard board = MockRepository.GenerateMock<IBoard>();
            char[] drawBoardPositions = { '0', 'X', 'X', 'X', '4', '5', '6', '7', '8', '9' };
            board.Stub(b => b.BoardPositions).Return(drawBoardPositions);
            IGameRule gameIsADrawRule = new GameIsADrawRule(board);

            diagonalWinningRule.Stub(r => r.Apply()).Return(false);
            verticalWinningRule.Stub(r => r.Apply()).Return(false);
            horizantalWinningRule.Stub(r => r.Apply()).Return(false);
            IGameRule[] gameRules =
            {
                diagonalWinningRule,verticalWinningRule,horizantalWinningRule,gameIsADrawRule
            };

            var resultsCheckingService = new ResultsCheckingService(gameRules);

            Assert.IsFalse(resultsCheckingService.CheckForDraw());
        }
Exemplo n.º 4
0
        private static void StartANewGame(List<IPlayer> players, Board board)
        {
            var diagonalWinningRule = new DiagonalWinningRule(board);
            var horizantalWinningRule = new HorizantalWinningRule(board);
            var verticalWinningRule = new VerticalWinningRule(board);
            var gameIsADrawRule = new GameIsADrawRule(board, diagonalWinningRule, horizantalWinningRule, verticalWinningRule);

            IResultsCheckingService resultsCheckingService = new ResultsCheckingService(gameIsADrawRule, diagonalWinningRule, horizantalWinningRule, verticalWinningRule);
            var game = new Game(board, resultsCheckingService);
            game.Play(players);
        }