Hi Marco, > + @Test( expected = NullPointerException.class ) > + public void testNullVertex() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + input.addVertex( new BaseLabeledVertex( "A" ) ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).fromSource( null > ).applyingBoruvkaAlgorithm( new DoubleWeight() ); > + } > +
in this tests, input graph can be empty, it would be enough testing that fromSource( null ) cannot be applicable > + @Test( expected = NullPointerException.class ) > + public void testNullMonoid() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + BaseLabeledVertex a = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + a = new BaseLabeledVertex( "A" ); > + BaseLabeledVertex b = new BaseLabeledVertex( "B" ); > + > + input.addVertex( a ); > + input.addVertex( b ); > + > + input.addEdge( a, new BaseLabeledWeightedEdge<Double>( "a <-> > b", 7D ), b ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } I don't understand why graph population is in a try/catch block > + > + minimumSpanningTree( input ).fromSource( a > ).applyingBoruvkaAlgorithm( null ); > + } this input graph could be empty as well, unless we want to change the fromSource( a ) method behavior that checks if the Vertex is contained in the input Graph before selecting the algorithm to apply - that would be a nice addition IMHO, feel free to fill an issue and assign to yourself if you want to add it (hint: Preconditions.checkArgument()...) All the best, -Simo http://people.apache.org/~simonetripodi/ http://simonetripodi.livejournal.com/ http://twitter.com/simonetripodi http://www.99soft.org/ On Fri, Feb 17, 2012 at 11:10 PM, <marcospera...@apache.org> wrote: > Author: marcosperanza > Date: Fri Feb 17 22:10:26 2012 > New Revision: 1245786 > > URL: http://svn.apache.org/viewvc?rev=1245786&view=rev > Log: > [SANDBOX-393] Add test for Spanning tree > > Modified: > > commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/spanning/DefaultSpanningTreeSourceSelector.java > > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/BoruvkaTestCase.java > > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/KruskalTestCase.java > > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/PrimTestCase.java > > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/ReverseDeleteTestCase.java > > Modified: > commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/spanning/DefaultSpanningTreeSourceSelector.java > URL: > http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/spanning/DefaultSpanningTreeSourceSelector.java?rev=1245786&r1=1245785&r2=1245786&view=diff > ============================================================================== > --- > commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/spanning/DefaultSpanningTreeSourceSelector.java > (original) > +++ > commons/sandbox/graph/trunk/src/main/java/org/apache/commons/graph/spanning/DefaultSpanningTreeSourceSelector.java > Fri Feb 17 22:10:26 2012 > @@ -23,6 +23,7 @@ import static java.util.Collections.reve > import static java.util.Collections.sort; > import static org.apache.commons.graph.CommonsGraph.findShortestPath; > import static org.apache.commons.graph.utils.Assertions.checkNotNull; > +import static org.apache.commons.graph.utils.Assertions.checkState; > > import java.util.ArrayList; > import java.util.Iterator; > @@ -62,6 +63,7 @@ public final class DefaultSpanningTreeSo > */ > public SpanningTreeAlgorithmSelector<V, W, WE, G> fromArbitrarySource() > { > + checkState( graph.getOrder() > 0, "Spanning tree cannot be > calculated on an empty graph" ); > return fromSource( graph.getVertices().iterator().next() ); > } > > > Modified: > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/BoruvkaTestCase.java > URL: > http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/BoruvkaTestCase.java?rev=1245786&r1=1245785&r2=1245786&view=diff > ============================================================================== > --- > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/BoruvkaTestCase.java > (original) > +++ > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/BoruvkaTestCase.java > Fri Feb 17 22:10:26 2012 > @@ -21,9 +21,13 @@ package org.apache.commons.graph.spannin > > import static junit.framework.Assert.assertEquals; > import static junit.framework.Assert.fail; > + > import static org.apache.commons.graph.CommonsGraph.minimumSpanningTree; > > import org.apache.commons.graph.SpanningTree; > +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.MutableSpanningTree; > @@ -34,6 +38,62 @@ import org.junit.Test; > public final class BoruvkaTestCase > { > > + @Test( expected = NullPointerException.class ) > + public void testNullGraph() > + { > + minimumSpanningTree( (WeightedGraph<Vertex, WeightedEdge<Double>, > Double>) null ).fromArbitrarySource().applyingBoruvkaAlgorithm( new > DoubleWeight() ); > + } > + > + > + @Test( expected = IllegalStateException.class ) > + public void testEmptyGraph() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = > + new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + > + minimumSpanningTree( input > ).fromArbitrarySource().applyingBoruvkaAlgorithm( new DoubleWeight() ); > + } > + > /** > * Test Graph and boruvka's solution can be seen on > */ > @@ -118,8 +178,6 @@ public final class BoruvkaTestCase > input.addVertex( new BaseLabeledVertex( "G" ) ); > > minimumSpanningTree( input > ).fromArbitrarySource().applyingBoruvkaAlgorithm( new DoubleWeight() ); > - > - fail( "Exception not thrown!. Boruvka's algorithm cannot be > calculated on a not-connected graph." ); > } > > } > > Modified: > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/KruskalTestCase.java > URL: > http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/KruskalTestCase.java?rev=1245786&r1=1245785&r2=1245786&view=diff > ============================================================================== > --- > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/KruskalTestCase.java > (original) > +++ > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/KruskalTestCase.java > Fri Feb 17 22:10:26 2012 > @@ -20,9 +20,13 @@ package org.apache.commons.graph.spannin > */ > > import static junit.framework.Assert.assertEquals; > +import static junit.framework.Assert.fail; > import static org.apache.commons.graph.CommonsGraph.minimumSpanningTree; > > import org.apache.commons.graph.SpanningTree; > +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.MutableSpanningTree; > @@ -33,6 +37,62 @@ import org.junit.Test; > public final class KruskalTestCase > { > > + @Test( expected = NullPointerException.class ) > + public void testNullGraph() > + { > + minimumSpanningTree( (WeightedGraph<Vertex, WeightedEdge<Double>, > Double>) null ).fromArbitrarySource().applyingKruskalAlgorithm( new > DoubleWeight() ); > + } > + > + @Test( expected = NullPointerException.class ) > + public void testNullVertex() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + input.addVertex( new BaseLabeledVertex( "A" ) ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).fromSource( null > ).applyingKruskalAlgorithm( new DoubleWeight() ); > + } > + > + @Test( expected = NullPointerException.class ) > + public void testNullMonoid() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + BaseLabeledVertex a = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + a = new BaseLabeledVertex( "A" ); > + BaseLabeledVertex b = new BaseLabeledVertex( "B" ); > + > + input.addVertex( a ); > + input.addVertex( b ); > + > + input.addEdge( a, new BaseLabeledWeightedEdge<Double>( "a <-> > b", 7D ), b ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).fromSource( a > ).applyingKruskalAlgorithm( null ); > + } > + > + @Test( expected = IllegalStateException.class ) > + public void testEmptyGraph() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = > + new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + > + minimumSpanningTree( input > ).fromArbitrarySource().applyingKruskalAlgorithm( new DoubleWeight() ); > + } > + > /** > * Test Graph and Prim's solution can be seen on > * <a href="http://en.wikipedia.org/wiki/Prim%27s_algorithm">Wikipedia</a> > > Modified: > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/PrimTestCase.java > URL: > http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/PrimTestCase.java?rev=1245786&r1=1245785&r2=1245786&view=diff > ============================================================================== > --- > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/PrimTestCase.java > (original) > +++ > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/PrimTestCase.java > Fri Feb 17 22:10:26 2012 > @@ -20,9 +20,13 @@ package org.apache.commons.graph.spannin > */ > > import static junit.framework.Assert.assertEquals; > +import static junit.framework.Assert.fail; > import static org.apache.commons.graph.CommonsGraph.minimumSpanningTree; > > import org.apache.commons.graph.SpanningTree; > +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.MutableSpanningTree; > @@ -32,6 +36,61 @@ import org.junit.Test; > > public final class PrimTestCase > { > + @Test( expected = NullPointerException.class ) > + public void testNullGraph() > + { > + minimumSpanningTree( (WeightedGraph<Vertex, WeightedEdge<Double>, > Double>) null ).fromArbitrarySource().applyingPrimAlgorithm( new > DoubleWeight() ); > + } > + > + @Test( expected = NullPointerException.class ) > + public void testNullVertex() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + input.addVertex( new BaseLabeledVertex( "A" ) ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).fromSource( null > ).applyingPrimAlgorithm( new DoubleWeight() ); > + } > + > + @Test( expected = NullPointerException.class ) > + public void testNullMonoid() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + BaseLabeledVertex a = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + a = new BaseLabeledVertex( "A" ); > + BaseLabeledVertex b = new BaseLabeledVertex( "B" ); > + > + input.addVertex( a ); > + input.addVertex( b ); > + > + input.addEdge( a, new BaseLabeledWeightedEdge<Double>( "a <-> > b", 7D ), b ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).fromSource( a ).applyingPrimAlgorithm( > null ); > + } > + > + @Test( expected = IllegalStateException.class ) > + public void testEmptyGraph() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = > + new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + > + minimumSpanningTree( input > ).fromArbitrarySource().applyingPrimAlgorithm( new DoubleWeight() ); > + } > > /** > * Test Graph and Prim's solution can be seen on these > > Modified: > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/ReverseDeleteTestCase.java > URL: > http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/ReverseDeleteTestCase.java?rev=1245786&r1=1245785&r2=1245786&view=diff > ============================================================================== > --- > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/ReverseDeleteTestCase.java > (original) > +++ > commons/sandbox/graph/trunk/src/test/java/org/apache/commons/graph/spanning/ReverseDeleteTestCase.java > Fri Feb 17 22:10:26 2012 > @@ -20,9 +20,13 @@ package org.apache.commons.graph.spannin > */ > > import static junit.framework.Assert.assertEquals; > +import static junit.framework.Assert.fail; > import static org.apache.commons.graph.CommonsGraph.minimumSpanningTree; > > import org.apache.commons.graph.SpanningTree; > +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.MutableSpanningTree; > @@ -36,6 +40,50 @@ import org.junit.Test; > public class ReverseDeleteTestCase > { > > + @Test( expected = NullPointerException.class ) > + public void testNullGraph() > + { > + minimumSpanningTree( (WeightedGraph<Vertex, WeightedEdge<Double>, > Double>) null ).applyingReverseDeleteAlgorithm( new DoubleWeight() ); > + } > + > + @Test( expected = NullPointerException.class ) > + public void testNullMonoid() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = null; > + BaseLabeledVertex a = null; > + try > + { > + input = new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + a = new BaseLabeledVertex( "A" ); > + BaseLabeledVertex b = new BaseLabeledVertex( "B" ); > + > + input.addVertex( a ); > + input.addVertex( b ); > + > + input.addEdge( a, new BaseLabeledWeightedEdge<Double>( "a <-> > b", 7D ), b ); > + } > + catch ( NullPointerException e ) > + { > + fail( e.getMessage() ); > + } > + > + minimumSpanningTree( input ).applyingReverseDeleteAlgorithm( null ); > + } > + > + @Test > + public void testEmptyGraph() > + { > + UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double> input = > + new UndirectedMutableWeightedGraph<BaseLabeledVertex, > BaseLabeledWeightedEdge<Double>, Double>(); > + > + SpanningTree<BaseLabeledVertex, BaseLabeledWeightedEdge<Double>, > Double> tree = > + minimumSpanningTree( input ).applyingReverseDeleteAlgorithm( new > DoubleWeight() ); > + > + assertEquals( 0, tree.getOrder() ); > + assertEquals( 0, tree.getSize() ); > + > + } > + > /** > * Test Graph and Reverse-Delete Algorithm > */ > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org