treetop 1.6.5 → 1.6.6
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.
- checksums.yaml +4 -4
- data/lib/treetop/compiler/metagrammar.rb +32 -3
- data/lib/treetop/compiler/metagrammar.treetop +32 -3
- data/lib/treetop/compiler/node_classes/anything_symbol.rb +7 -3
- data/lib/treetop/compiler/node_classes/atomic_expression.rb +2 -2
- data/lib/treetop/compiler/node_classes/character_class.rb +5 -1
- data/lib/treetop/compiler/node_classes/choice.rb +3 -3
- data/lib/treetop/compiler/node_classes/nonterminal.rb +4 -0
- data/lib/treetop/compiler/node_classes/parenthesized_expression.rb +1 -1
- data/lib/treetop/compiler/node_classes/parsing_expression.rb +7 -8
- data/lib/treetop/compiler/node_classes/parsing_rule.rb +1 -1
- data/lib/treetop/compiler/node_classes/predicate.rb +6 -6
- data/lib/treetop/compiler/node_classes/predicate_block.rb +1 -1
- data/lib/treetop/compiler/node_classes/repetition.rb +14 -14
- data/lib/treetop/compiler/node_classes/sequence.rb +1 -1
- data/lib/treetop/compiler/node_classes/terminal.rb +32 -28
- data/lib/treetop/runtime/compiled_parser.rb +12 -12
- data/lib/treetop/runtime/syntax_node.rb +15 -15
- data/lib/treetop/runtime/terminal_parse_failure.rb +2 -2
- data/lib/treetop/runtime/terminal_syntax_node.rb +4 -4
- data/lib/treetop/version.rb +1 -1
- data/spec/compiler/anything_symbol_spec.rb +2 -2
- data/spec/compiler/character_class_spec.rb +3 -3
- data/spec/compiler/grammar_spec.rb +2 -2
- data/spec/compiler/not_predicate_spec.rb +6 -6
- data/spec/compiler/occurrence_range_spec.rb +4 -4
- data/spec/compiler/parenthesized_expression_spec.rb +5 -5
- data/spec/compiler/semantic_predicate_spec.rb +7 -7
- data/spec/compiler/terminal_spec.rb +6 -6
- data/spec/compiler/terminal_symbol_spec.rb +2 -2
- data/spec/runtime/compiled_parser_spec.rb +7 -7
- data/spec/spec_helper.rb +6 -1
- data/treetop.gemspec +12 -21
- metadata +8 -17
- data/spec/runtime/interval_skip_list/delete_spec.rb +0 -147
- data/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -349
- data/spec/runtime/interval_skip_list/insert_and_delete_node_spec.rb +0 -385
- data/spec/runtime/interval_skip_list/insert_spec.rb +0 -660
- data/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -6175
- data/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -58
- data/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -35
- data/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -163
- data/spec/runtime/interval_skip_list/spec_helper.rb +0 -91
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: treetop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Sobo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: polyglot
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '5'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '5'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: i18n
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,28 +87,28 @@ dependencies:
|
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
90
|
+
version: '3'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '3'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: rake
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
104
|
+
version: '11'
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
111
|
+
version: '11'
|
112
112
|
description: A Parsing Expression Grammar (PEG) Parser generator DSL for Ruby
|
113
113
|
email: cliffordheath@gmail.com
|
114
114
|
executables:
|
@@ -222,15 +222,6 @@ files:
|
|
222
222
|
- spec/composition/subfolder/e_includes_c.treetop
|
223
223
|
- spec/ruby_extensions/string_spec.rb
|
224
224
|
- spec/runtime/compiled_parser_spec.rb
|
225
|
-
- spec/runtime/interval_skip_list/delete_spec.rb
|
226
|
-
- spec/runtime/interval_skip_list/expire_range_spec.rb
|
227
|
-
- spec/runtime/interval_skip_list/insert_and_delete_node_spec.rb
|
228
|
-
- spec/runtime/interval_skip_list/insert_spec.rb
|
229
|
-
- spec/runtime/interval_skip_list/interval_skip_list_spec.graffle
|
230
|
-
- spec/runtime/interval_skip_list/interval_skip_list_spec.rb
|
231
|
-
- spec/runtime/interval_skip_list/palindromic_fixture.rb
|
232
|
-
- spec/runtime/interval_skip_list/palindromic_fixture_spec.rb
|
233
|
-
- spec/runtime/interval_skip_list/spec_helper.rb
|
234
225
|
- spec/runtime/syntax_node_spec.rb
|
235
226
|
- spec/spec_helper.rb
|
236
227
|
- treetop.gemspec
|
@@ -1,147 +0,0 @@
|
|
1
|
-
require 'runtime/interval_skip_list/spec_helper'
|
2
|
-
|
3
|
-
class IntervalSkipList
|
4
|
-
public :insert_node, :delete_node, :head, :nodes
|
5
|
-
end
|
6
|
-
|
7
|
-
describe IntervalSkipList, :palindromic => true do
|
8
|
-
include PalindromicFixtureSharedContext
|
9
|
-
|
10
|
-
describe " when :c is deleted" do
|
11
|
-
before do
|
12
|
-
list.delete(:c)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "[0]" do
|
16
|
-
before do
|
17
|
-
@node = list.nodes[0]
|
18
|
-
end
|
19
|
-
|
20
|
-
it "has a key of 1 and a height of 3" do
|
21
|
-
node.key.should == 1
|
22
|
-
node.height.should == 3
|
23
|
-
end
|
24
|
-
|
25
|
-
it "has :f as its only forward marker at level 2" do
|
26
|
-
node.forward_markers[2].should have_markers(:f)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "has :a, :b, :d, and :e as its only forward markers at level 1" do
|
30
|
-
node.forward_markers[1].should have_markers(:a, :b, :d, :e)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "has no forward markers at level 0" do
|
34
|
-
node.forward_markers[0].should be_empty
|
35
|
-
end
|
36
|
-
|
37
|
-
it "has no markers" do
|
38
|
-
node.markers.should be_empty
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "[1]" do
|
43
|
-
before do
|
44
|
-
@node = list.nodes[1]
|
45
|
-
end
|
46
|
-
|
47
|
-
it "has a key of 3 and a height of 2" do
|
48
|
-
node.key.should == 3
|
49
|
-
node.height.should == 2
|
50
|
-
end
|
51
|
-
|
52
|
-
it "has :e as its only forward marker at level 1" do
|
53
|
-
node.forward_markers[1].should have_markers(:e)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "has :b and :d as its only forward markers at level 0" do
|
57
|
-
node.forward_markers[0].should have_markers(:b, :d)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "has :a, :b, :d, and :e as its only markers" do
|
61
|
-
node.markers.should have_markers(:a, :b, :d, :e)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "[2]" do
|
66
|
-
before do
|
67
|
-
@node = list.nodes[2]
|
68
|
-
end
|
69
|
-
|
70
|
-
it "has a key of 5 and a height of 1" do
|
71
|
-
node.key.should == 5
|
72
|
-
node.height.should == 1
|
73
|
-
end
|
74
|
-
|
75
|
-
it "has :d and :g as its only forward markers at level 0" do
|
76
|
-
node.forward_markers[0].should have_markers(:d, :g)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "has :b and :d as its only markers" do
|
80
|
-
node.markers.should have_markers(:b, :d)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe "[3]" do
|
85
|
-
before do
|
86
|
-
@node = list.nodes[3]
|
87
|
-
end
|
88
|
-
|
89
|
-
it "has a key of 9 and a height of 1" do
|
90
|
-
node.key.should == 9
|
91
|
-
node.height.should == 1
|
92
|
-
end
|
93
|
-
|
94
|
-
it "has :g as its only forward marker at level 0" do
|
95
|
-
node.forward_markers[0].should have_markers(:g)
|
96
|
-
end
|
97
|
-
|
98
|
-
it "has :d and :g as its only markers" do
|
99
|
-
node.markers.should have_markers(:d, :g)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
describe "[4]" do
|
104
|
-
before do
|
105
|
-
@node = list.nodes[4]
|
106
|
-
end
|
107
|
-
|
108
|
-
it "has a key of 11 and a height of 2" do
|
109
|
-
node.key.should == 11
|
110
|
-
node.height.should == 2
|
111
|
-
end
|
112
|
-
|
113
|
-
it "has :g as its only forward marker at level 1" do
|
114
|
-
node.forward_markers[1].should have_markers(:g)
|
115
|
-
end
|
116
|
-
|
117
|
-
it "has no forward markers at level 0" do
|
118
|
-
node.forward_markers[0].should be_empty
|
119
|
-
end
|
120
|
-
|
121
|
-
it "has :e and :g as its only markers" do
|
122
|
-
node.markers.should have_markers(:e, :g)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "[5]" do
|
127
|
-
before do
|
128
|
-
@node = list.nodes[5]
|
129
|
-
end
|
130
|
-
|
131
|
-
it "has a key of 13 and a height of 3" do
|
132
|
-
node.key.should == 13
|
133
|
-
node.height.should == 3
|
134
|
-
end
|
135
|
-
|
136
|
-
it "has no forward markers at any level" do
|
137
|
-
node.forward_markers[0].should be_empty
|
138
|
-
node.forward_markers[1].should be_empty
|
139
|
-
node.forward_markers[2].should be_empty
|
140
|
-
end
|
141
|
-
|
142
|
-
it "has :f and :g as its only markers" do
|
143
|
-
node.markers.should have_markers(:f, :g)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
@@ -1,349 +0,0 @@
|
|
1
|
-
require 'runtime/interval_skip_list/spec_helper'
|
2
|
-
|
3
|
-
describe IntervalSkipList, :palindromic => true do
|
4
|
-
include PalindromicFixtureSharedContext
|
5
|
-
|
6
|
-
describe "#overlapping" do
|
7
|
-
it "returns intervals :d, :e, :f, and :g for 7..9" do
|
8
|
-
list.overlapping(7..9)[0].should have_markers(:d, :e, :f, :g)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "returns intervals :b, :c, :d, :e, :f, and :g for 3..7" do
|
12
|
-
list.overlapping(3..7)[0].should have_markers(:b, :c, :d, :e, :f, :g )
|
13
|
-
end
|
14
|
-
|
15
|
-
it "returns intervals :b, :c, :d, :e, :f, and :g for 3..6" do
|
16
|
-
list.overlapping(3..6)[0].should have_markers(:b, :c, :d, :e, :f, :g )
|
17
|
-
end
|
18
|
-
|
19
|
-
describe ", when :x is inserted on 3..7" do
|
20
|
-
before do
|
21
|
-
list.insert(3..7, :x)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "returns intervals :b, :c, :d, :e, :f, :x for 3..5" do
|
25
|
-
list.overlapping(3..5)[0].should have_markers(:b, :c, :d, :e, :f, :x)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
describe "when 7..7 is expired with a length change of 0" do
|
32
|
-
before do
|
33
|
-
list.expire(7..7, 0)
|
34
|
-
end
|
35
|
-
|
36
|
-
describe " #nodes" do
|
37
|
-
attr_reader :nodes, :node
|
38
|
-
|
39
|
-
before do
|
40
|
-
@nodes = list.nodes
|
41
|
-
end
|
42
|
-
|
43
|
-
it "has a size of 4" do
|
44
|
-
nodes.size.should == 4
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "[0]" do
|
48
|
-
before do
|
49
|
-
@node = nodes[0]
|
50
|
-
end
|
51
|
-
|
52
|
-
it "has a key of 1 and a height of 3" do
|
53
|
-
node.key.should == 1
|
54
|
-
node.height.should == 3
|
55
|
-
end
|
56
|
-
|
57
|
-
it "has no forward markers at level 0" do
|
58
|
-
node.forward_markers[0].should be_empty
|
59
|
-
end
|
60
|
-
|
61
|
-
it "has :a and :b as its only forward markers on level 1" do
|
62
|
-
node.forward_markers[1].should have_markers(:a, :b)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "has :c as its only forward marker on level 2" do
|
66
|
-
node.forward_markers[2].should have_markers(:c)
|
67
|
-
end
|
68
|
-
|
69
|
-
it "has no markers" do
|
70
|
-
node.markers.should be_empty
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe "[1]" do
|
75
|
-
before do
|
76
|
-
@node = nodes[1]
|
77
|
-
end
|
78
|
-
|
79
|
-
it "has a key of 3 and a height of 2" do
|
80
|
-
node.key.should == 3
|
81
|
-
node.height.should == 2
|
82
|
-
end
|
83
|
-
|
84
|
-
it "has :b as its only forward marker on level 0" do
|
85
|
-
node.forward_markers[0].should have_markers(:b)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "has no forward markers on level 1" do
|
89
|
-
node.forward_markers[1].should be_empty
|
90
|
-
end
|
91
|
-
|
92
|
-
it "has :a and :b as its only markers" do
|
93
|
-
node.markers.should have_markers(:a, :b)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "[2]" do
|
98
|
-
before do
|
99
|
-
@node = nodes[2]
|
100
|
-
end
|
101
|
-
|
102
|
-
it "has a key of 5 and a height of 1" do
|
103
|
-
node.key.should == 5
|
104
|
-
node.height.should == 1
|
105
|
-
end
|
106
|
-
|
107
|
-
it "has no forward markers on level 0" do
|
108
|
-
node.forward_markers[0].should be_empty
|
109
|
-
end
|
110
|
-
|
111
|
-
it "has :b as its only marker" do
|
112
|
-
node.markers.should have_markers(:b)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
describe "[3]" do
|
117
|
-
before do
|
118
|
-
@node = nodes[3]
|
119
|
-
end
|
120
|
-
|
121
|
-
it "has a key of 7 and a height of 3" do
|
122
|
-
node.key.should == 7
|
123
|
-
node.height.should == 3
|
124
|
-
end
|
125
|
-
|
126
|
-
it "has no forward markers at any level" do
|
127
|
-
node.forward_markers[0].should be_empty
|
128
|
-
node.forward_markers[1].should be_empty
|
129
|
-
node.forward_markers[2].should be_empty
|
130
|
-
end
|
131
|
-
|
132
|
-
it "has :c as its only marker" do
|
133
|
-
node.markers.should have_markers(:c)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
describe "when 4..4 is expired with a length change of 2" do
|
140
|
-
before do
|
141
|
-
list.expire(4..4, 2)
|
142
|
-
end
|
143
|
-
|
144
|
-
describe " #nodes" do
|
145
|
-
attr_reader :nodes, :node
|
146
|
-
|
147
|
-
before do
|
148
|
-
@nodes = list.nodes
|
149
|
-
end
|
150
|
-
|
151
|
-
it "has a size of 4" do
|
152
|
-
nodes.size.should == 4
|
153
|
-
end
|
154
|
-
|
155
|
-
describe "[0]" do
|
156
|
-
before do
|
157
|
-
@node = nodes[0]
|
158
|
-
end
|
159
|
-
|
160
|
-
it "has a key of 1 and a height of 3" do
|
161
|
-
node.key.should == 1
|
162
|
-
node.height.should == 3
|
163
|
-
end
|
164
|
-
|
165
|
-
it "has no forward markers at level 0 and 2" do
|
166
|
-
node.forward_markers[0].should be_empty
|
167
|
-
node.forward_markers[2].should be_empty
|
168
|
-
end
|
169
|
-
|
170
|
-
it "has :a as its only forward marker on level 1" do
|
171
|
-
node.forward_markers[1].should have_markers(:a)
|
172
|
-
end
|
173
|
-
|
174
|
-
it "has no markers" do
|
175
|
-
node.markers.should be_empty
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
describe "[1]" do
|
180
|
-
before do
|
181
|
-
@node = nodes[1]
|
182
|
-
end
|
183
|
-
|
184
|
-
it "has a key of 3 and a height of 2" do
|
185
|
-
node.key.should == 3
|
186
|
-
node.height.should == 2
|
187
|
-
end
|
188
|
-
|
189
|
-
it "has no forward markers at any level" do
|
190
|
-
node.forward_markers[0].should be_empty
|
191
|
-
node.forward_markers[1].should be_empty
|
192
|
-
end
|
193
|
-
|
194
|
-
it "has :a as its only marker" do
|
195
|
-
node.markers.should have_markers(:a)
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
describe "[2]" do
|
200
|
-
before do
|
201
|
-
@node = nodes[2]
|
202
|
-
end
|
203
|
-
|
204
|
-
it "has a key of 7 and a height of 1" do
|
205
|
-
node.key.should == 7
|
206
|
-
node.height.should == 1
|
207
|
-
end
|
208
|
-
|
209
|
-
it "has :g as its only forward marker at level 0" do
|
210
|
-
node.forward_markers[0].should have_markers(:g)
|
211
|
-
end
|
212
|
-
|
213
|
-
it "has no markers" do
|
214
|
-
node.markers.should be_empty
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
|
-
describe "[3]" do
|
219
|
-
before do
|
220
|
-
@node = nodes[3]
|
221
|
-
end
|
222
|
-
|
223
|
-
it "has a key of 15 and a height of 3" do
|
224
|
-
node.key.should == 15
|
225
|
-
node.height.should == 3
|
226
|
-
end
|
227
|
-
|
228
|
-
it "has no forward markers at any level" do
|
229
|
-
node.forward_markers[0].should be_empty
|
230
|
-
node.forward_markers[1].should be_empty
|
231
|
-
node.forward_markers[2].should be_empty
|
232
|
-
end
|
233
|
-
|
234
|
-
it "has :g as its only marker" do
|
235
|
-
node.markers.should have_markers(:g)
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe "when :x is inserted on 1..5, :y on 7..11, and :z on 9..13" do
|
242
|
-
before do
|
243
|
-
list.insert(1..5, :x)
|
244
|
-
list.insert(7..11, :y)
|
245
|
-
list.insert(9..13, :z)
|
246
|
-
end
|
247
|
-
|
248
|
-
describe "when 4..8 is expired with a length change of -3" do
|
249
|
-
before do
|
250
|
-
list.expire(4..8, -3)
|
251
|
-
end
|
252
|
-
|
253
|
-
describe "#nodes" do
|
254
|
-
attr_reader :nodes, :node
|
255
|
-
before do
|
256
|
-
@nodes = list.nodes
|
257
|
-
end
|
258
|
-
|
259
|
-
it "has a size of 4" do
|
260
|
-
nodes.size.should == 4
|
261
|
-
end
|
262
|
-
|
263
|
-
describe "[0]" do
|
264
|
-
before do
|
265
|
-
@node = nodes[0]
|
266
|
-
end
|
267
|
-
|
268
|
-
it "has a key of 1 and height of 3" do
|
269
|
-
node.key.should == 1
|
270
|
-
node.height.should == 3
|
271
|
-
end
|
272
|
-
|
273
|
-
it "has :a as its only forward marker on level 1" do
|
274
|
-
node.forward_markers[1].should have_markers(:a)
|
275
|
-
end
|
276
|
-
|
277
|
-
it "has no forward markers at level 0 and 2" do
|
278
|
-
node.forward_markers[0].should be_empty
|
279
|
-
node.forward_markers[2].should be_empty
|
280
|
-
end
|
281
|
-
|
282
|
-
it "has no markers" do
|
283
|
-
node.markers.should be_empty
|
284
|
-
end
|
285
|
-
end
|
286
|
-
|
287
|
-
describe "[1]" do
|
288
|
-
before do
|
289
|
-
@node = nodes[1]
|
290
|
-
end
|
291
|
-
|
292
|
-
it "has a key of 3 and height of 2" do
|
293
|
-
node.key.should == 3
|
294
|
-
node.height.should == 2
|
295
|
-
end
|
296
|
-
|
297
|
-
it "has no forward markers" do
|
298
|
-
node.forward_markers[0].should be_empty
|
299
|
-
node.forward_markers[1].should be_empty
|
300
|
-
end
|
301
|
-
|
302
|
-
it "has :a as its only marker" do
|
303
|
-
node.markers.should have_markers(:a)
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
|
-
describe "[2]" do
|
308
|
-
before do
|
309
|
-
@node = nodes[2]
|
310
|
-
end
|
311
|
-
|
312
|
-
it "has a key of 6 and a height of 1" do
|
313
|
-
node.key.should == 6
|
314
|
-
node.height.should == 1
|
315
|
-
end
|
316
|
-
|
317
|
-
it "has :z as its only forward marker at level 0" do
|
318
|
-
node.forward_markers[0].should have_markers(:z)
|
319
|
-
end
|
320
|
-
|
321
|
-
it "has no markers" do
|
322
|
-
node.markers.should be_empty
|
323
|
-
end
|
324
|
-
end
|
325
|
-
|
326
|
-
describe "[3]" do
|
327
|
-
before do
|
328
|
-
@node = nodes[3]
|
329
|
-
end
|
330
|
-
|
331
|
-
it "has a key of 10 and height of 3" do
|
332
|
-
node.key.should == 10
|
333
|
-
node.height.should == 3
|
334
|
-
end
|
335
|
-
|
336
|
-
it "has no forward markers at any level" do
|
337
|
-
node.forward_markers[0].should be_empty
|
338
|
-
node.forward_markers[1].should be_empty
|
339
|
-
node.forward_markers[2].should be_empty
|
340
|
-
end
|
341
|
-
|
342
|
-
it "has :z as its only marker" do
|
343
|
-
node.markers.should have_markers(:z)
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
347
|
-
end
|
348
|
-
end
|
349
|
-
end
|