public void ShouldGetGameModeFromInput()
        {
            //Arrange
            FakeGameMode fakeGameMode = new FakeGameMode.Builder().Build();
            FakeValidResponse <IGameMode> fakeValidResponse = new FakeValidResponse <IGameMode> .Builder().Response(fakeGameMode).Build();

            GameModeSelection subject = new GameModeSelection(fakeValidResponse);

            //Act
            IGameMode gameMode = subject.Select();

            //Assert
            gameMode.Should().Be(fakeGameMode);
        }
Ejemplo n.º 2
0
        public void ShouldCreateOnlyHumanPlayerFromInput()
        {
            //Arrange
            FakePlayer fakePlayer = new FakePlayer.Builder().Build();
            FakeValidResponse <IPlayer> fakeValidResponse = new FakeValidResponse <IPlayer> .Builder().Response(fakePlayer).Build();

            OnlyHumanCreation subject = new OnlyHumanCreation(fakeValidResponse);

            //Act
            IPlayer actual = subject.Player("mark");

            //Assert
            actual.Should().Be(fakePlayer);
        }
Ejemplo n.º 3
0
        public void Input_ShouldWritePrompt()
        {
            //Arrange
            FakeCell fakeCell = new FakeCell.Builder().Value("?").Build();
            FakeValidResponse <IGlyph> fakeValidResponse = new FakeValidResponse <IGlyph> .Builder().Response(null).Build();

            FakeWriter     fakeWriter = new FakeWriter();
            HumanMoveInput subject    = new HumanMoveInput(fakeValidResponse, fakeWriter);

            //Act
            subject.Input(fakeCell);

            //Assert
            fakeWriter.AssertLinesWritten("Player ?'s Turn");
        }
Ejemplo n.º 4
0
        public void ShouldReturnPlayersTurnsComputerAsX()
        {
            //Arrange
            FakeCell   fakeCell           = new FakeCell.Builder().Value("O").Build();
            FakePlayer fakePlayer         = new FakePlayer.Builder().Cell(fakeCell).Build();
            FakePlayer fakePlayerComputer = new FakePlayer.Builder().Build();
            FakeValidResponse <IPlayerOrder> fakeValidResponse = new FakeValidResponse <IPlayerOrder> .Builder().Response(new HumanFirstOrder()).Build();

            FakePlayerCreation      fakePlayerCreation = new FakePlayerCreation.Builder().Player(fakePlayer, fakePlayerComputer).Build();
            FakeBoard               fakeBoard          = new FakeBoard.Builder().Build();
            HumanVsComputerGameMode subject            = new HumanVsComputerGameMode(fakeValidResponse, fakePlayerCreation, fakePlayerCreation);

            //Act
            IPlayersTurns actual = subject.ConfigurePlayers(fakeBoard);

            //Assert
            actual.Should().BeOfType <PlayersTurns>();
            fakePlayerCreation.PlayerInvokedWith("");
            fakePlayerCreation.PlayerInvokedWith("X");
        }
        public void ShouldCreateSecondHumanCreationFromInput()
        {
            //Arrange
            FakePlayer fakePlayer = new FakePlayer.Builder().Build();
            FakeValidResponse <IPlayer> fakeValidResponse = new FakeValidResponse <IPlayer> .Builder().Response(fakePlayer).Build();

            FakeFormattedValidInput <IPlayer> fakeFormattedValidInput = new FakeFormattedValidInput <IPlayer> .Builder()
                                                                        .AddPromptArg()
                                                                        .AddPatternArg()
                                                                        .ValidInput(fakeValidResponse)
                                                                        .Build();

            SecondHumanCreation subject = new SecondHumanCreation(fakeFormattedValidInput);

            //Act
            IPlayer actual = subject.Player("mark");

            //Assert
            actual.Should().Be(fakePlayer);
            fakeFormattedValidInput.AssertAddPromptArgInvokedWith("mark");
            fakeFormattedValidInput.AssertAddPatternArgInvokedWith("mark");
        }
Ejemplo n.º 6
0
        public void ShouldCreateComputerPlayerFromInput()
        {
            //Arrange
            FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Build();
            FakeValidResponse <ISelectMoveAction> fakeValidResponse = new FakeValidResponse <ISelectMoveAction> .Builder().Response(fakeSelectMoveAction).Build();

            FakeFormattedValidInput <ISelectMoveAction> fakeFormattedValidInput = new FakeFormattedValidInput <ISelectMoveAction> .Builder()
                                                                                  .AddPromptArg()
                                                                                  .ValidInput(fakeValidResponse)
                                                                                  .Build();

            ComputerCreation subject = new ComputerCreation(fakeFormattedValidInput);

            //Act
            IPlayer actual = subject.Player("mark");

            //Assert
            actual.Cell().Value().Should().Be("m");
            actual.Should().BeOfType <ComputerPlayer>();
            fakeFormattedValidInput.AssertAddPromptArgInvokedWith("mark");
            fakeValidResponse.AssertInputInvoked();
        }