示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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;
            }
        }
示例#3
0
        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));
        }
示例#4
0
        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;
            }
        }