class TestCycles
Public Instance Methods
contains_cycle?(cycles, cycle)
click to toggle source
Helper for testing for different permutations of a cycle
# File test/cycles_test.rb, line 21 def contains_cycle?(cycles, cycle) cycle.size.times do |i| return true if cycles.include?(cycle) cycle = cycle[1..-1] + [cycle[0]] end end
setup()
click to toggle source
# File test/cycles_test.rb, line 9 def setup @dg = DirectedAdjacencyGraph.new(Array) edges = [[1, 2], [2, 2], [2, 3], [3, 4], [4, 5], [5, 1], [6, 4], [6, 6], [1, 4], [7, 7], [7, 7]] edges.each do |(src, target)| @dg.add_edge(src, target) end @ug = AdjacencyGraph.new(Array) @ug.add_edges(*edges) end
test_cycles()
click to toggle source
# File test/cycles_test.rb, line 28 def test_cycles d_cycles = @dg.cycles assert_equal 6, d_cycles.size assert d_cycles.include?([6]) assert d_cycles.include?([7]) assert d_cycles.include?([2]) assert contains_cycle?(d_cycles, [1, 4, 5]) assert contains_cycle?(d_cycles, [1, 2, 3, 4, 5]) assert_equal 5, DirectedAdjacencyGraph.new(Set, @dg).cycles.size u_cycles = AdjacencyGraph.new(Set, @dg).cycles.sort assert u_cycles.include?([2]) assert u_cycles.include?([6]) assert u_cycles.include?([7]) assert contains_cycle?(u_cycles, [1, 2, 3, 4, 5]) assert contains_cycle?(u_cycles, [1, 5, 4, 3, 2]) assert contains_cycle?(u_cycles, [1, 4, 3, 2]) assert contains_cycle?(u_cycles, [1, 4, 5]) assert contains_cycle?(u_cycles, [1, 5, 4]) assert contains_cycle?(u_cycles, [1, 5]) assert contains_cycle?(u_cycles, [1, 2]) assert contains_cycle?(u_cycles, [1, 2, 3, 4]) assert contains_cycle?(u_cycles, [2, 3]) assert contains_cycle?(u_cycles, [1, 4]) assert contains_cycle?(u_cycles, [3, 4]) assert contains_cycle?(u_cycles, [4, 5]) assert contains_cycle?(u_cycles, [4, 6]) assert_equal 16, u_cycles.size end