Ejemplo n.º 1
0
        public void DeterministicStateTest()
        {
            startState.SetNeigbor(deterministicEndState);

            var engine = new SearchEngine()
            {
                AlternateEvaluation = (s, d, l) => 10,
                SkipEvaluationForFirstNodeSingleNeighbor = false
            };
            var evaluation = engine.Search(startState, 2);

            Assert.AreEqual(10, evaluation.Evaluation);
        }
        public void Search_CheckThatRecordPassThroughStatesIsWorking(int degreeOfParallelism, ParallelismMode parallelismMode)
        {
            A.CallTo(() => evaluation2State.Evaluate(A <int> ._, A <List <IState> > .That.IsEmpty()))
            .Throws(new Exception("passedStats list should have been empty"));
            A.CallTo(() => evaluationNagitive2State.Evaluate(A <int> ._, A <List <IState> > ._))
            .Invokes((int i, List <IState> l) =>
            {
                Assert.AreEqual(2, l.Count, "passThroughStates should have two states in it (startState and probabilisticState1)");
                Assert.IsTrue(l.Contains(probabilisticState1), "passThroughStates should contain" + nameof(probabilisticState1));
            });

            startState.SetNeigbor(probabilisticState1);
            A.CallTo(() => probabilisticState1.GetNeighbors()).Returns(new List <Tuple <double, IEnumerable <IState> > >()
            {
                new Tuple <double, IEnumerable <IState> >(1, new List <IState> {
                    evaluation2State, evaluationNagitive2State
                })
            });

            var searchEngine = TestUtils.GetBasicSearchEngine(parallelismMode, degreeOfParallelism);

            searchEngine.Search(startState, 5);
        }