public void GetCurrentTask_BlockedNodeSelectedAsAlternate_NoExceptions()
        {
            // ARRANGE

            _factActorNode = _map.Nodes.OfType <HexNode>().SelectBy(1, 1);

            _map.HoldNode(_factActorNode, _actor);

            var blockedNode = _map.Nodes.OfType <HexNode>().SelectBy(2, 1);
            var blockerMock = new Mock <IPassMapBlocker>();
            var blocker     = blockerMock.Object;

            _map.HoldNode(blockedNode, blocker);

            var decisionSourceMock = new Mock <IDecisionSource>();

            decisionSourceMock.Setup(x => x.SelectIdleDuration(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(ExpectedIdleDuration);
            decisionSourceMock.Setup(x => x.SelectTargetRoamingNode(It.IsAny <IEnumerable <IMapNode> >()))
            .Returns(blockedNode);
            var decisionSource = decisionSourceMock.Object;

            var actors = new List <IActor> {
                _actor
            };
            var actorListMock = new Mock <IActorManager>();

            actorListMock.SetupGet(x => x.Items).Returns(actors);
            var actorList = actorListMock.Object;


            var tacticalActUsageService = CreateTacticalActUsageService();

            var logic = new RoamingLogic(_actor,
                                         _map,
                                         actorList,
                                         decisionSource,
                                         tacticalActUsageService);



            // ACT
            Action act = () =>
            {
                var task = logic.GetCurrentTask();
                task.Execute();
            };



            // ASSERT
            act.Should().NotThrow();
        }
        public void GetCurrentTask_IntruderNear_ActorWalkToIntruder()
        {
            // ARRANGE

            var expectedActorNode = _map.Nodes.OfType <HexNode>().SelectBy(2, 1);

            _factActorNode = _map.Nodes.OfType <HexNode>().SelectBy(1, 1);

            _map.HoldNode(_factActorNode, _actor);

            _factIntruderNode = _map.Nodes.OfType <HexNode>().SelectBy(3, 1);
            _map.HoldNode(_factIntruderNode, _intruder);



            var tacticalActUsageService = CreateTacticalActUsageService();

            var logic = new RoamingLogic(_actor,
                                         _map,
                                         _actorList,
                                         _decisionSource,
                                         tacticalActUsageService);



            // ACT

            var task = logic.GetCurrentTask();

            task.Execute();



            // ASSERT
            _factActorNode.Should().Be(expectedActorNode);
        }