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()); }
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); }