You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.0 KiB
65 lines
2.0 KiB
package xu.solver.heuristic;
|
|
|
|
import core.problem.State;
|
|
import core.solver.Node;
|
|
import core.solver.heuristic.EvaluationType;
|
|
import xu.problem.pathfinding.Direction;
|
|
import xu.problem.pathfinding.Move;
|
|
import xu.problem.pathfinding.Point;
|
|
import xu.problem.pathfinding.Position;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class LinkedFrontierTest {
|
|
|
|
@org.junit.jupiter.api.Test
|
|
void offer() {
|
|
LinkedFrontier frontier = new LinkedFrontier(Node.evaluator(EvaluationType.FULL));
|
|
State position = new Position(4, 4);
|
|
Node parent = new Node(position, null, null, 0, 15);
|
|
|
|
position = new Position(5, 5);
|
|
Node node = new Node(position, parent, new Move(Direction.SE), 0, 15);
|
|
frontier.offer(node);
|
|
|
|
position = new Position(5, 6);
|
|
node = new Node(position, node, new Move(Direction.S), 1, 13);
|
|
frontier.offer(node);
|
|
position = new Position(6, 6);
|
|
node = new Node(position, node, new Move(Direction.E), 2, 13);
|
|
frontier.offer(node);
|
|
position = new Position(7, 6);
|
|
node = new Node(position, node, new Move(Direction.E), 3, 9);
|
|
frontier.offer(node);
|
|
|
|
for (Node node1: frontier){
|
|
System.out.println(node1);
|
|
}
|
|
System.out.println();
|
|
|
|
position = new Position(9, 6);
|
|
node = new Node(position, node, new Move(Direction.E), 2, 13);
|
|
|
|
System.out.println(frontier.getNode(node.getState()));
|
|
|
|
position = new Position(6, 6);
|
|
node = new Node(position, node, new Move(Direction.W), 22, 13);
|
|
|
|
System.out.println(frontier.contains(node));
|
|
|
|
System.out.println();
|
|
|
|
position = new Position(5, 6);
|
|
node = new Node(position, node, new Move(Direction.S), 3, 10);
|
|
frontier.discardOrReplace(node);
|
|
|
|
for (Node node1: frontier){
|
|
System.out.println(node1);
|
|
}
|
|
|
|
System.out.println();
|
|
while (!frontier.isEmpty()){
|
|
frontier.poll().draw();
|
|
}
|
|
}
|
|
} |