test/base/test_directed_graph.rb in nanoc-4.7.13 vs test/base/test_directed_graph.rb in nanoc-4.7.14
- old
+ new
@@ -1,112 +1,10 @@
# frozen_string_literal: true
require 'helper'
class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
- def test_direct_predecessors
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
-
- assert_equal [], graph.direct_predecessors_of(1)
- assert_equal [1], graph.direct_predecessors_of(2)
- assert_equal [2], graph.direct_predecessors_of(3)
- end
-
- def test_predecessors
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
-
- assert_equal [], graph.predecessors_of(1).sort
- assert_equal [1], graph.predecessors_of(2).sort
- assert_equal [1, 2], graph.predecessors_of(3).sort
- end
-
- def test_direct_successors
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
-
- assert_equal [2], graph.direct_successors_of(1)
- assert_equal [3], graph.direct_successors_of(2)
- assert_equal [], graph.direct_successors_of(3)
- end
-
- def test_successors
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
-
- assert_equal [2, 3], graph.successors_of(1).sort
- assert_equal [3], graph.successors_of(2).sort
- assert_equal [], graph.successors_of(3).sort
- end
-
- def test_edges
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
-
- assert_equal [[0, 1, nil], [1, 2, nil]], graph.edges.sort
- end
-
- def test_edges_with_new_vertices
- graph = Nanoc::Int::DirectedGraph.new([1])
- assert_equal [1], graph.vertices
- graph.add_edge(1, 2)
- assert_equal [1, 2], graph.vertices
- graph.add_edge(3, 2)
- assert_equal [1, 2, 3], graph.vertices
-
- assert_equal [[0, 1, nil], [2, 1, nil]], graph.edges.sort
- end
-
- def test_edge_with_props
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2, props: { donkey: 14 })
- graph.add_edge(2, 3, props: { giraffe: 3 })
-
- assert_equal [[0, 1, { donkey: 14 }], [1, 2, { giraffe: 3 }]], graph.edges.sort
- end
-
- def test_props_for
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3, 4])
- graph.add_edge(1, 2, props: { donkey: 14 })
- graph.add_edge(2, 3, props: { giraffe: 3 })
- graph.add_edge(3, 4)
-
- assert_equal({ donkey: 14 }, graph.props_for(1, 2))
- assert_equal({ giraffe: 3 }, graph.props_for(2, 3))
- assert_equal(nil, graph.props_for(3, 4))
- end
-
- def test_props_for_with_deleted_edge
- graph = Nanoc::Int::DirectedGraph.new([1, 2])
- graph.add_edge(1, 2, props: { donkey: 14 })
- graph.delete_edge(1, 2)
-
- assert_equal(nil, graph.props_for(1, 2))
- end
-
- def test_props_for_with_deleted_edges_from
- graph = Nanoc::Int::DirectedGraph.new([1, 2])
- graph.add_edge(1, 2, props: { donkey: 14 })
- graph.delete_edges_from(1)
-
- assert_equal(nil, graph.props_for(1, 2))
- end
-
- def test_props_for_with_deleted_edges_to
- graph = Nanoc::Int::DirectedGraph.new([1, 2])
- graph.add_edge(1, 2, props: { donkey: 14 })
- graph.delete_edges_to(2)
-
- assert_equal(nil, graph.props_for(1, 2))
- end
-
def test_add_edge
graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
assert_equal [], graph.successors_of(1)
assert_equal [], graph.predecessors_of(2)
@@ -124,62 +22,10 @@
assert graph.vertices.include?(2)
assert graph.vertices.include?(3)
end
- def test_delete_edge
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
-
- assert_equal [2], graph.successors_of(1)
- assert_equal [1], graph.predecessors_of(2)
-
- graph.delete_edge(1, 2)
-
- assert_equal [], graph.successors_of(1)
- assert_equal [], graph.predecessors_of(2)
- end
-
- def test_delete_edges_from
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
-
- graph.add_edge(1, 2)
- graph.add_edge(2, 1)
- graph.add_edge(2, 3)
- graph.add_edge(3, 2)
- graph.add_edge(1, 3)
- graph.add_edge(3, 1)
-
- assert_equal [2, 3], graph.direct_predecessors_of(1).sort
- assert_equal [2, 3], graph.direct_successors_of(1).sort
- assert_equal [1, 3], graph.direct_predecessors_of(2).sort
- assert_equal [1, 3], graph.direct_successors_of(2).sort
- assert_equal [1, 2], graph.direct_predecessors_of(3).sort
- assert_equal [1, 2], graph.direct_successors_of(3).sort
- assert_equal Set.new([]), graph.roots
-
- graph.delete_edges_from(1)
-
- assert_equal [2, 3], graph.direct_predecessors_of(1).sort
- assert_equal [], graph.direct_successors_of(1).sort
- assert_equal [3], graph.direct_predecessors_of(2).sort
- assert_equal [1, 3], graph.direct_successors_of(2).sort
- assert_equal [2], graph.direct_predecessors_of(3).sort
- assert_equal [1, 2], graph.direct_successors_of(3).sort
- assert_equal Set.new([]), graph.roots
-
- graph.delete_edges_from(2)
-
- assert_equal [3], graph.direct_predecessors_of(1).sort
- assert_equal [], graph.direct_successors_of(1).sort
- assert_equal [3], graph.direct_predecessors_of(2).sort
- assert_equal [], graph.direct_successors_of(2).sort
- assert_equal [], graph.direct_predecessors_of(3).sort
- assert_equal [1, 2], graph.direct_successors_of(3).sort
- assert_equal Set.new([3]), graph.roots
- end
-
def test_delete_edges_to
graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
graph.add_edge(1, 2)
graph.add_edge(2, 1)
@@ -192,138 +38,36 @@
assert_equal [2, 3], graph.direct_successors_of(1).sort
assert_equal [1, 3], graph.direct_predecessors_of(2).sort
assert_equal [1, 3], graph.direct_successors_of(2).sort
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
assert_equal [1, 2], graph.direct_successors_of(3).sort
- assert_equal Set.new([]), graph.roots
graph.delete_edges_to(1)
assert_equal [], graph.direct_predecessors_of(1).sort
assert_equal [2, 3], graph.direct_successors_of(1).sort
assert_equal [1, 3], graph.direct_predecessors_of(2).sort
assert_equal [3], graph.direct_successors_of(2).sort
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
assert_equal [2], graph.direct_successors_of(3).sort
- assert_equal Set.new([1]), graph.roots
graph.delete_edges_to(2)
assert_equal [], graph.direct_predecessors_of(1).sort
assert_equal [3], graph.direct_successors_of(1).sort
assert_equal [], graph.direct_predecessors_of(2).sort
assert_equal [3], graph.direct_successors_of(2).sort
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
assert_equal [], graph.direct_successors_of(3).sort
- assert_equal Set.new([1, 2]), graph.roots
end
- def test_delete_vertex
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
-
- graph.add_edge(1, 2)
- graph.add_edge(2, 1)
- graph.add_edge(2, 3)
- graph.add_edge(3, 2)
- graph.add_edge(1, 3)
- graph.add_edge(3, 1)
-
- graph.delete_vertex(2)
-
- assert_equal [3], graph.direct_predecessors_of(1).sort
- assert_equal [3], graph.direct_successors_of(1).sort
- assert_equal [1], graph.direct_predecessors_of(3).sort
- assert_equal [1], graph.direct_successors_of(3).sort
- assert_equal Set.new([]), graph.roots
- end
-
- def test_delete_vertex_resulting_roots
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- assert_equal Set.new([1, 2, 3]), graph.roots
-
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
- assert_equal Set.new([1]), graph.roots
-
- graph.delete_vertex(2)
- assert_equal Set.new([1, 3]), graph.roots
- end
-
def test_should_return_empty_array_for_nonexistant_vertices
graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
assert_equal [], graph.direct_predecessors_of(4)
assert_equal [], graph.predecessors_of(4)
assert_equal [], graph.direct_successors_of(4)
assert_equal [], graph.successors_of(4)
- end
-
- def test_roots_after_init
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
-
- assert_equal Set.new([1, 2, 3]), graph.roots
- end
-
- def test_roots_after_adding_edge
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- assert_equal Set.new([1, 3]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 3)
- assert_equal Set.new([1, 2]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(2, 1)
- assert_equal Set.new([2, 3]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
- assert_equal Set.new([1]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
- graph.add_edge(3, 1)
- assert_equal Set.new([]), graph.roots
- end
-
- def test_roots_after_removing_edge
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.delete_edge(1, 2)
- assert_equal Set.new([1, 2, 3]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 3)
- assert_equal Set.new([1, 2]), graph.roots
- graph.delete_edge(1, 2) # no such edge
- assert_equal Set.new([1, 2]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(2, 1)
- graph.delete_edge(2, 1)
- assert_equal Set.new([1, 2, 3]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
- graph.delete_edge(1, 2)
- assert_equal Set.new([1, 2]), graph.roots
- graph.delete_edge(2, 3)
- assert_equal Set.new([1, 2, 3]), graph.roots
-
- graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
- graph.add_edge(1, 2)
- graph.add_edge(2, 3)
- graph.add_edge(3, 1)
- graph.delete_edge(1, 2)
- assert_equal Set.new([2]), graph.roots
- graph.delete_edge(2, 3)
- assert_equal Set.new([2, 3]), graph.roots
- graph.delete_edge(3, 1)
- assert_equal Set.new([1, 2, 3]), graph.roots
end
def test_example
YARD.parse(LIB_DIR + '/nanoc/base/entities/directed_graph.rb')
assert_examples_correct 'Nanoc::Int::DirectedGraph'