package org.osmtools.ra.traverse;
import static org.junit.Assert.*;
import static org.osmtools.ra.TestUtils.*;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.osmtools.ra.SegmentsBuilder;
import org.osmtools.ra.TestBase;
import org.osmtools.ra.data.Node;
import org.osmtools.ra.graph.IntersectionNode;
public class SingleRouteTraverserTest extends TestBase {
private Collection<IntersectionNode> leaves;
private IntersectionNode nodeA;
private IntersectionNode nodeB;
@Before
public void setup() {
leaves = executeAndGetLeaves(SegmentsBuilder.create().appendFlexible(4, 5).appendFlexible(4, 3)
.appendFlexible(3, 2).appendFlexible(2, 1));
Iterator<IntersectionNode> it = leaves.iterator();
nodeA = it.next();
nodeB = it.next();
}
@Test
public void testTraverseOrderAtoB() throws Exception {
SingleRouteTraverser traverser = new SingleRouteTraverser(nodeA, nodeB);
List<Node> nodes = traverser.getPath();
assertEquals(getNode(1), nodes.get(0));
assertEquals(getNode(2), nodes.get(1));
assertEquals(getNode(3), nodes.get(2));
assertEquals(getNode(4), nodes.get(3));
assertEquals(getNode(5), nodes.get(4));
}
@Test
public void testTraverseOrderBtoA() throws Exception {
SingleRouteTraverser traverser = new SingleRouteTraverser(nodeB, nodeA);
List<Node> nodes = traverser.getPath();
assertEquals(getNode(5), nodes.get(0));
assertEquals(getNode(4), nodes.get(1));
assertEquals(getNode(3), nodes.get(2));
assertEquals(getNode(2), nodes.get(3));
assertEquals(getNode(1), nodes.get(4));
}
}