class TestTransitiveClosure
Public Instance Methods
setup()
click to toggle source
# File test/transitivity_test.rb, line 9 def setup @dg = DirectedAdjacencyGraph.new @dg.add_edges([1, 2], [2, 3], [2, 4], [4, 5], [1, 6], [6, 4]) @dg_tc = DirectedAdjacencyGraph.new @dg_tc.add_edges( [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 3], [2, 4], [2, 5], [4, 5], [6, 4], [6, 5] ) @dg_tr = DirectedAdjacencyGraph.new @dg_tr.add_edges( [1, 2], [1, 6], [2, 3], [2, 4], [4, 5], [6, 4] ) @dg_loner = @dg.dup @dg_loner.add_vertices(7, 8, 9) @dg_loner_tc = @dg_tc.dup @dg_loner_tc.add_vertices(7, 8, 9) @dg_loner_tr = @dg_tr.dup @dg_loner_tr.add_vertices(7, 8, 9) @dg_cyclic = DirectedAdjacencyGraph.new @dg_cyclic.add_edges( [1, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 3] ) @dg_cyclic_tc = DirectedAdjacencyGraph.new @dg_cyclic_tc.add_edges( [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 3], [2, 4], [2, 5], [2, 6], [3, 3], [3, 4], [3, 5], [3, 6], [4, 3], [4, 4], [4, 5], [4, 6], [5, 3], [5, 4], [5, 5], [5, 6], [6, 3], [6, 4], [6, 5], [6, 6] ) @dg_cyclic_tr = DirectedAdjacencyGraph.new @dg_cyclic_tr.add_edges( [1, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 3] ) end
test_transitive_closure()
click to toggle source
# File test/transitivity_test.rb, line 63 def test_transitive_closure # A simple graph without cycles. assert_equal(@dg_tc, @dg.transitive_closure) # Iterative applications of transitive closure should return the same result # as a single application. assert_equal( @dg.transitive_closure, @dg.transitive_closure.transitive_closure ) # Compute for a graph containing vertices without edges. assert_equal(@dg_loner_tc, @dg_loner.transitive_closure) # Iterative applications of transitive closure should return the same result # as a single application. assert_equal( @dg_loner.transitive_closure, @dg_loner.transitive_closure.transitive_closure ) # Compute for a graph with cycles. assert_equal(@dg_cyclic_tc, @dg_cyclic.transitive_closure) # Iterative applications of transitive closure should return the same result # as a single application. assert_equal( @dg_cyclic.transitive_closure, @dg_cyclic.transitive_closure.transitive_closure ) end
test_transitive_closure_undirected()
click to toggle source
# File test/transitivity_test.rb, line 95 def test_transitive_closure_undirected assert_raises(NotDirectedError) { AdjacencyGraph.new.transitive_closure } end
test_transitive_reduction()
click to toggle source
# File test/transitivity_test.rb, line 99 def test_transitive_reduction # A simple graph without cycles. assert_equal(@dg_tr, @dg.transitive_reduction) # Compute for a graph containing vertices without edges. assert_equal(@dg_loner_tr, @dg_loner.transitive_reduction) # Compute for a graph with cycles. assert_equal(@dg_cyclic_tr, @dg_cyclic.transitive_reduction) # Test that the transitive closure of a transitive reduction is the same as # the transitive closure of the original graph. assert_equal( @dg.transitive_closure, @dg.transitive_reduction.transitive_closure ) assert_equal( @dg_loner.transitive_closure, @dg_loner.transitive_reduction.transitive_closure ) assert_equal( @dg_cyclic.transitive_closure, @dg_cyclic.transitive_reduction.transitive_closure ) end
test_transitive_reduction_undirected()
click to toggle source
# File test/transitivity_test.rb, line 125 def test_transitive_reduction_undirected assert_raises(NotDirectedError) { AdjacencyGraph.new.transitive_reduction } end