public void ShouldInvokeAct()
        {
            //Arrange
            FakeGameMode fakeGameMode = new FakeGameMode.Builder().Build();
            FakeGameModeSelectionAction         nextAction = new FakeGameModeSelectionAction.Builder().Act(fakeGameMode).Build();
            HumanVsHumanGameModeSelectionAction subject    = new HumanVsHumanGameModeSelectionAction(nextAction);

            //Act
            subject.Act("not 2");

            //Assert
            nextAction.AssertActInvoked();
        }
        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);
        }
        public void ShouldRunTheLoopMultipleTimes()
        {
            //Arrange
            FakeBoard             fakeBoard             = new FakeBoard.Builder().Build();
            FakePlayersTurns      fakePlayersTurns      = new FakePlayersTurns.Builder().GameOver(Bool.False, Bool.False, Bool.False, Bool.True).Build();
            FakeGameMode          fakeGameMode          = new FakeGameMode.Builder().ConfigurePlayers(fakePlayersTurns).Build();
            FakeGameModeSelection fakeGameModeSelection = new FakeGameModeSelection.Builder().Select(fakeGameMode).Build();
            FakeGameStarting      fakeGameStarting      = new FakeGameStarting.Builder().DisplayWelcome().DisplayInitialBoard().Build();
            FakeGameEnding        fakeGameEnding        = new FakeGameEnding.Builder().Display().Build();
            TicTacToeGame         subject = new TicTacToeGame(fakeBoard, fakeGameModeSelection, fakeGameStarting, fakeGameEnding);

            //Act
            subject.Run();

            //Assert
            fakePlayersTurns.AssertGameOverInvokedCountMatches(4);
        }