public void IsAlreadyShownShouldPassTheRequestToItsSuccessorWhenNecessary() { var testHandler = new IsAlreadyShownHandler(); var testBoard = new Board(new EasyBoardSettings(), new List<IBoardObserver>()); testBoard.Cells[0, 0] = new CellContext(); testBoard.Cells[0, 0].State = CellState.Sealed; testHandler.SetSuccessor(new RevealCellHandler()); testHandler.HandleRequest(row: 0, col: 0, board: testBoard); }
public void IsAlreadyShownShouldHandleRevealedAndUnrevealedCellsAccordingly() { var testHandler = new IsAlreadyShownHandler(); var testBoard = new Board(new EasyBoardSettings(), new List<IBoardObserver>()); testBoard.Cells[0, 0] = new CellContext(); testBoard.Cells[0, 0].State = CellState.Revealed; testHandler.HandleRequest(row: 0, col: 0, board: testBoard); Assert.AreEqual(expected: true, actual: testBoard.IsAlreadyShown(cellRow: 0, cellCol: 0)); }
/// <summary> /// The concrete implementation of the common method Execute setting up all handlers and successors /// and calling the first fro their chain /// </summary> /// <param name="command">The command to be executed</param> public void Execute(string command) { var isValidPlayCommandHandler = new IsValidPlayCommandHandler(); var isInsideBoardHandler = new IsInsideBoardHandler(); var isAlreadyShownHandler = new IsAlreadyShownHandler(); var isBombHandler = new IsBombHandler(); var revealCellHandler = new RevealCellHandler(); isValidPlayCommandHandler.SetSuccessor(isInsideBoardHandler); isInsideBoardHandler.SetSuccessor(isAlreadyShownHandler); isAlreadyShownHandler.SetSuccessor(isBombHandler); isBombHandler.SetSuccessor(revealCellHandler); isValidPlayCommandHandler.HandleRequest(command, this.board); }