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); }