tests/TestDirectedGraph.rb in rgl-0.2.3 vs tests/TestDirectedGraph.rb in rgl-0.3.0

- old
+ new

@@ -9,112 +9,117 @@ @dg = DirectedAdjacencyGraph.new [[1,2],[2,3],[3,2],[2,4]].each do |(src,target)| @dg.add_edge(src, target) end end - + def test_empty_graph - dg = DirectedAdjacencyGraph.new - assert dg.empty? + dg = DirectedAdjacencyGraph.new + assert dg.empty? assert dg.directed? - assert(!dg.has_edge?(2,1)) - assert(!dg.has_vertex?(3)) - # Non existend vertex result in a Name Error because each_key is - # called for nil - assert_raises(NoVertexError) {dg.out_degree(3)} - assert_equal([],dg.vertices) - assert_equal(0,dg.size) - assert_equal(0,dg.num_vertices) - assert_equal(0,dg.num_edges) - assert_equal(DirectedEdge,dg.edge_class) - assert([].eql?(dg.edges)) + assert(!dg.has_edge?(2,1)) + assert(!dg.has_vertex?(3)) + # Non existend vertex result in a Name Error because each_key is + # called for nil + assert_raises(NoVertexError) {dg.out_degree(3)} + assert_equal([],dg.vertices) + assert_equal(0,dg.size) + assert_equal(0,dg.num_vertices) + assert_equal(0,dg.num_edges) + assert_equal(DirectedEdge,dg.edge_class) + assert([].eql?(dg.edges)) end - + def test_add - dg = DirectedAdjacencyGraph.new - dg.add_edge(1,2) - assert(!dg.empty?) - assert(dg.has_edge?(1,2)) - assert(!dg.has_edge?(2,1)) - assert(dg.has_vertex?(1) && dg.has_vertex?(2)) - assert(!dg.has_vertex?(3)) - - assert_equal([1,2],dg.vertices.sort) - assert([DirectedEdge.new(1,2)].eql?(dg.edges)) - assert_equal("(1-2)",dg.edges.to_s) - - assert_equal([2],dg.adjacent_vertices(1)) - assert_equal([],dg.adjacent_vertices(2)) - - assert_equal(1,dg.out_degree(1)) - assert_equal(0,dg.out_degree(2)) + dg = DirectedAdjacencyGraph.new + dg.add_edge(1,2) + assert(!dg.empty?) + assert(dg.has_edge?(1,2)) + assert(!dg.has_edge?(2,1)) + assert(dg.has_vertex?(1) && dg.has_vertex?(2)) + assert(!dg.has_vertex?(3)) + + assert_equal([1,2],dg.vertices.sort) + assert([DirectedEdge.new(1,2)].eql?(dg.edges)) + assert_equal("(1-2)",dg.edges.to_s) + + assert_equal([2],dg.adjacent_vertices(1)) + assert_equal([],dg.adjacent_vertices(2)) + + assert_equal(1,dg.out_degree(1)) + assert_equal(0,dg.out_degree(2)) end - + def test_edges assert_equal(4, @dg.edges.length) assert_equal([1,2,2,3], @dg.edges.map {|l| l.source}.sort) assert_equal([2,2,3,4], @dg.edges.map {|l| l.target}.sort) assert_equal("(1-2)(2-3)(2-4)(3-2)", @dg.edges.map {|l| l.to_s}.sort.join) -# assert_equal([0,1,2,3], @dg.edges.map {|l| l.info}.sort) + # assert_equal([0,1,2,3], @dg.edges.map {|l| l.info}.sort) end - + def test_vertices assert_equal([1,2,3,4], @dg.vertices.sort) end - + def test_edges_from_to? assert @dg.has_edge?(1,2) assert @dg.has_edge?(2,3) assert @dg.has_edge?(3,2) assert @dg.has_edge?(2,4) assert !@dg.has_edge?(2,1) assert !@dg.has_edge?(3,1) assert !@dg.has_edge?(4,1) assert !@dg.has_edge?(4,2) end - + def test_remove_edges - @dg.remove_edge 1,2 - assert !@dg.has_edge?(1,2) - @dg.remove_edge 1,2 - assert !@dg.has_edge?(1,2) - @dg.remove_vertex 3 - assert !@dg.has_vertex?(3) - assert !@dg.has_edge?(2,3) - assert_equal("(2-4)",@dg.to_s) + @dg.remove_edge 1,2 + assert !@dg.has_edge?(1,2) + @dg.remove_edge 1,2 + assert !@dg.has_edge?(1,2) + @dg.remove_vertex 3 + assert !@dg.has_vertex?(3) + assert !@dg.has_edge?(2,3) + assert_equal("(2-4)",@dg.to_s) end - + def test_add_vertices - dg = DirectedAdjacencyGraph.new - dg.add_vertices 1,3,2,4 - assert_equal dg.vertices.sort, [1,2,3,4] - - dg.remove_vertices 1,3 - assert_equal dg.vertices.sort, [2,4] + dg = DirectedAdjacencyGraph.new + dg.add_vertices 1,3,2,4 + assert_equal dg.vertices.sort, [1,2,3,4] + + dg.remove_vertices 1,3 + assert_equal dg.vertices.sort, [2,4] end - + def test_creating_from_array - dg = DirectedAdjacencyGraph[1, 2, 3, 4] - assert_equal(dg.vertices.sort, [1,2,3,4]) - assert_equal(dg.edges.to_s, "(1-2)(3-4)") + dg = DirectedAdjacencyGraph[1, 2, 3, 4] + assert_equal(dg.vertices.sort, [1,2,3,4]) + assert_equal(dg.edges.to_s, "(1-2)(3-4)") end - + def test_reverse reverted = @dg.reverse @dg.each_edge do |u,v| assert(reverted.has_edge?(v,u)) end end - + def test_reverse # Add isolated vertex @dg.add_vertex(42) reverted = @dg.reverse @dg.each_edge do |u,v| assert(reverted.has_edge?(v,u)) end - + assert(reverted.has_vertex?(42), "Reverted graph should contain isolated Vertex 42") + end + + def test_to_undirected + undirected = @dg.to_undirected + assert_equal undirected.edges.sort.to_s, "(1=2)(2=3)(2=4)" end end