public void Act_ShouldAttemptToClaimEachCellForWin() { //Arrange FakeCell fakeCell = new FakeCell.Builder().Build(); FakeEnumerator <ICell> fakeEnumerator = new FakeEnumerator <ICell> .Builder() .MoveNext(true, true, true, true, true, false) .Current(fakeCell) .Build(); FakeCellCollection fakeCellCollection = new FakeCellCollection.Builder() .GetEnumerator(fakeEnumerator) .Build(); FakeBoard fakeBoardClone = new FakeBoard.Builder() .ClaimEndsGame(Bool.False) .Build(); FakeBoard fakeBoard = new FakeBoard.Builder() .AvailableSpaces(fakeCellCollection) .Clone(fakeBoardClone) .Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Act(null).Build(); PlayerWinningSelectMoveAction subject = new AbstractWrapper(fakeSelectMoveAction); //Act subject.Act(fakeBoard, null, null); //Assert fakeSelectMoveAction.AssertActInvoked(); fakeBoard.CloneInvokedCount(5); fakeBoardClone.AssertClaimEndsGameInvokedCount(5); }
public void Act_ShouldSelectOtherPlayer() { //Arrange FakeCell fakeCell = new FakeCell.Builder().Build(); FakeEnumerator <ICell> fakeEnumerator = new FakeEnumerator <ICell> .Builder() .MoveNext(true) .Current(fakeCell) .Build(); FakeCellCollection fakeCellCollection = new FakeCellCollection.Builder() .GetEnumerator(fakeEnumerator) .Build(); FakeBoard fakeBoardClone = new FakeBoard.Builder() .ClaimEndsGame(Bool.True) .Build(); FakeBoard fakeBoard = new FakeBoard.Builder() .AvailableSpaces(fakeCellCollection) .Clone(fakeBoardClone) .Build(); FakePlayer fakePlayer = new FakePlayer.Builder().Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Act(null).Build(); OtherPlayerWinningSelectMoveAction subject = new OtherPlayerWinningSelectMoveAction(fakeSelectMoveAction); //Act subject.Act(fakeBoard, null, fakePlayer); //Assert fakeBoardClone.AssertClaimEndsGameInvokedWith(fakeCell, fakePlayer); }
public void ShouldPrintBoard() { //Arrange FakeWriter fakeWriter = new FakeWriter(); ConsoleGameStarting subject = new ConsoleGameStarting(fakeWriter); FakeBoard fakeBoard = new FakeBoard.Builder().Print().Build(); //Act subject.DisplayInitialBoard(fakeBoard); //Assert fakeBoard.AssertPrintInvoked(); }
public void ShouldReturnTrueGivenNotHasWinner() { //Arrange FakePlayerEndsGameAction fakePlayerEndsGameAction = new FakePlayerEndsGameAction.Builder().Build(); NoWinGuardPlayerEndsGameAction subject = new NoWinGuardPlayerEndsGameAction(fakePlayerEndsGameAction); FakeGameState fakeGameState = new FakeGameState.Builder().HasWinner(Bool.False).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().GameState(fakeGameState).Build(); //Act bool actual = subject.Act(fakeBoard, null, null); //Assert actual.Should().BeFalse(); }
public void ShouldReturnFalseGivenGameOver() { //Arrange FakePlayerEndsGameAction fakePlayerEndsGameAction = new FakePlayerEndsGameAction.Builder().Build(); GameOverGuardPlayerEndsGameAction subject = new GameOverGuardPlayerEndsGameAction(fakePlayerEndsGameAction); FakeGameState fakeGameState = new FakeGameState.Builder().IsGameOver(Bool.True).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().GameState(fakeGameState).Build(); //Act bool actual = subject.Act(fakeBoard, null, null); //Assert actual.Should().BeFalse(); }
public void ShouldReturnTieStatus() { //Arrange Bool expected = Bool.True; FakeGameState fakeGameState = new FakeGameState.Builder().IsTie(expected).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().GameState(fakeGameState).Build(); TieEndsGame subject = new TieEndsGame(fakeBoard); //Act bool actual = subject; //Assert actual.Should().BeTrue(); }
public void Act_ShouldReturnExpectedCellWhenCenterAvailable() { //Arrange FakeCell expectedCell = new FakeCell.Builder().Value("4").Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Build(); FakeBoard fakeBoard = new FakeBoard.Builder().Available(Bool.True).Build(); CenterSquareSelectMoveAction subject = new CenterSquareSelectMoveAction(fakeSelectMoveAction); //Act ICell cell = subject.Act(fakeBoard, null, null); //Assert cell.Value().Should().Be(expectedCell.Value()); }
public void ShouldReturnResultGivenHasWinner() { //Arrange FakePlayerEndsGameAction fakePlayerEndsGameAction = new FakePlayerEndsGameAction.Builder().Act(Bool.True).Build(); PrintBoardPlayerEndsGameAction subject = new PrintBoardPlayerEndsGameAction(fakePlayerEndsGameAction); FakeBoard fakeBoard = new FakeBoard.Builder().Print().Build(); //Act bool actual = subject.Act(fakeBoard, null, null); //Assert actual.Should().BeTrue(); fakeBoard.AssertPrintInvoked(); fakePlayerEndsGameAction.AssertActInvoked(); }
public void Act_ShouldCallActWhenCenterNotAvailable() { //Arrange FakeCell expectedCell = new FakeCell.Builder().Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Act(expectedCell).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().Available(Bool.False).Build(); FakePlayer fakePlayerA = new FakePlayer.Builder().Build(); FakePlayer fakePlayerB = new FakePlayer.Builder().Build(); CenterSquareSelectMoveAction subject = new CenterSquareSelectMoveAction(fakeSelectMoveAction); //Act subject.Act(fakeBoard, fakePlayerA, fakePlayerB); //Assert fakeSelectMoveAction.AssertActInvokedWith(new Tuple <IBoard, IPlayer, IPlayer>(fakeBoard, fakePlayerA, fakePlayerB)); }
public void ShouldReturnPlayersTurns() { //Arrange FakePlayer fakePlayer = new FakePlayer.Builder().Build(); FakePlayerCreation fakePlayerCreation = new FakePlayerCreation.Builder().Player(fakePlayer).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().Build(); ComputerVsComputerGameMode subject = new ComputerVsComputerGameMode(fakePlayerCreation); //Act IPlayersTurns actual = subject.ConfigurePlayers(fakeBoard); //Assert actual.Should().BeOfType <PlayersTurns>(); fakePlayerCreation.PlayerInvokedWith("O"); fakePlayerCreation.PlayerInvokedWith("X"); }
public void TakeActionEnds_ShouldIndicateGameEnds() { //Arrange FakeBoard fakeBoard = new FakeBoard.Builder() .ClaimEndsGame(Bool.True) .Build(); FakeCell fakeCell = new FakeCell.Builder().Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Act(fakeCell).Build(); TestPlayer subject = new TestPlayer(fakeSelectMoveAction); //Act subject.TakeAction(fakeBoard, null); //Assert fakeBoard.AssertClaimEndsGameInvoked(); }
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); }
public void Act_ShouldReturnAvailableCell() { //Arrange FakeCell expected = new FakeCell.Builder().Value("1").Build(); FakeBoard fakeBoard = new FakeBoard.Builder() .Available(Bool.False, Bool.False, Bool.False, Bool.True).Build(); FakeCell fakeCell = new FakeCell.Builder().Build(); FakePlayer fakePlayer = new FakePlayer.Builder().Cell(fakeCell).Build(); FakePlayer fakePlayerOther = new FakePlayer.Builder().Build(); FakeMoveInput fakeMoveInput = new FakeMoveInput.Builder().Input(new Glyph('1')).Build(); HumanSelectMoveAction subject = new HumanSelectMoveAction(fakeMoveInput); //Act ICell actual = subject.Act(fakeBoard, fakePlayer, fakePlayerOther); //Assert actual.Value().Should().Be(expected.Value()); }
public void ShouldReturnPlayersTurns() { //Arrange FakeCell fakeCell = new FakeCell.Builder().Value("?").Build(); FakePlayer fakePlayer = new FakePlayer.Builder().Cell(fakeCell).Build(); FakePlayer fakePlayer2 = new FakePlayer.Builder().Build(); FakePlayerCreation fakePlayerCreation = new FakePlayerCreation.Builder().Player(fakePlayer, fakePlayer2).Build(); FakeBoard fakeBoard = new FakeBoard.Builder().Build(); HumanVsHumanGameMode subject = new HumanVsHumanGameMode(fakePlayerCreation, fakePlayerCreation); //Act IPlayersTurns actual = subject.ConfigurePlayers(fakeBoard); //Assert actual.Should().BeOfType <PlayersTurns>(); fakePlayerCreation.PlayerInvokedWith(""); fakePlayerCreation.PlayerInvokedWith("?"); }
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 Act_ShouldSelectRandomSpace() { //Arrange Int expectedMax = new IntOf(57); FakeCell fakeCell = new FakeCell.Builder().Build(); FakeCellCollection fakeCellCollection = new FakeCellCollection.Builder() .Count(expectedMax) .At(fakeCell) .Build(); FakeBoard fakeBoard = new FakeBoard.Builder() .AvailableSpaces(fakeCellCollection) .Build(); RandomSpaceSelectMoveAction subject = new RandomSpaceSelectMoveAction(); //Act ICell actual = subject.Act(fakeBoard, null, null); //Assert actual.Should().BeOfType <RandomCell>(); }
public void Act_ShouldInvokeActWhenNoSpacesAvailable() { //Arrange FakeEnumerator <ICell> fakeEnumerator = new FakeEnumerator <ICell> .Builder() .MoveNext(false) .Build(); FakeCellCollection fakeCellCollection = new FakeCellCollection.Builder() .GetEnumerator(fakeEnumerator) .Build(); FakeBoard fakeBoard = new FakeBoard.Builder().AvailableSpaces(fakeCellCollection).Build(); FakeSelectMoveAction fakeSelectMoveAction = new FakeSelectMoveAction.Builder().Act(null).Build(); PlayerWinningSelectMoveAction subject = new AbstractWrapper(fakeSelectMoveAction); //Act subject.Act(fakeBoard, null, null); //Assert fakeSelectMoveAction.AssertActInvoked(); }