rgl 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +19 -10
- data/Gemfile +3 -0
- data/{README → README.rdoc} +70 -98
- data/Rakefile +44 -150
- data/examples/canvas.rb +63 -64
- data/examples/examples.rb +42 -42
- data/examples/graph.dot +46 -0
- data/examples/images/example.jpg +0 -0
- data/examples/images/module_graph.jpg +0 -0
- data/examples/images/rgl_modules.png +0 -0
- data/examples/{insel-der-tausend-gefahren.rb → insel_der_tausend_gefahren.rb} +18 -19
- data/examples/north.rb +2 -2
- data/examples/north2.rb +11 -11
- data/examples/rdep-rgl.rb +218 -222
- data/lib/rgl/adjacency.rb +78 -74
- data/lib/rgl/base.rb +160 -78
- data/lib/rgl/bellman_ford.rb +115 -0
- data/lib/rgl/bidirectional.rb +17 -10
- data/lib/rgl/bipartite.rb +87 -0
- data/lib/rgl/condensation.rb +13 -4
- data/lib/rgl/connected_components.rb +38 -30
- data/lib/rgl/dijkstra.rb +158 -0
- data/lib/rgl/dijkstra_visitor.rb +42 -0
- data/lib/rgl/dot.rb +40 -32
- data/lib/rgl/edge_properties_map.rb +55 -0
- data/lib/rgl/edmonds_karp.rb +136 -0
- data/lib/rgl/enumerable_ext.rb +4 -1
- data/lib/rgl/graph_iterator.rb +15 -0
- data/lib/rgl/graph_visitor.rb +138 -0
- data/lib/rgl/graph_wrapper.rb +15 -0
- data/lib/rgl/graphxml.rb +20 -10
- data/lib/rgl/implicit.rb +68 -66
- data/lib/rgl/mutable.rb +37 -31
- data/lib/rgl/path_builder.rb +40 -0
- data/lib/rgl/prim.rb +52 -0
- data/lib/rgl/rdot.rb +411 -374
- data/lib/rgl/topsort.rb +23 -16
- data/lib/rgl/transitivity.rb +29 -27
- data/lib/rgl/traversal.rb +67 -205
- data/rakelib/dep_graph.rake +4 -3
- data/test/bellman_ford_test.rb +187 -0
- data/test/bipartite_test.rb +47 -0
- data/test/components_test.rb +80 -0
- data/test/cycles_test.rb +60 -0
- data/test/dijkstra_test.rb +148 -0
- data/test/directed_graph_test.rb +118 -0
- data/test/dot_test.rb +26 -0
- data/test/edge_properties_map_test.rb +63 -0
- data/test/edge_test.rb +35 -0
- data/test/edmonds_karp_test.rb +105 -0
- data/{tests/TestGraph.rb → test/graph_test.rb} +6 -6
- data/test/graph_xml_test.rb +57 -0
- data/test/implicit_test.rb +53 -0
- data/test/prim_test.rb +98 -0
- data/{tests/TestRdot.rb → test/rdot_test.rb} +309 -308
- data/{tests → test}/test_helper.rb +4 -1
- data/{tests/TestTransitivity.rb → test/transitivity_test.rb} +43 -43
- data/test/traversal_test.rb +221 -0
- data/test/undirected_graph_test.rb +103 -0
- metadata +226 -145
- data/examples/example.jpg +0 -0
- data/examples/module_graph.jpg +0 -0
- data/install.rb +0 -49
- data/tests/TestComponents.rb +0 -65
- data/tests/TestCycles.rb +0 -61
- data/tests/TestDirectedGraph.rb +0 -125
- data/tests/TestDot.rb +0 -18
- data/tests/TestEdge.rb +0 -34
- data/tests/TestGraphXML.rb +0 -57
- data/tests/TestImplicit.rb +0 -52
- data/tests/TestTraversal.rb +0 -220
- data/tests/TestUnDirectedGraph.rb +0 -102
@@ -1,102 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'rgl/adjacency'
|
3
|
-
|
4
|
-
include RGL
|
5
|
-
include RGL::Edge
|
6
|
-
|
7
|
-
class TestUnDirectedGraph < Test::Unit::TestCase
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@dg = AdjacencyGraph.new
|
11
|
-
[[1,2],[2,3],[3,2],[2,4]].each do |(src,target)|
|
12
|
-
@dg.add_edge(src, target)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_empty_graph
|
17
|
-
dg = AdjacencyGraph.new
|
18
|
-
assert(dg.empty?)
|
19
|
-
assert(!dg.directed?)
|
20
|
-
assert(!dg.has_edge?(2,1))
|
21
|
-
assert(!dg.has_vertex?(3))
|
22
|
-
# Non existend vertex result in a Name Error because each_key is
|
23
|
-
# called for nil
|
24
|
-
assert_raises(NoVertexError) {dg.out_degree(3)}
|
25
|
-
assert_equal([],dg.vertices)
|
26
|
-
assert_equal(0,dg.size)
|
27
|
-
assert_equal(0,dg.num_vertices)
|
28
|
-
assert_equal(0,dg.num_edges)
|
29
|
-
assert_equal(UnDirectedEdge,dg.edge_class)
|
30
|
-
assert([].eql?(dg.edges))
|
31
|
-
assert([].eql?(dg.to_a))
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_add
|
35
|
-
dg = AdjacencyGraph.new
|
36
|
-
dg.add_edge(1,2)
|
37
|
-
assert(!dg.empty?)
|
38
|
-
assert(dg.has_edge?(1,2))
|
39
|
-
assert(dg.has_edge?(2,1), "Backwards edge not included!")
|
40
|
-
assert(dg.has_vertex?(1) && dg.has_vertex?(2))
|
41
|
-
assert(!dg.has_vertex?(3))
|
42
|
-
|
43
|
-
assert_equal([1,2],dg.vertices.sort)
|
44
|
-
assert([DirectedEdge.new(1,2)].eql?(dg.edges))
|
45
|
-
assert_equal("(1=2)",dg.edges.to_s)
|
46
|
-
|
47
|
-
assert_equal([2],dg.adjacent_vertices(1))
|
48
|
-
assert_equal([1],dg.adjacent_vertices(2))
|
49
|
-
|
50
|
-
assert_equal(1,dg.out_degree(1))
|
51
|
-
assert_equal(1,dg.out_degree(2))
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_edges
|
55
|
-
assert_equal(3, @dg.edges.length)
|
56
|
-
edges = [[1,2],[2,3],[2,4]].map {|x| UnDirectedEdge.new(*x)}
|
57
|
-
assert_equal(edges, @dg.edges.sort)
|
58
|
-
# assert_equal([0,1,2,3], @dg.edges.map {|l| l.info}.sort)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_vertices
|
62
|
-
assert_equal([1,2,3,4], @dg.vertices.sort)
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_edges_from_to?
|
66
|
-
assert @dg.has_edge?(1,2)
|
67
|
-
assert @dg.has_edge?(2,3)
|
68
|
-
assert @dg.has_edge?(3,2)
|
69
|
-
assert @dg.has_edge?(2,4)
|
70
|
-
assert @dg.has_edge?(2,1)
|
71
|
-
assert !@dg.has_edge?(3,1)
|
72
|
-
assert !@dg.has_edge?(4,1)
|
73
|
-
assert @dg.has_edge?(4,2)
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_remove_edges
|
77
|
-
@dg.remove_edge 1,2
|
78
|
-
assert !@dg.has_edge?(1,2), "(1,2) should not be an edge any more."
|
79
|
-
@dg.remove_edge 1,2
|
80
|
-
assert !@dg.has_edge?(2,1)
|
81
|
-
@dg.remove_vertex 3
|
82
|
-
assert !@dg.has_vertex?(3), "3 should not be a vertex any more."
|
83
|
-
assert !@dg.has_edge?(2,3)
|
84
|
-
assert_equal([UnDirectedEdge.new(2,4)],@dg.edges)
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_add_vertices
|
88
|
-
dg = AdjacencyGraph.new
|
89
|
-
dg.add_vertices 1,3,2,4
|
90
|
-
assert_equal dg.vertices.sort, [1,2,3,4]
|
91
|
-
|
92
|
-
dg.remove_vertices 1,3
|
93
|
-
assert_equal dg.vertices.sort, [2,4]
|
94
|
-
|
95
|
-
dg.remove_vertices 1,3,Object # ones again
|
96
|
-
assert_equal dg.vertices.sort, [2,4]
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_reverse
|
100
|
-
assert_equal(@dg, @dg.reverse)
|
101
|
-
end
|
102
|
-
end
|