public void ObjectBoolProperties_Test(string propertyName, bool isObj, bool?isParent, bool?isGrandParent, bool result) { Mock <IGameState> state = _mocks.GameState(); AGSBindingList <IRoom> rooms = new AGSBindingList <IRoom> (10); state.Setup(s => s.Rooms).Returns(rooms); Action <IObject, bool> setBool = (propertyName == "Visible") ? _setVisible : _setEnabled; Predicate <IObject> getBool = propertyName == "Visible" ? _getVisible : _getEnabled; AGSConcurrentHashSet <IObject> ui = new AGSConcurrentHashSet <IObject>(); foreach (IObject obj in GetImplementors(_mocks, state)) { state.Setup(s => s.UI).Returns(ui); ui.Add(obj); setBool(obj, isObj); if (!isParent.HasValue) { bool actual = getBool(obj); Assert.AreEqual(result, actual); continue; } foreach (IObject parent in GetImplementors(_mocks, state)) { state.Setup(s => s.UI).Returns(ui); ui.Add(parent); obj.TreeNode.SetParent(parent.TreeNode); setBool(parent, isParent.Value); if (!isGrandParent.HasValue) { bool actual = getBool(obj); Assert.AreEqual(result, actual); continue; } foreach (IObject grandparent in GetImplementors(_mocks, state)) { state.Setup(s => s.UI).Returns(ui); ui.Add(grandparent); parent.TreeNode.SetParent(grandparent.TreeNode); setBool(grandparent, isGrandParent.Value); bool actual = getBool(obj); Assert.AreEqual(result, actual); } } } }
public async Task RoomProperlyRendered_Test() { int threadID = AGSGame.UIThreadID; AGSGame.UIThreadID = Environment.CurrentManagedThreadId; try { _mocks.Room().Setup(m => m.ShowPlayer).Returns(false); AGSViewport viewport = new AGSViewport(new AGSDisplayListSettings(), new AGSCamera()); viewport.RoomProvider = new AGSSingleRoomProvider(_mocks.Room().Object); _mocks.GameState().Setup(m => m.Viewport).Returns(viewport); _areas.Clear(); _areas.Add(getArea()); _roomObjects.Clear(); _roomObjects.Add(_mocks.Object(true).Object); _uiObjects.Clear(); _uiObjects.Add(_mocks.Object(true).Object); IRendererLoop loop = getLoop(); Assert.IsTrue(loop.Tick()); //First tick just to tell the display list about our viewport, the second tick will have the objects to render await _events.OnRepeatedlyExecute.InvokeAsync(); Assert.IsTrue(loop.Tick()); _renderer.Verify(r => r.Render(It.IsAny <IObject>(), It.IsAny <IViewport>()), Times.Exactly(2)); } finally { AGSGame.UIThreadID = threadID; } }
public void RoomProperlyRendered_Test() { _mocks.Room().Setup(m => m.ShowPlayer).Returns(false); _areas.Clear(); _areas.Add(getArea()); _roomObjects.Clear(); _roomObjects.Add(_mocks.Object(true).Object); _uiObjects.Clear(); _uiObjects.Add(_mocks.Object(true).Object); IRendererLoop loop = getLoop(); Assert.IsTrue(loop.Tick()); _renderer.Verify(r => r.Render(It.IsAny <IObject>(), It.IsAny <IViewport>()), Times.Exactly(2)); }
public void RoomProperlyRendered_Test() { int threadID = AGSGame.UIThreadID; AGSGame.UIThreadID = Environment.CurrentManagedThreadId; try { _mocks.Room().Setup(m => m.ShowPlayer).Returns(false); AGSViewport viewport = new AGSViewport(new AGSDisplayListSettings(), new AGSCamera(), Mocks.GetResolver()); viewport.RoomProvider = new AGSSingleRoomProvider(_mocks.Room().Object); _mocks.GameState().Setup(m => m.Viewport).Returns(viewport); _mocks.GameState().Setup(m => m.GetSortedViewports()).Returns(new List <IViewport> { _mocks.GameState().Object.Viewport }); _areas.Clear(); _areas.Add(getArea()); var roomObj = _mocks.Object(true); var uiObj = _mocks.Object(true); roomObj.Setup(c => c.ID).Returns("roomObj"); uiObj.Setup(c => c.ID).Returns("uiObj"); _roomObjects.Clear(); _roomObjects.Add(roomObj.Object); _uiObjects.Clear(); _uiObjects.Add(uiObj.Object); var displayList = getDisplayList(); var pipeline = getPipeline(displayList); var roomRenderer = new Mock <IRenderer>(); var uiRenderer = new Mock <IRenderer>(); var roomInsturction = new Mock <IRenderInstruction>(); var uiInstruction = new Mock <IRenderInstruction>(); roomRenderer.Setup(r => r.GetNextInstruction(_mocks.GameState().Object.Viewport)).Returns(roomInsturction.Object); uiRenderer.Setup(r => r.GetNextInstruction(_mocks.GameState().Object.Viewport)).Returns(uiInstruction.Object); pipeline.Subscribe("roomObj", roomRenderer.Object); pipeline.Subscribe("uiObj", uiRenderer.Object); IRendererLoop loop = getLoop(displayList, pipeline); Assert.IsTrue(loop.Tick()); //First tick just to tell the display list about our viewport, the second tick will have the objects to render displayList.GetDisplayList(_mocks.GameState().Object.Viewport); displayList.Update(); pipeline.Update(); Assert.IsTrue(loop.Tick()); roomInsturction.Verify(r => r.Render(), Times.Once); uiInstruction.Verify(r => r.Render(), Times.Once); } finally { AGSGame.UIThreadID = threadID; } }