public void EasyBoardSettingsConstructorShouldSetExpectedBoardParameterValues() { var settings = new EasyBoardSettings(); Assert.AreEqual(expected: 9, actual: settings.Rows); Assert.AreEqual(expected: 9, actual: settings.Cols); Assert.AreEqual(expected: 10, actual: settings.NumberOfBombs); }
public void CalculateSurroundingBombsOnEmptyBoardShouldReturnZero() { var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { }; var board = new Board(settings, subscribers); this.FillBoard(board); int result = board.CalculateNumberOfSurroundingBombs(default(int), default(int)); Assert.AreEqual(default(int), result); }
public void BoardConstructorShouldSetProvidedParameters() { var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver> { }; var board = new Board(settings, subscribers); Assert.AreEqual(settings.Rows, board.Rows); Assert.AreEqual(settings.Cols, board.Cols); Assert.AreEqual(settings.NumberOfBombs, board.NumberOfMines); Assert.AreEqual(subscribers, board.Subscribers); Assert.AreEqual(BoardState.Open, board.BoardState); Assert.AreNotEqual(default(ICell[,]), board.Cells); }
public void CalculateSurroundingBombsOnCellWithBombShouldReturnZero() { var contentFactory = new ContentFactory(); var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { }; var board = new Board(settings, subscribers); this.FillBoard(board); board.Cells[default(int), default(int)].Content = contentFactory.GetContent(ContentType.Bomb); int result = board.CalculateNumberOfSurroundingBombs(default(int), default(int)); Assert.AreEqual(default(int), result); }
public void UnsubscribeShouldRemoveTheObjectFromTheBoardSubscribers() { IBoardObserver mockedBoardObserver = new Mock<IBoardObserver>().Object; var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { mockedBoardObserver }; var board = new Board(settings, subscribers); Assert.AreEqual(default(int) + 1, board.Subscribers.Count); board.Unsubscribe(mockedBoardObserver); Assert.AreEqual(default(int), board.Subscribers.Count); }
public void SubscribeShouldAddTheObjectToTheBoardSubscribers() { IBoardObserver mockedBoardObserver = new Mock<IBoardObserver>().Object; var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { }; var board = new Board(settings, subscribers); board.Subscribe(mockedBoardObserver); Assert.AreEqual(!default(bool), board.Subscribers.Contains(mockedBoardObserver)); }
public void IsAlreadyShownShouldReturnTrueWhenCalledUponRevealedCell() { var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { }; var board = new Board(settings, subscribers); this.FillBoard(board); board.RevealCell(default(int), default(int)); bool result = board.IsAlreadyShown(default(int), default(int)); Assert.AreEqual(!default(bool), result); }
public void ChangeBoardStateShouldChangeBoardStateAndNotifySubscribers() { var templateNotification = new Notification(string.Empty, BoardState.Open); var mockedBoardObserver = new Mock<IBoardObserver>(); mockedBoardObserver.Setup(o => o.Update(templateNotification)).Verifiable(); var settings = new EasyBoardSettings(); var subscribers = new List<IBoardObserver>() { mockedBoardObserver.Object }; var board = new Board(settings, subscribers); board.ChangeBoardState(templateNotification); mockedBoardObserver.Verify(o => o.Update(templateNotification), Times.AtMostOnce); }
/// <summary> /// Start Game logic /// </summary> public void Start(Grid root) { // Initialize the two basic objects needed for user interactions this.InputProvider = this.inputProvider ?? new WpfInputProvider(); this.OutputRenderer = this.outputRenderer ?? new WpfRenderer(root); string testPlayerName = "John"; // Create the active player var player = new Player(testPlayerName); BoardSettings testBoardSettings = new EasyBoardSettings(); var board = new Board(testBoardSettings, new List<IBoardObserver>()); var scoreboard = new Scoreboard(); var contentFactory = new ContentFactory(); var initializationStrategy = new StandardGameInitializationStrategy(contentFactory); var boardOperator = new CommandOperator(board, scoreboard); var engine = new StandardOnePlayerMinesweeperEngine(board, this.inputProvider, this.outputRenderer, boardOperator, scoreboard, player); engine.Initialize(initializationStrategy); board.Subscribe(engine); engine.Run(); }