import org.junit.Before;
import org.junit.Test;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.*;
public class ComputeShortestPathTest {
private List<Vertex> expected;
private int cost;
private List<Vertex> graph;
private Vertex s;
private Vertex t;
@Test
public void compute1() throws Exception {
cost = 1;
expected = Arrays.asList(
graph.get(0),
graph.get(2),
graph.get(4),
graph.get(3),
graph.get(7)
);
s = graph.get(0);
t = graph.get(7);
test(expected,cost,graph,s,t);
}
@Test
public void compute2() throws Exception {
cost = 1;
expected = Collections.emptyList();
s = graph.get(9);
t = graph.get(12);
test(expected,cost,graph,s,t);
}
private void test(List<Vertex> expected, int cost, List<Vertex> graph, Vertex s, Vertex t) {
assertEquals(expected,ComputeShortestPath.compute(cost, graph, s, t));
}
@Before
public void setup() {
Vertex a = new Vertex('A');
Vertex b = new Vertex('B');
Vertex c = new Vertex('C');
Vertex d = new Vertex('D');
Vertex e = new Vertex('E');
Vertex f = new Vertex('F');
Vertex g = new Vertex('G');
Vertex h = new Vertex('H');
Vertex i = new Vertex('I');
Vertex j = new Vertex('J');
Vertex k = new Vertex('K');
Vertex l = new Vertex('L');
Vertex m = new Vertex('M');
Vertex n = new Vertex('N');
a.edges.put(b,3);
a.edges.put(c,2);
c.edges.put(e,8);
e.edges.put(d,7);
d.edges.put(c,5);
d.edges.put(h,5);
b.edges.put(a,4);
b.edges.put(k,1);
k.edges.put(i,1);
i.edges.put(k,6);
j.edges.put(l,7);
l.edges.put(i,9);
j.edges.put(f,1);
f.edges.put(g,6);
g.edges.put(f,7);
g.edges.put(h,4);
m.edges.put(n,5);
n.edges.put(m,12);
graph = Arrays.asList(
a,b,c,d,e,
f,g,h,i,j,
k,l,m,n
);
}
}