Example #1
0
        public void Creates_MiniMax_Context_When_AI_Is_MiniMax()
        {
            var ai = new MiniMaxIntelligence();
            var board = new MockBoard();
            var player1 = new MockPlayer {
                Symbol = 'X'
            }.GetIntelligenceStubbedToReturn(ai);
            var player2 = new MockPlayer {
                Symbol = 'O'
            }.GetIntelligenceStubbedToReturn(ai);
            var players = new List <IPlayer> {
                player1, player2
            };
            var game = new MockGame {
                Board         = board,
                CurrentPlayer = player1,
                Players       = players
            };
            var factory = new IntelligenceContextFactory();

            var context = factory.Create(game);

            context.Should().BeOfType <MiniMaxContext>();
            var minimaxContext = (MiniMaxContext)context;

            minimaxContext.Board.Should().Be(board);
            minimaxContext.MinimizedPlayer.Should().Be(player1);
            minimaxContext.Players.Should().BeEquivalentTo(players);
        }
Example #2
0
        public void Creates_Human_Context_When_AI_Is_Human()
        {
            var ai = new MockHumanIntelligence();
            var board = new MockBoard();
            var player1 = new MockPlayer {
                Symbol = 'X'
            }.GetIntelligenceStubbedToReturn(ai);
            var player2 = new MockPlayer {
                Symbol = 'O'
            }.GetIntelligenceStubbedToReturn(ai);
            var players = new List <IPlayer> {
                player1, player2
            };
            var game = new MockGame {
                Board         = board,
                CurrentPlayer = player1,
                Players       = players
            };
            var factory = new IntelligenceContextFactory();

            var context = factory.Create(game);

            context.Should().BeOfType <HumanContext>();
            var humanContext = (HumanContext)context;

            humanContext.Board.Should().Be(board);
        }
Example #3
0
        public void Throws_Exception_With_Invalid_AI()
        {
            var game = new MockGame {
                CurrentPlayer = new MockPlayer()
            };
            var factory = new IntelligenceContextFactory();

            Action action = () => factory.Create(game);

            action.ShouldThrow <ArgumentException>();
        }
Example #4
0
        public void Game_Should_Block_Diagonal_Win(int firstMove, int secondMove, int blockingMove)
        {
            var gameSettings    = BuildGameSettings(gamePlayerType: GamePlayerType.ComputerVsComputer);
            var gameInitializer = BuildGameInitializer();
            var game            = gameInitializer.Create(gameSettings);
            var contextFactory  = new IntelligenceContextFactory();

            game.CurrentPlayer.ChoosePosition(game.Board, firstMove);
            game.CurrentPlayer.ChoosePosition(game.Board, secondMove);
            game.SwitchPlayer();
            var context = contextFactory.Create(game);

            game.MakeMove(context);

            game.Board.IsPositionOpen(blockingMove).Should().BeFalse();
        }
Example #5
0
        public void Game_No_Moves_Should_Always_Tie()
        {
            var gameSettings    = BuildGameSettings(3, GamePlayerType.ComputerVsComputer);
            var gameInitializer = BuildGameInitializer();

            var game           = gameInitializer.Create(gameSettings);
            var contextFactory = new IntelligenceContextFactory();
            var context        = contextFactory.Create(game);

            do
            {
                game.MakeMove(context);
                game.SwitchPlayer();
                context = contextFactory.Create(game);
            } while (!game.IsOver());

            Assert.IsType <Nobody>(game.Board.GetWinner(game.Players));
        }
Example #6
0
        public void Creates_AlphaBetaMiniMax_Context_When_AI_Is_MiniMax()
        {
            var ai = new AlphaBetaMiniMaxIntelligence();
            var board = new MockBoard();
            var player1 = new MockPlayer {
                Symbol = 'X'
            }.GetIntelligenceStubbedToReturn(ai);
            var player2 = new MockPlayer {
                Symbol = 'O'
            }.GetIntelligenceStubbedToReturn(ai);
            var players = new List <IPlayer> {
                player1, player2
            };
            var game = new MockGame {
                Board         = board,
                CurrentPlayer = player1,
                Players       = players
            };
            var factory = new IntelligenceContextFactory();

            var context = factory.Create(game);

            context.Should().BeOfType <AlphaBetaMiniMaxContext>();
        }
Example #7
0
        public void Creates_A_New_Intelligence_Factory()
        {
            var factory = new IntelligenceContextFactory();

            factory.Should().BeAssignableTo <IIntelligenceContextFactory>();
        }