public void NoHeuristicsFindBestNode_CallsAllHeuristics()
        {
            var firstHeuristic  = new MockBestFitHeuristic();
            var secondHeuristic = new MockBestFitHeuristic();

            new HeuristicEvaluator(new List <IBestFitHeuristicInterface> {
                firstHeuristic, secondHeuristic
            }).GetBestNode(null, null, null, new List <NavNode>());

            Assert.IsTrue(firstHeuristic.GetBestNodeCalled);
            Assert.IsTrue(secondHeuristic.GetBestNodeCalled);
        }
        public void HeuristicsFindBestNode_StopsCallingWhenFindsBestNode()
        {
            var firstHeuristic  = new MockBestFitHeuristic();
            var secondHeuristic = new MockBestFitHeuristic {
                GetBestNodeResult = new NavNode()
            };
            var thirdHeuristic = new MockBestFitHeuristic();

            new HeuristicEvaluator(new List <IBestFitHeuristicInterface> {
                firstHeuristic, secondHeuristic, thirdHeuristic
            }).GetBestNode(null, null, null, new List <NavNode>());

            Assert.IsTrue(firstHeuristic.GetBestNodeCalled);
            Assert.IsTrue(secondHeuristic.GetBestNodeCalled);
            Assert.IsFalse(thirdHeuristic.GetBestNodeCalled);
        }
        public void HeuristicsFindBestNode_ReturnsExpectedNode()
        {
            var firstHeuristic  = new MockBestFitHeuristic();
            var secondHeuristic = new MockBestFitHeuristic {
                GetBestNodeResult = new NavNode()
            };
            var thirdHeuristic = new MockBestFitHeuristic();

            Assert.AreSame
            (
                secondHeuristic.GetBestNodeResult,
                new HeuristicEvaluator
                (
                    new List <IBestFitHeuristicInterface> {
                firstHeuristic, secondHeuristic, thirdHeuristic
            }).
                GetBestNode(null, null, null, new List <NavNode>()
                            )
            );
        }