circular_list 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/circular_list.rb +10 -2
- data/lib/circular_list/version.rb +1 -1
- data/spec/circular_list/list_spec.rb +39 -1
- metadata +5 -5
data/lib/circular_list.rb
CHANGED
@@ -11,11 +11,19 @@ module CircularList
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def fetch_previous(index=0)
|
14
|
-
@arr.unshift(@arr.pop)[index]
|
14
|
+
index.nil? ? nil : @arr.unshift(@arr.pop)[index]
|
15
15
|
end
|
16
16
|
|
17
17
|
def fetch_next(index=0)
|
18
|
-
@arr.push(@arr.shift)[index]
|
18
|
+
index.nil? ? nil : @arr.push(@arr.shift)[index]
|
19
|
+
end
|
20
|
+
|
21
|
+
def fetch_after(e)
|
22
|
+
fetch_next(@arr.index(e))
|
23
|
+
end
|
24
|
+
|
25
|
+
def fetch_before(e)
|
26
|
+
fetch_previous(@arr.index(e))
|
19
27
|
end
|
20
28
|
end
|
21
29
|
end
|
@@ -67,7 +67,7 @@ module CircularList
|
|
67
67
|
c.fetch_next(12).should eq nil
|
68
68
|
|
69
69
|
c = List.new(['a','b','c','d'])
|
70
|
-
c.
|
70
|
+
c.fetch_next(12).should eq nil
|
71
71
|
end
|
72
72
|
|
73
73
|
it "fetch_previous should return nil" do
|
@@ -78,7 +78,45 @@ module CircularList
|
|
78
78
|
c.fetch_previous(12).should eq nil
|
79
79
|
end
|
80
80
|
end
|
81
|
+
|
82
|
+
context "when a valid element is specified" do
|
83
|
+
it "fetch_after should return next element after the given element" do
|
84
|
+
c = List.new(['a','b','c','d'])
|
85
|
+
c.fetch_after('c').should eq 'd'
|
86
|
+
|
87
|
+
c = List.new(['a','b','c','d'])
|
88
|
+
c.fetch_after('d').should eq 'a'
|
89
|
+
end
|
90
|
+
|
91
|
+
it "fetch_before should return previous element before the given element" do
|
92
|
+
c = List.new(['a','b','c','d'])
|
93
|
+
c.fetch_before('c').should eq 'b'
|
94
|
+
|
95
|
+
c = List.new(['a','b','c','d'])
|
96
|
+
c.fetch_before('a').should eq 'd'
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "when an ivalid element is specified" do
|
101
|
+
it "fetch_after should return nil" do
|
102
|
+
c = List.new(['a','b','c','d'])
|
103
|
+
c.fetch_after('z').should eq nil
|
104
|
+
|
105
|
+
c = List.new(['a','b','c','d'])
|
106
|
+
c.fetch_after('z').should eq nil
|
107
|
+
end
|
108
|
+
|
109
|
+
it "fetch_before should return nil" do
|
110
|
+
c = List.new(['a','b','c','d'])
|
111
|
+
c.fetch_before('z').should eq nil
|
112
|
+
|
113
|
+
c = List.new(['a','b','c','d'])
|
114
|
+
c.fetch_before('z').should eq nil
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
81
118
|
end
|
82
119
|
|
120
|
+
|
83
121
|
end
|
84
122
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circular_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- unnitallman
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-10-13 00:00:00 +05:30
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements: []
|
69
69
|
|
70
70
|
rubyforge_project: circular_list
|
71
|
-
rubygems_version: 1.
|
71
|
+
rubygems_version: 1.6.2
|
72
72
|
signing_key:
|
73
73
|
specification_version: 3
|
74
74
|
summary: A circular list data structure for Ruby
|