You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/06/18 02:36:06 UTC
svn commit: r1137101 -
/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java
Author: simonetripodi
Date: Sat Jun 18 00:36:06 2011
New Revision: 1137101
URL: http://svn.apache.org/viewvc?rev=1137101&view=rev
Log:
Dijkstra's algorithm tested on both (un)directed graphs
Modified:
commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java
Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java?rev=1137101&r1=1137100&r2=1137101&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java Sat Jun 18 00:36:06 2011
@@ -3,11 +3,14 @@ package org.apache.commons.graph.shortes
import static junit.framework.Assert.assertEquals;
import static org.apache.commons.graph.shortestpath.Dijkstra.findShortestPath;
+import org.apache.commons.graph.MutableGraph;
import org.apache.commons.graph.Path;
+import org.apache.commons.graph.WeightedGraph;
import org.apache.commons.graph.model.BaseLabeledVertex;
import org.apache.commons.graph.model.BaseLabeledWeightedEdge;
import org.apache.commons.graph.model.DirectedMutableWeightedGraph;
import org.apache.commons.graph.model.InMemoryWeightedPath;
+import org.apache.commons.graph.model.UndirectedMutableWeightedGraph;
import org.junit.Test;
public final class DijkstraTestCase
@@ -18,9 +21,23 @@ public final class DijkstraTestCase
* Wikipedia {@link http://en.wikipedia.org/wiki/Dijkstra's_algorithm}
*/
@Test
- public void shortestPath1()
+ public void undirectedShortestPath()
{
- // test Graph
+ findShortestPathAndVerify( new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge>() );
+ }
+
+ @Test
+ public void directedShortestPath()
+ {
+ findShortestPathAndVerify( new DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge>() );
+ }
+
+ private void findShortestPathAndVerify( WeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge> weighted )
+ {
+ @SuppressWarnings( "unchecked" ) // mutable by definition, generic types driven by input arg
+ MutableGraph<BaseLabeledVertex, BaseLabeledWeightedEdge> mutable = (MutableGraph<BaseLabeledVertex, BaseLabeledWeightedEdge>) weighted;
+
+ // building Graph
BaseLabeledVertex one = new BaseLabeledVertex( "1" );
BaseLabeledVertex two = new BaseLabeledVertex( "2" );
@@ -29,33 +46,28 @@ public final class DijkstraTestCase
BaseLabeledVertex five = new BaseLabeledVertex( "5" );
BaseLabeledVertex six = new BaseLabeledVertex( "6" );
- DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge> testGraph =
- new DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge>();
-
- testGraph.addVertex( one );
- testGraph.addVertex( two );
- testGraph.addVertex( three );
- testGraph.addVertex( four );
- testGraph.addVertex( five );
- testGraph.addVertex( six );
-
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", one, six, 14D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", one, three, 9D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", one, two, 7D ) );
+ mutable.addVertex( one );
+ mutable.addVertex( two );
+ mutable.addVertex( three );
+ mutable.addVertex( four );
+ mutable.addVertex( five );
+ mutable.addVertex( six );
+
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", one, six, 14D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", one, three, 9D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", one, two, 7D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", two, three, 10D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", two, four, 15D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", two, three, 10D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", two, four, 15D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", three, six, 2D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", three, four, 11D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", three, six, 2D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", three, four, 11D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", four, five, 6D ) );
- testGraph.addEdge( new BaseLabeledWeightedEdge( "", six, five, 9D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", four, five, 6D ) );
+ mutable.addEdge( new BaseLabeledWeightedEdge( "", six, five, 9D ) );
// expected path
- Path<BaseLabeledVertex, BaseLabeledWeightedEdge> actual = findShortestPath( testGraph, one, five );
-
InMemoryWeightedPath<BaseLabeledVertex, BaseLabeledWeightedEdge> expected =
new InMemoryWeightedPath<BaseLabeledVertex, BaseLabeledWeightedEdge>( one, five, 20D );
@@ -67,6 +79,12 @@ public final class DijkstraTestCase
expected.addEdgeInTail( new BaseLabeledWeightedEdge( "", three, six, 2D ) );
expected.addEdgeInTail( new BaseLabeledWeightedEdge( "", six, five, 9D ) );
+ // actual path
+
+ Path<BaseLabeledVertex, BaseLabeledWeightedEdge> actual = findShortestPath( weighted, one, five );
+
+ // assert!
+
assertEquals( expected, actual );
}