You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2012/02/14 23:08:27 UTC

svn commit: r1244234 - in /commons/sandbox/graph/trunk/src: main/java/org/apache/commons/graph/shortestpath/ test/java/org/apache/commons/graph/flow/ test/java/org/apache/commons/graph/shortestpath/

Author: marcosperanza
Date: Tue Feb 14 22:08:26 2012
New Revision: 1244234

URL: http://svn.apache.org/viewvc?rev=1244234&view=rev
Log:
Added test cases
Added PathNotFoundException into PredecessorList

Modified:
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java
    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java
    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java Tue Feb 14 22:08:26 2012
@@ -105,8 +105,12 @@ final class DefaultTargetSourceSelector<
         {
             if ( !source.equals( target ) )
             {
-                WeightedPath<V, WE, W> weightedPath = predecessors.buildPath( source, target );
-                allVertexPairsShortestPath.addShortestPath( source, target, weightedPath );
+                try{
+                    WeightedPath<V, WE, W> weightedPath = predecessors.buildPath( source, target );
+                    allVertexPairsShortestPath.addShortestPath( source, target, weightedPath );
+                }catch (PathNotFoundException e) {
+                    continue;
+                }
             }
         }
 

Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java (original)
+++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java Tue Feb 14 22:08:26 2012
@@ -22,6 +22,7 @@ package org.apache.commons.graph.shortes
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.graph.Edge;
 import org.apache.commons.graph.Graph;
 import org.apache.commons.graph.Vertex;
 import org.apache.commons.graph.WeightedEdge;
@@ -79,6 +80,10 @@ public final class PredecessorsList<V ex
         while ( !source.equals( vertex ) )
         {
             V predecessor = predecessors.get( vertex );
+            if ( predecessor == null )
+            {
+                throw new PathNotFoundException( "Path from '%s' to '%s' doesn't exist", source, target );
+            }
             WE edge = graph.getEdge( predecessor, vertex );
 
             path.addConnectionInHead( predecessor, edge, vertex );

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java Tue Feb 14 22:08:26 2012
@@ -19,6 +19,13 @@ package org.apache.commons.graph.flow;
  * under the License.
  */
 
+import static org.apache.commons.graph.CommonsGraph.findMaxFlow;
+import static org.apache.commons.graph.CommonsGraph.newDirectedMutableWeightedGraph;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.WeightedEdge;
 import org.apache.commons.graph.builder.AbstractGraphConnection;
 import org.apache.commons.graph.model.BaseLabeledVertex;
 import org.apache.commons.graph.model.BaseLabeledWeightedEdge;
@@ -26,10 +33,6 @@ import org.apache.commons.graph.model.Di
 import org.apache.commons.graph.weight.primitive.IntegerWeight;
 import org.junit.Test;
 
-import static org.apache.commons.graph.CommonsGraph.findMaxFlow;
-import static org.apache.commons.graph.CommonsGraph.newDirectedMutableWeightedGraph;
-import static org.junit.Assert.assertEquals;
-
 /**
  * Test for Edmonds-Karp algorithm implementation.
  * The test graph is available on
@@ -37,6 +40,73 @@ import static org.junit.Assert.assertEqu
  */
 public class EdmondsKarpTestCase
 {
+    
+    @Test( expected = NullPointerException.class )
+    public void testNullGraph()
+    {
+        final BaseLabeledVertex a = new BaseLabeledVertex( "A" );
+        final BaseLabeledVertex g = new BaseLabeledVertex( "G" );
+
+        // actual max flow
+        findMaxFlow( (DirectedMutableWeightedGraph<Vertex, WeightedEdge<Integer>, Integer>)  null ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullVertices()
+    {
+
+        final BaseLabeledVertex a = null;
+        final BaseLabeledVertex g = null;
+
+        DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>, Integer> graph =
+            newDirectedMutableWeightedGraph( new AbstractGraphConnection<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>>()
+            {
+                @Override
+                public void connect()
+                {
+                }
+
+            } );
+
+        // actual max flow
+        findMaxFlow( graph ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test
+    public void testSparse()
+    {
+        final BaseLabeledVertex a = new BaseLabeledVertex( "A" );
+        final BaseLabeledVertex g = new BaseLabeledVertex( "G" );
+
+        DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>, Integer> graph =
+            newDirectedMutableWeightedGraph( new AbstractGraphConnection<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>>()
+            {
+
+                @Override
+                public void connect()
+                {
+                    addVertex( a );
+                    BaseLabeledVertex b = addVertex( new BaseLabeledVertex( "B" ) );
+                    BaseLabeledVertex c = addVertex( new BaseLabeledVertex( "C" ) );
+                    addVertex( new BaseLabeledVertex( "D" ) );
+                    addVertex( new BaseLabeledVertex( "E" ) );
+                    addVertex( new BaseLabeledVertex( "F" ) );
+                    addVertex( g );
+                    
+                    addEdge( new BaseLabeledWeightedEdge<Integer>( "A -> B", 3 ) ).from( a ).to( b );
+                    addEdge( new BaseLabeledWeightedEdge<Integer>( "B -> C", 4 ) ).from( b ).to( c );
+                }
+            } );
+
+        // expected max flow
+        final Integer expected = 0;
+
+        // actual max flow
+        Integer actual = findMaxFlow( graph ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
+        assertEquals( actual, expected );
+    }
 
     @Test
     public void findMaxFlowAndVerify()

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java Tue Feb 14 22:08:26 2012
@@ -21,11 +21,15 @@ package org.apache.commons.graph.shortes
 
 import static junit.framework.Assert.assertEquals;
 import static org.apache.commons.graph.CommonsGraph.findShortestPath;
+import static org.junit.Assert.fail;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.graph.Path;
+import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.WeightedEdge;
+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.InMemoryWeightedPath;
@@ -36,6 +40,87 @@ import org.junit.Test;
 public final class AStarTestCase
 {
 
+    @Test( expected = NullPointerException.class )
+    public void testNullGraah()
+    {
+        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullVertices()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        findShortestPath( graph ).from( null ).to( null ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullHeuristic()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        findShortestPath( graph ).from( new BaseLabeledVertex( "a" ) ).to( new BaseLabeledVertex( "b" ) ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullMonoid()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        final Map<BaseLabeledVertex, Double> heuristics = new HashMap<BaseLabeledVertex, Double>();
+
+        Heuristic<BaseLabeledVertex, Double> heuristic = new Heuristic<BaseLabeledVertex, Double>()
+        {
+
+            public Double applyHeuristic( BaseLabeledVertex current, BaseLabeledVertex goal )
+            {
+                return heuristics.get( current );
+            }
+
+        };
+
+        findShortestPath( graph ).from( a ).to( b ).applyingAStar( null ).withHeuristic( heuristic );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = PathNotFoundException.class )
+    public void testNotConnectGraph()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        final Map<BaseLabeledVertex, Double> heuristics = new HashMap<BaseLabeledVertex, Double>();
+
+        Heuristic<BaseLabeledVertex, Double> heuristic = new Heuristic<BaseLabeledVertex, Double>()
+        {
+
+            public Double applyHeuristic( BaseLabeledVertex current, BaseLabeledVertex goal )
+            {
+                return heuristics.get( current );
+            }
+
+        };
+
+        findShortestPath( graph ).from( a ).to( b ).applyingAStar( new DoubleWeight() ).withHeuristic( heuristic );
+        fail( "Path not found Exception not cathed" );
+    }
+    
     /**
      * Test Graph and Dijkstra's solution can be seen on
      * <a href="http://en.wikipedia.org/wiki/A*_search_algorithm">Wikipedia</a>

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java Tue Feb 14 22:08:26 2012
@@ -19,20 +19,84 @@ package org.apache.commons.graph.shortes
  * under the License.
  */
 
-import static org.apache.commons.graph.CommonsGraph.findShortestPath;
 import static junit.framework.Assert.assertEquals;
+import static org.apache.commons.graph.CommonsGraph.findShortestPath;
+import static org.junit.Assert.fail;
 
+import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.WeightedEdge;
+import org.apache.commons.graph.WeightedGraph;
 import org.apache.commons.graph.WeightedPath;
 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.apache.commons.graph.weight.primitive.DoubleWeight;
 import org.junit.Test;
 
 public final class BellmannFordTestCase
 {
 
+    @Test( expected = NullPointerException.class )
+    public void testNullGraah()
+    {
+        // the actual weighted path
+        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).applyingBelmannFord( new DoubleWeight() );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullVertices()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        // the actual weighted path
+        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
+            findShortestPath( graph ).from( null ).applyingBelmannFord( new DoubleWeight() );
+
+        allVertexPairsShortestPath.findShortestPath( null, null );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullMonoid()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        // the actual weighted path
+        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
+            findShortestPath( graph ).from( a ).applyingBelmannFord( null );
+
+        allVertexPairsShortestPath.findShortestPath( a, b );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = PathNotFoundException.class )
+    public void testNotConnectGraph()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        // the actual weighted path
+        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
+            findShortestPath( graph ).from( a ).applyingBelmannFord( new DoubleWeight() );
+
+        allVertexPairsShortestPath.findShortestPath( a, b );
+    }
+    
     /**
      * Test Graph and Dijkstra's solution can be seen on
      * <a href="http://compprog.wordpress.com/2007/11/29/one-source-shortest-path-the-bellman-ford-algorithm/">Wikipedia</a>

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=1244234&r1=1244233&r2=1244234&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 Tue Feb 14 22:08:26 2012
@@ -21,18 +21,75 @@ package org.apache.commons.graph.shortes
 
 import static junit.framework.Assert.assertEquals;
 import static org.apache.commons.graph.CommonsGraph.findShortestPath;
+import static org.junit.Assert.fail;
 
 import org.apache.commons.graph.Path;
+import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.WeightedEdge;
+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.apache.commons.graph.weight.primitive.DoubleWeight;
 import org.junit.Test;
 
 public final class DijkstraTestCase
 {
 
+    @Test( expected = NullPointerException.class )
+    public void testNullGraah()
+    {
+        // the actual weighted path
+        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullVertices()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        // the actual weighted path
+        findShortestPath( graph ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
+
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = NullPointerException.class )
+    public void testNullMonoid()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        // the actual weighted path
+        findShortestPath( graph ).from( a ).to( b ).applyingDijkstra( null );
+
+        fail( "Null Pointer Exception not catched" );
+    }
+    
+    @Test( expected = PathNotFoundException.class )
+    public void testNotConnectGraph()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        // the actual weighted path
+        findShortestPath( graph ).from( a ).to( b ).applyingDijkstra( new DoubleWeight() );
+    }
+    
     /**
      * Test Graph and Dijkstra's solution can be seen on
      * <a href="http://en.wikipedia.org/wiki/Dijkstra's_algorithm>Wikipedia</a>

Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java
URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
==============================================================================
--- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java (original)
+++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java Tue Feb 14 22:08:26 2012
@@ -26,6 +26,8 @@ import static org.apache.commons.graph.C
 
 import org.apache.commons.graph.MutableGraph;
 import org.apache.commons.graph.UndirectedGraph;
+import org.apache.commons.graph.Vertex;
+import org.apache.commons.graph.WeightedEdge;
 import org.apache.commons.graph.WeightedGraph;
 import org.apache.commons.graph.WeightedPath;
 import org.apache.commons.graph.model.BaseLabeledVertex;
@@ -41,6 +43,33 @@ import org.junit.Test;
 public class FloydWarshallTestCase
 {
 
+    @Test( expected = NullPointerException.class )
+    public void testNullGraah()
+    {
+        // the actual weighted path
+        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
+        fail( "Null Pointer Exception not catched" );
+    }
+
+    @Test( expected = PathNotFoundException.class )
+    public void testNotConnectGraph()
+    {
+        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
+            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
+
+        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
+        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
+        graph.addVertex( a );
+        graph.addVertex( b );
+
+        // the actual weighted path
+        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> p =
+            findShortestPath( graph ).applyingFloydWarshall( new DoubleWeight() );
+
+        p.findShortestPath( a, b );
+        fail( "PathNotFoundException not catched" );
+    }
+    
     @Test
     public void undirectedShortestPath()
     {



Re: svn commit: r1244234 - in /commons/sandbox/graph/trunk/src: main/java/org/apache/commons/graph/shortestpath/ test/java/org/apache/commons/graph/flow/ test/java/org/apache/commons/graph/shortestpath/

Posted by Simone Tripodi <si...@apache.org>.
Hi Marco :)

nice to see your first commit!!! Anyway, 2 notes:

on DefaultTargetSourceSelector.java

> +                try{
> +                    WeightedPath<V, WE, W> weightedPath = predecessors.buildPath( source, target );
> +                    allVertexPairsShortestPath.addShortestPath( source, target, weightedPath );
> +                }catch (PathNotFoundException e) {
> +                    continue;
> +                }

this is not the format we've been using;

> +        fail( "Null Pointer Exception not catched" );

AFAIK `catched` doesn't exist in English, it has to be replaced to`not
caught`, the verb is not regular[1]

HTH,
-Simo

[1] http://forum.wordreference.com/showthread.php?t=223931&langid=14

http://people.apache.org/~simonetripodi/
http://simonetripodi.livejournal.com/
http://twitter.com/simonetripodi
http://www.99soft.org/



On Tue, Feb 14, 2012 at 11:08 PM,  <ma...@apache.org> wrote:
> Author: marcosperanza
> Date: Tue Feb 14 22:08:26 2012
> New Revision: 1244234
>
> URL: http://svn.apache.org/viewvc?rev=1244234&view=rev
> Log:
> Added test cases
> Added PathNotFoundException into PredecessorList
>
> Modified:
>    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java
>    commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java
>    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java
>    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java
>    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java
>    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/DijkstraTestCase.java
>    commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java
>
> Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java (original)
> +++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/DefaultTargetSourceSelector.java Tue Feb 14 22:08:26 2012
> @@ -105,8 +105,12 @@ final class DefaultTargetSourceSelector<
>         {
>             if ( !source.equals( target ) )
>             {
> -                WeightedPath<V, WE, W> weightedPath = predecessors.buildPath( source, target );
> -                allVertexPairsShortestPath.addShortestPath( source, target, weightedPath );
> +                try{
> +                    WeightedPath<V, WE, W> weightedPath = predecessors.buildPath( source, target );
> +                    allVertexPairsShortestPath.addShortestPath( source, target, weightedPath );
> +                }catch (PathNotFoundException e) {
> +                    continue;
> +                }
>             }
>         }
>
>
> Modified: commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java (original)
> +++ commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/shortestpath/PredecessorsList.java Tue Feb 14 22:08:26 2012
> @@ -22,6 +22,7 @@ package org.apache.commons.graph.shortes
>  import java.util.HashMap;
>  import java.util.Map;
>
> +import org.apache.commons.graph.Edge;
>  import org.apache.commons.graph.Graph;
>  import org.apache.commons.graph.Vertex;
>  import org.apache.commons.graph.WeightedEdge;
> @@ -79,6 +80,10 @@ public final class PredecessorsList<V ex
>         while ( !source.equals( vertex ) )
>         {
>             V predecessor = predecessors.get( vertex );
> +            if ( predecessor == null )
> +            {
> +                throw new PathNotFoundException( "Path from '%s' to '%s' doesn't exist", source, target );
> +            }
>             WE edge = graph.getEdge( predecessor, vertex );
>
>             path.addConnectionInHead( predecessor, edge, vertex );
>
> Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java (original)
> +++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/flow/EdmondsKarpTestCase.java Tue Feb 14 22:08:26 2012
> @@ -19,6 +19,13 @@ package org.apache.commons.graph.flow;
>  * under the License.
>  */
>
> +import static org.apache.commons.graph.CommonsGraph.findMaxFlow;
> +import static org.apache.commons.graph.CommonsGraph.newDirectedMutableWeightedGraph;
> +import static org.junit.Assert.assertEquals;
> +import static org.junit.Assert.fail;
> +
> +import org.apache.commons.graph.Vertex;
> +import org.apache.commons.graph.WeightedEdge;
>  import org.apache.commons.graph.builder.AbstractGraphConnection;
>  import org.apache.commons.graph.model.BaseLabeledVertex;
>  import org.apache.commons.graph.model.BaseLabeledWeightedEdge;
> @@ -26,10 +33,6 @@ import org.apache.commons.graph.model.Di
>  import org.apache.commons.graph.weight.primitive.IntegerWeight;
>  import org.junit.Test;
>
> -import static org.apache.commons.graph.CommonsGraph.findMaxFlow;
> -import static org.apache.commons.graph.CommonsGraph.newDirectedMutableWeightedGraph;
> -import static org.junit.Assert.assertEquals;
> -
>  /**
>  * Test for Edmonds-Karp algorithm implementation.
>  * The test graph is available on
> @@ -37,6 +40,73 @@ import static org.junit.Assert.assertEqu
>  */
>  public class EdmondsKarpTestCase
>  {
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullGraph()
> +    {
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "A" );
> +        final BaseLabeledVertex g = new BaseLabeledVertex( "G" );
> +
> +        // actual max flow
> +        findMaxFlow( (DirectedMutableWeightedGraph<Vertex, WeightedEdge<Integer>, Integer>)  null ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullVertices()
> +    {
> +
> +        final BaseLabeledVertex a = null;
> +        final BaseLabeledVertex g = null;
> +
> +        DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>, Integer> graph =
> +            newDirectedMutableWeightedGraph( new AbstractGraphConnection<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>>()
> +            {
> +                @Override
> +                public void connect()
> +                {
> +                }
> +
> +            } );
> +
> +        // actual max flow
> +        findMaxFlow( graph ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test
> +    public void testSparse()
> +    {
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "A" );
> +        final BaseLabeledVertex g = new BaseLabeledVertex( "G" );
> +
> +        DirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>, Integer> graph =
> +            newDirectedMutableWeightedGraph( new AbstractGraphConnection<BaseLabeledVertex, BaseLabeledWeightedEdge<Integer>>()
> +            {
> +
> +                @Override
> +                public void connect()
> +                {
> +                    addVertex( a );
> +                    BaseLabeledVertex b = addVertex( new BaseLabeledVertex( "B" ) );
> +                    BaseLabeledVertex c = addVertex( new BaseLabeledVertex( "C" ) );
> +                    addVertex( new BaseLabeledVertex( "D" ) );
> +                    addVertex( new BaseLabeledVertex( "E" ) );
> +                    addVertex( new BaseLabeledVertex( "F" ) );
> +                    addVertex( g );
> +
> +                    addEdge( new BaseLabeledWeightedEdge<Integer>( "A -> B", 3 ) ).from( a ).to( b );
> +                    addEdge( new BaseLabeledWeightedEdge<Integer>( "B -> C", 4 ) ).from( b ).to( c );
> +                }
> +            } );
> +
> +        // expected max flow
> +        final Integer expected = 0;
> +
> +        // actual max flow
> +        Integer actual = findMaxFlow( graph ).from( a ).to( g ).applyingEdmondsKarp( new IntegerWeight() );
> +        assertEquals( actual, expected );
> +    }
>
>     @Test
>     public void findMaxFlowAndVerify()
>
> Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java (original)
> +++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/AStarTestCase.java Tue Feb 14 22:08:26 2012
> @@ -21,11 +21,15 @@ package org.apache.commons.graph.shortes
>
>  import static junit.framework.Assert.assertEquals;
>  import static org.apache.commons.graph.CommonsGraph.findShortestPath;
> +import static org.junit.Assert.fail;
>
>  import java.util.HashMap;
>  import java.util.Map;
>
>  import org.apache.commons.graph.Path;
> +import org.apache.commons.graph.Vertex;
> +import org.apache.commons.graph.WeightedEdge;
> +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.InMemoryWeightedPath;
> @@ -36,6 +40,87 @@ import org.junit.Test;
>  public final class AStarTestCase
>  {
>
> +    @Test( expected = NullPointerException.class )
> +    public void testNullGraah()
> +    {
> +        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullVertices()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        findShortestPath( graph ).from( null ).to( null ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullHeuristic()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        findShortestPath( graph ).from( new BaseLabeledVertex( "a" ) ).to( new BaseLabeledVertex( "b" ) ).applyingAStar( new DoubleWeight() ).withHeuristic( null );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullMonoid()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        final Map<BaseLabeledVertex, Double> heuristics = new HashMap<BaseLabeledVertex, Double>();
> +
> +        Heuristic<BaseLabeledVertex, Double> heuristic = new Heuristic<BaseLabeledVertex, Double>()
> +        {
> +
> +            public Double applyHeuristic( BaseLabeledVertex current, BaseLabeledVertex goal )
> +            {
> +                return heuristics.get( current );
> +            }
> +
> +        };
> +
> +        findShortestPath( graph ).from( a ).to( b ).applyingAStar( null ).withHeuristic( heuristic );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = PathNotFoundException.class )
> +    public void testNotConnectGraph()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        final Map<BaseLabeledVertex, Double> heuristics = new HashMap<BaseLabeledVertex, Double>();
> +
> +        Heuristic<BaseLabeledVertex, Double> heuristic = new Heuristic<BaseLabeledVertex, Double>()
> +        {
> +
> +            public Double applyHeuristic( BaseLabeledVertex current, BaseLabeledVertex goal )
> +            {
> +                return heuristics.get( current );
> +            }
> +
> +        };
> +
> +        findShortestPath( graph ).from( a ).to( b ).applyingAStar( new DoubleWeight() ).withHeuristic( heuristic );
> +        fail( "Path not found Exception not cathed" );
> +    }
> +
>     /**
>      * Test Graph and Dijkstra's solution can be seen on
>      * <a href="http://en.wikipedia.org/wiki/A*_search_algorithm">Wikipedia</a>
>
> Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java (original)
> +++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/BellmannFordTestCase.java Tue Feb 14 22:08:26 2012
> @@ -19,20 +19,84 @@ package org.apache.commons.graph.shortes
>  * under the License.
>  */
>
> -import static org.apache.commons.graph.CommonsGraph.findShortestPath;
>  import static junit.framework.Assert.assertEquals;
> +import static org.apache.commons.graph.CommonsGraph.findShortestPath;
> +import static org.junit.Assert.fail;
>
> +import org.apache.commons.graph.Vertex;
> +import org.apache.commons.graph.WeightedEdge;
> +import org.apache.commons.graph.WeightedGraph;
>  import org.apache.commons.graph.WeightedPath;
>  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.apache.commons.graph.weight.primitive.DoubleWeight;
>  import org.junit.Test;
>
>  public final class BellmannFordTestCase
>  {
>
> +    @Test( expected = NullPointerException.class )
> +    public void testNullGraah()
> +    {
> +        // the actual weighted path
> +        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).applyingBelmannFord( new DoubleWeight() );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullVertices()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        // the actual weighted path
> +        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
> +            findShortestPath( graph ).from( null ).applyingBelmannFord( new DoubleWeight() );
> +
> +        allVertexPairsShortestPath.findShortestPath( null, null );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullMonoid()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        // the actual weighted path
> +        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
> +            findShortestPath( graph ).from( a ).applyingBelmannFord( null );
> +
> +        allVertexPairsShortestPath.findShortestPath( a, b );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = PathNotFoundException.class )
> +    public void testNotConnectGraph()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        // the actual weighted path
> +        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> allVertexPairsShortestPath =
> +            findShortestPath( graph ).from( a ).applyingBelmannFord( new DoubleWeight() );
> +
> +        allVertexPairsShortestPath.findShortestPath( a, b );
> +    }
> +
>     /**
>      * Test Graph and Dijkstra's solution can be seen on
>      * <a href="http://compprog.wordpress.com/2007/11/29/one-source-shortest-path-the-bellman-ford-algorithm/">Wikipedia</a>
>
> 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=1244234&r1=1244233&r2=1244234&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 Tue Feb 14 22:08:26 2012
> @@ -21,18 +21,75 @@ package org.apache.commons.graph.shortes
>
>  import static junit.framework.Assert.assertEquals;
>  import static org.apache.commons.graph.CommonsGraph.findShortestPath;
> +import static org.junit.Assert.fail;
>
>  import org.apache.commons.graph.Path;
> +import org.apache.commons.graph.Vertex;
> +import org.apache.commons.graph.WeightedEdge;
> +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.apache.commons.graph.weight.primitive.DoubleWeight;
>  import org.junit.Test;
>
>  public final class DijkstraTestCase
>  {
>
> +    @Test( expected = NullPointerException.class )
> +    public void testNullGraah()
> +    {
> +        // the actual weighted path
> +        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullVertices()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        // the actual weighted path
> +        findShortestPath( graph ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
> +
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = NullPointerException.class )
> +    public void testNullMonoid()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        // the actual weighted path
> +        findShortestPath( graph ).from( a ).to( b ).applyingDijkstra( null );
> +
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = PathNotFoundException.class )
> +    public void testNotConnectGraph()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        // the actual weighted path
> +        findShortestPath( graph ).from( a ).to( b ).applyingDijkstra( new DoubleWeight() );
> +    }
> +
>     /**
>      * Test Graph and Dijkstra's solution can be seen on
>      * <a href="http://en.wikipedia.org/wiki/Dijkstra's_algorithm>Wikipedia</a>
>
> Modified: commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java?rev=1244234&r1=1244233&r2=1244234&view=diff
> ==============================================================================
> --- commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java (original)
> +++ commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/shortestpath/FloydWarshallTestCase.java Tue Feb 14 22:08:26 2012
> @@ -26,6 +26,8 @@ import static org.apache.commons.graph.C
>
>  import org.apache.commons.graph.MutableGraph;
>  import org.apache.commons.graph.UndirectedGraph;
> +import org.apache.commons.graph.Vertex;
> +import org.apache.commons.graph.WeightedEdge;
>  import org.apache.commons.graph.WeightedGraph;
>  import org.apache.commons.graph.WeightedPath;
>  import org.apache.commons.graph.model.BaseLabeledVertex;
> @@ -41,6 +43,33 @@ import org.junit.Test;
>  public class FloydWarshallTestCase
>  {
>
> +    @Test( expected = NullPointerException.class )
> +    public void testNullGraah()
> +    {
> +        // the actual weighted path
> +        findShortestPath( (WeightedGraph<Vertex, WeightedEdge<Double>, Double>) null ).from( null ).to( null ).applyingDijkstra( new DoubleWeight() );
> +        fail( "Null Pointer Exception not catched" );
> +    }
> +
> +    @Test( expected = PathNotFoundException.class )
> +    public void testNotConnectGraph()
> +    {
> +        UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> graph =
> +            new UndirectedMutableWeightedGraph<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double>();
> +
> +        final BaseLabeledVertex a = new BaseLabeledVertex( "a" );
> +        final BaseLabeledVertex b = new BaseLabeledVertex( "b" );
> +        graph.addVertex( a );
> +        graph.addVertex( b );
> +
> +        // the actual weighted path
> +        AllVertexPairsShortestPath<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, Double> p =
> +            findShortestPath( graph ).applyingFloydWarshall( new DoubleWeight() );
> +
> +        p.findShortestPath( a, b );
> +        fail( "PathNotFoundException not catched" );
> +    }
> +
>     @Test
>     public void undirectedShortestPath()
>     {
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org