public void Move_RoughTerrain_UnitStationary(MoveAction.Direction direction, int x, int y) { //Setup var unit = CreateUnit(); unit.Setup(u => u.Location).Returns(new Point(5, 5)); var newLocation = new Point(x, y); var state = CreateStateMock(CreateUnitList(unit)); state.Setup(s => s.Geography.GetTerrainAt(newLocation)).Returns(Geography.Terrain.ROUGH); AddUnitToState(unit, state); var action = new MoveAction(direction); UnitActionCollection actions = new UnitActionCollection(); actions.AddAction(unit.Object.Id, action); var subject = new ActionExecutor(state.Object); //Act subject.Execute(actions); //Assert //Moved in the correct direction unit.Verify(u => u.Move(newLocation), Times.Never); }
private void MoveUnit(Unit unit, MoveAction.Direction moveDirection) { Point newLocation = unit.Location; switch (moveDirection) { case MoveAction.Direction.NORTH: newLocation.Offset(0, -1); break; case MoveAction.Direction.EAST: newLocation.Offset(1, 0); break; case MoveAction.Direction.SOUTH: newLocation.Offset(0, 1); break; case MoveAction.Direction.WEST: newLocation.Offset(-1, 0); break; } if (State.Geography.GetTerrainAt(newLocation) == Geography.Terrain.NORMAL) { unit.Move(newLocation); } }