Add Algorithms Module (#936)

* Update pom.xml

Add FindBugs reporting plugin

* Add algorithms module

Dijkstra implementation

* Update pom.xml

* Update pom.xml
This commit is contained in:
GuenHamza
2017-01-03 17:47:21 +00:00
committed by Grzegorz Piwowarek
parent 99e86c5f19
commit 49c7cc84ed
7 changed files with 267 additions and 14 deletions
@@ -0,0 +1,76 @@
package algorithms;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import com.baeldung.algorithms.dijkstra.Dijkstra;
import com.baeldung.algorithms.dijkstra.Graph;
import com.baeldung.algorithms.dijkstra.Node;
public class DijkstraAlgorithmTest {
@Test
public void whenSPPSolved_thenCorrect() {
Node nodeA = new Node("A");
Node nodeB = new Node("B");
Node nodeC = new Node("C");
Node nodeD = new Node("D");
Node nodeE = new Node("E");
Node nodeF = new Node("F");
nodeA.addDestination(nodeB, 10);
nodeA.addDestination(nodeC, 15);
nodeB.addDestination(nodeD, 12);
nodeB.addDestination(nodeF, 15);
nodeC.addDestination(nodeE, 10);
nodeD.addDestination(nodeE, 2);
nodeD.addDestination(nodeF, 1);
nodeF.addDestination(nodeE, 5);
Graph graph = new Graph();
graph.addNode(nodeA);
graph.addNode(nodeB);
graph.addNode(nodeC);
graph.addNode(nodeD);
graph.addNode(nodeE);
graph.addNode(nodeF);
graph = Dijkstra.calculateShortestPathFromSource(graph, nodeA);
List<Node> shortestPathForNodeB = Arrays.asList(nodeA);
List<Node> shortestPathForNodeC = Arrays.asList(nodeA);
List<Node> shortestPathForNodeD = Arrays.asList(nodeA, nodeB);
List<Node> shortestPathForNodeE = Arrays.asList(nodeA, nodeB, nodeD);
List<Node> shortestPathForNodeF = Arrays.asList(nodeA, nodeB, nodeD);
for(Node node : graph.getNodes()) {
switch (node.getName()) {
case "B":
assertTrue(node.getShortestPath().equals(shortestPathForNodeB));
break;
case "C":
assertTrue(node.getShortestPath().equals(shortestPathForNodeC));
break;
case "D":
assertTrue(node.getShortestPath().equals(shortestPathForNodeD));
break;
case "E":
assertTrue(node.getShortestPath().equals(shortestPathForNodeE));
break;
case "F":
assertTrue(node.getShortestPath().equals(shortestPathForNodeF));
break;
}
}
}
}