public void UpdateVisibility_SomeTilesWereLitButNoTilesAreVisible_NoTilesAreLitAfterwards() { var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>() }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); var presenter = presenterMock.Object; presenter.UpdateVisibility(new HashSet <Position>()); presenter.LitPositionsSaved.Should().BeEmpty(); }
public void UpdateVisibility_NoTilesWereLitAndNoTilesBecomeVisible_NoTilesAreLitAfterwardsAndNoTilesGetAffected() { var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>() }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); presenterMock.Object.UpdateVisibility(new HashSet <Position>()); var presenter = presenterMock.Object; presenter.LitPositionsSaved.Should().BeEmpty(); presenterMock.Verify(a => a.SetUnseenMask(It.IsAny <Position>()), Times.Never); }
public void UpdateVisibility_SomeTilesWereLitButNoTilesAreVisible_PreviouslyLitTilesBecomeUnlit() { var firstLitTile = new Position(3, 3); var secondLitTile = new Position(4, 4); var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>(new[] { firstLitTile, secondLitTile }) }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); var presenter = presenterMock.Object; presenter.UpdateVisibility(new HashSet <Position>()); presenterMock.Verify(a => a.SetUnseenMask(It.IsAny <Position>()), Times.Exactly(2)); presenterMock.Verify(a => a.SetUnseenMask(firstLitTile), Times.Once); presenterMock.Verify(a => a.SetUnseenMask(secondLitTile), Times.Once); }
public void UpdateVisibility_NoTilesWereLitAndSomeTilesBecomeVisible_LitPositionsSavedSetIsAffectedAndUnseenMaskIsRemoved() { var firstVisibleTile = new Position(1, 1); var secondVisibleTile = new Position(2, 2); var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>() }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); var litTiles = new HashSet <Position> { firstVisibleTile, secondVisibleTile }; var presenter = presenterMock.Object; presenter.UpdateVisibility(litTiles); presenter.LitPositionsSaved.Should().BeEquivalentTo(litTiles); presenterMock.Verify(a => a.RemoveUnseenMask(It.IsAny <Position>()), Times.Exactly(2)); presenterMock.Verify(a => a.RemoveUnseenMask(firstVisibleTile), Times.Once); presenterMock.Verify(a => a.RemoveUnseenMask(secondVisibleTile), Times.Once); }
public void UpdateVisibility_TwoTilesWereLitButOnlyOneIsVisible_OtherTileBecomesUnlitAndIsAffected() { var firstVisibleTile = new Position(1, 1); var secondVisibleTile = new Position(2, 2); var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>() }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); var initiallyLitTiles = new HashSet <Position> { firstVisibleTile, secondVisibleTile }; var visibleTiles = new HashSet <Position> { secondVisibleTile }; gameContext.VisiblePositions = initiallyLitTiles; var presenter = presenterMock.Object; presenter.UpdateVisibility(visibleTiles); presenter.LitPositionsSaved.Should().BeEquivalentTo(visibleTiles); presenterMock.Verify(a => a.SetUnseenMask(It.IsAny <Position>()), Times.Once); presenterMock.Verify(a => a.SetUnseenMask(firstVisibleTile), Times.Once); }
public void Illuminate_TwoTilesAreVisibleAndOneOfThemWasAlreadyLit_NewlyLitTileBecomesLitAndIsAffected() { var firstVisibleTile = new Position(1, 1); var secondVisibleTile = new Position(2, 2); var initiallyLitTiles = new HashSet <Position> { firstVisibleTile }; var gameContext = new SceneContextMock { VisiblePositions = new HashSet <Position>() }; var presenterMock = CreateTilePresenterMockWithRealIlluminateImplementation(gameContext); gameContext.VisiblePositions = initiallyLitTiles; var visibleTiles = new HashSet <Position> { firstVisibleTile, secondVisibleTile }; var presenter = presenterMock.Object; presenter.UpdateIllumination(visibleTiles); presenter.LitPositionsSaved.Should().BeEquivalentTo(visibleTiles); presenterMock.Verify(a => a.SetUnseenMask(It.IsAny <Position>()), Times.Once); presenterMock.Verify(a => a.SetUnseenMask(secondVisibleTile), Times.Once); }
private static Mock <TilePresenter> CreateTilePresenterMockWithRealIlluminateImplementation(SceneContextMock sceneContext) { IOsnowaContextManager contextManager = Mock.Of <IOsnowaContextManager>(); ITileMatrixUpdater tileMatrixUpdater = Mock.Of <ITileMatrixUpdater>(); var mock = new Mock <TilePresenter>(sceneContext, default, contextManager, new TileByIdFromFolderProvider(), tileMatrixUpdater)
private static Mock <TilePresenter> CreateTilePresenterMockWithRealIlluminateImplementation(SceneContextMock sceneContext) { var mock = new Mock <TilePresenter>(sceneContext) { CallBase = true }; mock.Setup(m => m.SetUnseenMask(It.IsAny <Position>())); return(mock); }