acts-as-dag 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/dag/dag.rb +23 -1
- data/test/dag_test.rb +28 -0
- data/test/database.test +0 -0
- metadata +5 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.3
|
data/lib/dag/dag.rb
CHANGED
@@ -515,7 +515,7 @@ module Dag
|
|
515
515
|
def longest_path_between(ancestor, descendant, path=[])
|
516
516
|
longest = []
|
517
517
|
ancestor.children.each do |child|
|
518
|
-
if child ==
|
518
|
+
if child == descendant
|
519
519
|
temp = path.clone
|
520
520
|
temp << child
|
521
521
|
if temp.length > longest.length
|
@@ -533,6 +533,28 @@ module Dag
|
|
533
533
|
return longest
|
534
534
|
end
|
535
535
|
|
536
|
+
#Finds the shortest path between ancestor and descendant returning as an array
|
537
|
+
def shortest_path_between(ancestor, descendant, path=[])
|
538
|
+
shortest = []
|
539
|
+
ancestor.children.each do |child|
|
540
|
+
if child == descendant
|
541
|
+
temp = path.clone
|
542
|
+
temp << child
|
543
|
+
if shortest.blank? || temp.length < shortest.length
|
544
|
+
shortest = temp
|
545
|
+
end
|
546
|
+
elsif self.connected?(child, descendant)
|
547
|
+
temp = path.clone
|
548
|
+
temp << child
|
549
|
+
temp = self.shortest_path_between(child, descendant, temp)
|
550
|
+
if shortest.blank? || temp.length < shortest.length
|
551
|
+
shortest = temp
|
552
|
+
end
|
553
|
+
end
|
554
|
+
end
|
555
|
+
return shortest
|
556
|
+
end
|
557
|
+
|
536
558
|
#Determines if an edge exists between two points
|
537
559
|
def edge?(ancestor, descendant)
|
538
560
|
return !self.find_edge(ancestor, descendant).nil?
|
data/test/dag_test.rb
CHANGED
@@ -811,4 +811,32 @@ class DagTest < Test::Unit::TestCase
|
|
811
811
|
b.reload
|
812
812
|
assert !b.root_for_beta_nodes?
|
813
813
|
end
|
814
|
+
#Tests that longest_path_between works
|
815
|
+
def test_longest_path_between
|
816
|
+
a = Node.create!
|
817
|
+
b = Node.create!
|
818
|
+
c = Node.create!
|
819
|
+
d = Node.create!
|
820
|
+
e = Default.create_edge(a,b)
|
821
|
+
e = Default.create_edge(b,c)
|
822
|
+
e = Default.create_edge(a,c)
|
823
|
+
e = Default.create_edge(c,d)
|
824
|
+
path = Default.longest_path_between(a,d)
|
825
|
+
assert_equal [b,c,d], path
|
826
|
+
end
|
827
|
+
|
828
|
+
#Tests that shortest_path_between works
|
829
|
+
def test_shortest_path_between
|
830
|
+
a = Node.create!
|
831
|
+
b = Node.create!
|
832
|
+
c = Node.create!
|
833
|
+
d = Node.create!
|
834
|
+
e = Default.create_edge(a,b)
|
835
|
+
e = Default.create_edge(b,c)
|
836
|
+
e = Default.create_edge(a,c)
|
837
|
+
e = Default.create_edge(c,d)
|
838
|
+
path = Default.shortest_path_between(a,d)
|
839
|
+
assert_equal [c,d], path
|
840
|
+
end
|
841
|
+
|
814
842
|
end
|
data/test/database.test
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts-as-dag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 23
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
8
|
+
- 3
|
9
|
+
version: 1.1.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Matthew Leventi
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date:
|
18
|
+
date: 2011-02-04 00:00:00 -08:00
|
20
19
|
default_executable:
|
21
20
|
dependencies: []
|
22
21
|
|
@@ -42,8 +41,8 @@ homepage: http://github.com/resgraph/acts-as-dag
|
|
42
41
|
licenses: []
|
43
42
|
|
44
43
|
post_install_message:
|
45
|
-
rdoc_options:
|
46
|
-
|
44
|
+
rdoc_options: []
|
45
|
+
|
47
46
|
require_paths:
|
48
47
|
- lib
|
49
48
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -51,7 +50,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
52
51
|
- - ">="
|
53
52
|
- !ruby/object:Gem::Version
|
54
|
-
hash: 3
|
55
53
|
segments:
|
56
54
|
- 0
|
57
55
|
version: "0"
|
@@ -60,7 +58,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
58
|
requirements:
|
61
59
|
- - ">="
|
62
60
|
- !ruby/object:Gem::Version
|
63
|
-
hash: 3
|
64
61
|
segments:
|
65
62
|
- 0
|
66
63
|
version: "0"
|