public void Test_CheckIfDamageHandlerDestroysCell()
        {
            var cell = new EmptyCell(new Position(0, 0));

            cell.TakeDamage(new DefaultDamageHandler());
            Assert.IsTrue(cell.IsDestroyed);
        }
        public void Test_CheckIfDamageHandlerDestroysMine()
        {
            var cell = new EmptyCell(new Position(0, 0));
            var mine = new GiantMine(cell);

            mine.TakeDamage(new DefaultDamageHandler());
            Assert.IsTrue(mine.IsDestroyed);
        }
        public void Test_CheckIfDamageHandlerDamagesEmptyCell()
        {
            var mockDamageHandler = new Mock<ICellDamageHandler>();
            var cell = new EmptyCell(new Position(0, 0));

            cell.TakeDamage(mockDamageHandler.Object);
            mockDamageHandler.Verify(x => x.Damage(cell), Times.Once());
        }
        public void Test_MineFactoryShouldReturnTinyMine()
        {
            var mockedGenerator = new Mock<IRandomGenerator>();
            mockedGenerator.Setup(x => x.GetRandomBetween(It.IsAny<int>(), It.IsAny<int>())).Returns(0);

            var randomMineFactory = new RandomMineFactory(mockedGenerator.Object);
            var cell = new EmptyCell(new Position(0, 0));
            var mine = randomMineFactory.Create(cell);

            Assert.IsInstanceOf<TinyMine>(mine, "Returned mine is not the right type");
        }
 /// <summary>
 /// Damages a cell.
 /// </summary>
 /// <param name="cell">The cell to be damaged.</param>
 public void Damage(EmptyCell cell)
 {
     cell.IsDestroyed = true;
 }
        public void Test_MineFactoryShouldThrowIndexOutOfRangeExceptionWithInvalidMineIndex()
        {
            var mockedGenerator = new Mock<IRandomGenerator>();
            mockedGenerator.Setup(x => x.GetRandomBetween(It.IsAny<int>(), It.IsAny<int>())).Returns(5);

            var randomMineFactory = new RandomMineFactory(mockedGenerator.Object);
            var cell = new EmptyCell(new Position(0, 0));
            var mine = randomMineFactory.Create(cell);
        }