test/graph_test.rb
require 'test_helper'
require 'rgl/adjacency'
include RGL
class TestGraph < Test::Unit::TestCase
class NotImplementedGraph
include Graph
end
def setup
@dg1 = DirectedAdjacencyGraph.new
@edges = [[1, 2], [2, 3], [2, 4], [4, 5], [1, 6], [6, 4]]
@edges.each do |(src, target)|
@dg1.add_edge(src, target)
end
@loan_vertices = [7, 8, 9]
@loan_vertices.each do |vertex|
@dg1.add_vertex(vertex)
end
@dg2 = DirectedAdjacencyGraph[*@edges.flatten]
@loan_vertices.each do |vertex|
@dg2.add_vertex(vertex)
end
@ug = AdjacencyGraph.new(Array)
@ug.add_edges(*@edges)
@ug.add_vertices(*@loan_vertices)
end
def test_equality
assert_equal @dg1, @dg1
assert_equal @dg1, @dg1.dup
assert_equal @ug, @ug.dup
assert_not_equal @ug, @dg1
assert_not_equal @dg1, @ug
assert_not_equal @dg1, 42
assert_equal @dg1, @dg2
@dg1.add_vertex 42
assert_not_equal @dg1, @dg2
end
def test_to_adjacency
assert_equal @dg1, @dg1.to_adjacency
assert_equal @ug, @ug.to_adjacency
end
def test_merge
merge = DirectedAdjacencyGraph.new(Array, @dg1, @ug)
assert_equal merge.num_edges, 12
assert_equal merge.num_vertices, 9
merge = DirectedAdjacencyGraph.new(Set, @dg1, @dg1)
assert_equal merge.num_edges, 6
assert_equal merge.num_vertices, 9
end
def test_set_edgelist_class
edges = @dg1.edges
@dg1.edgelist_class=Array
assert_equal edges, @dg1.edges
end
# Test for issue #22
def test_edges_to_s
assert_equal @dg1.edges.sort.to_s, "[(1-2), (1-6), (2-3), (2-4), (4-5), (6-4)]"
end
def test_not_implemented
graph = NotImplementedGraph.new
assert_raise(NotImplementedError) { graph.each_vertex }
assert_raise(NotImplementedError) { graph.each_adjacent(nil) }
end
end