public void TC_Transitions() { var problem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); ISuccessor successor = problem.GetSuccessors(problem.InitialState).First(); Assert.IsFalse(successor.IsComplexTransition()); Assert.IsTrue(successor.GetSuccessorState().Equals(successor.GetTransitionResult())); var successorResults = successor.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, successorResults.Count); Assert.IsTrue(successorResults.First().Equals(successor.GetTransitionResult())); IPredecessor predecessor = problem.GetPredecessors(problem.GoalConditions).First(); Assert.IsFalse(predecessor.IsComplexTransition()); Assert.IsTrue(predecessor.GetPredecessorConditions().Equals(predecessor.GetTransitionResult())); var predecessorResults = predecessor.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, predecessorResults.Count); Assert.IsTrue(predecessorResults.First().Equals(predecessor.GetTransitionResult())); IPredecessor predecessor2 = problem.GetPredecessors(problem.GoalConditions.GetCorrespondingRelativeStates(problem).First()).First(); Assert.IsTrue(predecessor2.IsComplexTransition()); Assert.IsTrue(CollectionsEquality.Equals(predecessor2.GetPredecessorRelativeStates(), predecessor2.GetComplexTransitionResults())); var predecessorResults2 = predecessor2.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, predecessorResults2.Count); Assert.IsTrue(predecessorResults2.First().Equals(predecessor2.GetTransitionResult())); }
public void TC_IStateOrConditions() { var problem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var heuristic = new FFHeuristic(problem); IStateOrConditions state = problem.InitialState; IStateOrConditions state2 = new Planner.SAS.State(1, 1, 1, 1, 0, 4, 4); Assert.IsTrue(CollectionsEquality.Equals(problem.GetSuccessors((IState)state), state.DetermineTransitions(problem))); Assert.IsFalse(state.DetermineGoalNode(problem)); Assert.IsTrue(state2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IState)state), state.DetermineHeuristicValue(heuristic)); IStateOrConditions conditions = problem.GoalConditions; IStateOrConditions conditions2 = new Planner.SAS.Conditions(new Planner.SAS.Assignment(5, 4), new Planner.SAS.Assignment(6, 4)); Assert.IsTrue(CollectionsEquality.Equals(problem.GetPredecessors((IConditions)conditions), conditions.DetermineTransitions(problem))); Assert.IsFalse(conditions.DetermineGoalNode(problem)); Assert.IsTrue(conditions2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IConditions)conditions), conditions.DetermineHeuristicValue(heuristic)); IStateOrConditions relativeState = problem.GoalConditions.GetCorrespondingRelativeStates(problem).First(); IStateOrConditions relativeState2 = new Planner.SAS.RelativeState(-1, -1, -1, -1, -1, 4, 4); Assert.IsTrue(CollectionsEquality.Equals(problem.GetPredecessors((IRelativeState)relativeState), relativeState.DetermineTransitions(problem))); Assert.IsFalse(relativeState.DetermineGoalNode(problem)); Assert.IsTrue(relativeState2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IRelativeState)relativeState), relativeState.DetermineHeuristicValue(heuristic)); }