native_btree 0.2.1 → 0.3.0
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/CHANGELOG.md +10 -3
- data/CMakeLists.txt +1 -1
- data/Gemfile +6 -3
- data/README.md +11 -2
- data/ext/native_btree/CMakeLists.txt +3 -1
- data/ext/native_btree/constructor.c +0 -1
- data/ext/native_btree/conversion.c +25 -1
- data/ext/native_btree/include/common.h +6 -8
- data/ext/native_btree/include/iterators.h +5 -3
- data/ext/native_btree/include/native_btree.h +46 -5
- data/ext/native_btree/include/rbtree_type.h +1 -1
- data/ext/native_btree/instance.c +13 -1
- data/ext/native_btree/iterators.c +1 -1
- data/ext/native_btree/native_btree.c +37 -20
- data/ext/native_btree/rbtree_type.c +7 -7
- data/ext/native_btree/search.c +101 -0
- data/lib/native_btree/native_btree.bundle +0 -0
- data/lib/native_btree/version.rb +1 -1
- data/spec/debug.rb +11 -2
- data/spec/native_btree_conversion_spec.rb +70 -0
- data/spec/native_btree_instance_spec.rb +8 -101
- data/spec/native_btree_iterators_spec.rb +62 -0
- data/spec/native_btree_search_spec.rb +118 -0
- metadata +7 -8
- data/ext/native_btree/Makefile +0 -456
- data/ext/native_btree/include/btree.h +0 -63
- data/ext/native_btree/include/constructor.h +0 -11
- data/ext/native_btree/include/conversion.h +0 -8
- data/ext/native_btree/include/instance.h +0 -22
- data/lib/native_btree/native_btree.so +0 -0
@@ -156,18 +156,6 @@ RSpec.describe NativeBtree do
|
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
159
|
-
describe "#filter method" do
|
160
|
-
xit "respond to" do
|
161
|
-
expect(described_cless.respond_to?(:filter)).to be true
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
describe "#filter! method" do
|
166
|
-
xit "respond to" do
|
167
|
-
expect(described_cless.respond_to?(:filter!)).to be true
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
159
|
describe "#include? method" do
|
172
160
|
it "respond to" do
|
173
161
|
expect(tree).to respond_to(:include?)
|
@@ -184,99 +172,18 @@ RSpec.describe NativeBtree do
|
|
184
172
|
end
|
185
173
|
end
|
186
174
|
|
187
|
-
describe "
|
188
|
-
|
189
|
-
|
190
|
-
expect(tree).to respond_to(:to_a)
|
191
|
-
end
|
192
|
-
|
193
|
-
it 'return Array' do
|
194
|
-
expect(tree.to_a).to be_kind_of(Array)
|
195
|
-
end
|
196
|
-
|
197
|
-
it 'has similar items' do
|
198
|
-
tree[2] = 22
|
199
|
-
tree[1] = 11
|
200
|
-
expect(tree.to_a()[0][1]).to be 11
|
201
|
-
end
|
175
|
+
describe "#empty? method" do
|
176
|
+
it 'respond to' do
|
177
|
+
expect(tree).to respond_to(:empty?)
|
202
178
|
end
|
203
179
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
end
|
208
|
-
|
209
|
-
it "return Hash" do
|
210
|
-
expect(tree.to_h).to be_kind_of(Hash)
|
211
|
-
end
|
212
|
-
|
213
|
-
it 'has similar keys' do
|
214
|
-
tree[2] = 22
|
215
|
-
tree[1] = 11
|
216
|
-
expect(tree.to_h()[1]).to be 11
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
describe "#each method" do
|
222
|
-
it "respond to" do
|
223
|
-
expect(tree).to respond_to(:each)
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'yield in to block value first' do
|
227
|
-
tree[2] = 22
|
228
|
-
|
229
|
-
value = nil
|
230
|
-
tree.each { |v| value = v }
|
231
|
-
|
232
|
-
expect(value).to be 22
|
233
|
-
end
|
234
|
-
|
235
|
-
it 'yield in to block key second' do
|
236
|
-
tree[2] = 22
|
237
|
-
|
238
|
-
key = nil
|
239
|
-
tree.each { |_v, k| key = k }
|
240
|
-
|
241
|
-
expect(key).to be 2
|
242
|
-
end
|
243
|
-
|
244
|
-
it 'yield ordered keys' do
|
245
|
-
tree[16] = 16
|
246
|
-
tree[0] = 0
|
247
|
-
tree[5] = 5
|
248
|
-
tree[-4] = -4
|
249
|
-
tree[7] = 7
|
250
|
-
|
251
|
-
check = [-4, 0, 5, 7, 16]
|
252
|
-
result = []
|
253
|
-
tree.each { |value| result << value }
|
254
|
-
|
255
|
-
expect(result).to eq(check)
|
256
|
-
end
|
257
|
-
end
|
258
|
-
|
259
|
-
describe "#each_key method" do
|
260
|
-
xit "respond to" do
|
261
|
-
expect(described_cless.respond_to?(:each_key)).to be true
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
describe "#each_value method" do
|
266
|
-
xit "respond to" do
|
267
|
-
expect(described_cless.respond_to?(:each_value)).to be true
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
describe "#select method" do
|
272
|
-
xit "respond to" do
|
273
|
-
expect(described_cless.respond_to?(:select)).to be true
|
180
|
+
it 'return false if nodes exists' do
|
181
|
+
tree[3] = 33
|
182
|
+
expect(tree.empty?).to be false
|
274
183
|
end
|
275
|
-
end
|
276
184
|
|
277
|
-
|
278
|
-
|
279
|
-
expect(described_cless.respond_to?(:select!)).to be true
|
185
|
+
it 'return true if nodes not exists' do
|
186
|
+
expect(tree.empty?).to be true
|
280
187
|
end
|
281
188
|
end
|
282
189
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe NativeBtree do
|
4
|
+
|
5
|
+
describe NativeBtree::Btree do
|
6
|
+
let(:tree) do
|
7
|
+
described_class.new do |a, b|
|
8
|
+
a - b
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#each method" do
|
13
|
+
it "respond to" do
|
14
|
+
expect(tree).to respond_to(:each)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'yield in to block value first' do
|
18
|
+
tree[2] = 22
|
19
|
+
|
20
|
+
value = nil
|
21
|
+
tree.each { |v| value = v }
|
22
|
+
|
23
|
+
expect(value).to be 22
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'yield in to block key second' do
|
27
|
+
tree[2] = 22
|
28
|
+
|
29
|
+
key = nil
|
30
|
+
tree.each { |_v, k| key = k }
|
31
|
+
|
32
|
+
expect(key).to be 2
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'yield ordered keys' do
|
36
|
+
tree[16] = 16
|
37
|
+
tree[0] = 0
|
38
|
+
tree[5] = 5
|
39
|
+
tree[-4] = -4
|
40
|
+
tree[7] = 7
|
41
|
+
|
42
|
+
check = [-4, 0, 5, 7, 16]
|
43
|
+
result = []
|
44
|
+
tree.each { |value| result << value }
|
45
|
+
|
46
|
+
expect(result).to eq(check)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#each_key method" do
|
51
|
+
xit "respond to" do
|
52
|
+
expect(described_cless.respond_to?(:each_key)).to be true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#each_value method" do
|
57
|
+
xit "respond to" do
|
58
|
+
expect(described_cless.respond_to?(:each_value)).to be true
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe NativeBtree do
|
4
|
+
|
5
|
+
describe NativeBtree::Btree do
|
6
|
+
let(:tree) do
|
7
|
+
described_class.new do |a, b|
|
8
|
+
a - b
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#filter method" do
|
13
|
+
it "respond to" do
|
14
|
+
expect(tree).to respond_to(:filter)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'raise error if block not given' do
|
18
|
+
expect { tree.filter() }.to raise_error(LocalJumpError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'return Btree instance' do
|
22
|
+
expect(tree.filter() { nil }).to be_kind_of(described_class)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'filter tree by values' do
|
26
|
+
tree[1] = 11
|
27
|
+
tree[5] = 90
|
28
|
+
tree[2] = 32
|
29
|
+
tree[100] = 15
|
30
|
+
tree[46] = 8
|
31
|
+
|
32
|
+
expect(tree.filter { |v| v > 20 }.to_a).to match_array([[2, 32], [5, 90]])
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'filter tree by keys' do
|
36
|
+
tree[1] = 11
|
37
|
+
tree[5] = 90
|
38
|
+
tree[2] = 32
|
39
|
+
tree[100] = 15
|
40
|
+
tree[46] = 8
|
41
|
+
|
42
|
+
expect(tree.filter { |_v, k| k > 20 }.to_a).to match_array([[46, 8], [100, 15]])
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'return new object' do
|
46
|
+
tree[1] = 11
|
47
|
+
tree[5] = 90
|
48
|
+
tree[2] = 32
|
49
|
+
tree[100] = 15
|
50
|
+
tree[46] = 8
|
51
|
+
|
52
|
+
result = tree.filter { |_v, k| k > 20 }
|
53
|
+
|
54
|
+
expect(tree.equal?(result)).to be false
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#filter! method" do
|
60
|
+
it "respond to" do
|
61
|
+
expect(tree).to respond_to(:filter!)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'raise error if block not given' do
|
65
|
+
expect { tree.filter!() }.to raise_error(LocalJumpError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'return Btree instance' do
|
69
|
+
expect(tree.filter!() { nil }).to be_kind_of(described_class)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'return origin tree' do
|
73
|
+
tree[1] = 11
|
74
|
+
tree[5] = 90
|
75
|
+
tree[2] = 32
|
76
|
+
tree[100] = 15
|
77
|
+
tree[46] = 8
|
78
|
+
|
79
|
+
result = tree.filter! { |_v, k| k > 20 }
|
80
|
+
|
81
|
+
expect(tree.equal?(result)).to be true
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'filter tree by values' do
|
85
|
+
tree[1] = 11
|
86
|
+
tree[5] = 90
|
87
|
+
tree[2] = 32
|
88
|
+
tree[100] = 15
|
89
|
+
tree[46] = 8
|
90
|
+
|
91
|
+
expect(tree.filter! { |v| v > 20 }.to_a).to match_array([[2, 32], [5, 90]])
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'filter tree by keys' do
|
95
|
+
tree[1] = 11
|
96
|
+
tree[5] = 90
|
97
|
+
tree[2] = 32
|
98
|
+
tree[100] = 15
|
99
|
+
tree[46] = 8
|
100
|
+
|
101
|
+
expect(tree.filter! { |_v, k| k > 20 }.to_a).to match_array([[46, 8], [100, 15]])
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "#select method" do
|
107
|
+
it "respond to" do
|
108
|
+
expect(tree).to respond_to(:select)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "#select! method" do
|
113
|
+
it "respond to" do
|
114
|
+
expect(tree).to respond_to(:select!)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: native_btree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Feodorov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby bindings to GTree balanced binary tree from GLib library.
|
14
14
|
email:
|
@@ -25,17 +25,12 @@ files:
|
|
25
25
|
- README.md
|
26
26
|
- Rakefile
|
27
27
|
- ext/native_btree/CMakeLists.txt
|
28
|
-
- ext/native_btree/Makefile
|
29
28
|
- ext/native_btree/comparator.c
|
30
29
|
- ext/native_btree/constructor.c
|
31
30
|
- ext/native_btree/conversion.c
|
32
31
|
- ext/native_btree/extconf_cmake.rb
|
33
|
-
- ext/native_btree/include/btree.h
|
34
32
|
- ext/native_btree/include/common.h
|
35
33
|
- ext/native_btree/include/comparator.h
|
36
|
-
- ext/native_btree/include/constructor.h
|
37
|
-
- ext/native_btree/include/conversion.h
|
38
|
-
- ext/native_btree/include/instance.h
|
39
34
|
- ext/native_btree/include/iterators.h
|
40
35
|
- ext/native_btree/include/native_btree.h
|
41
36
|
- ext/native_btree/include/rbtree_type.h
|
@@ -43,14 +38,18 @@ files:
|
|
43
38
|
- ext/native_btree/iterators.c
|
44
39
|
- ext/native_btree/native_btree.c
|
45
40
|
- ext/native_btree/rbtree_type.c
|
41
|
+
- ext/native_btree/search.c
|
46
42
|
- lib/native_btree.rb
|
47
|
-
- lib/native_btree/native_btree.
|
43
|
+
- lib/native_btree/native_btree.bundle
|
48
44
|
- lib/native_btree/version.rb
|
49
45
|
- native_btree.gemspec
|
50
46
|
- spec/debug.rb
|
51
47
|
- spec/native_btree_class_spec.rb
|
48
|
+
- spec/native_btree_conversion_spec.rb
|
52
49
|
- spec/native_btree_instance_spec.rb
|
50
|
+
- spec/native_btree_iterators_spec.rb
|
53
51
|
- spec/native_btree_module_spec.rb
|
52
|
+
- spec/native_btree_search_spec.rb
|
54
53
|
- spec/spec_helper.rb
|
55
54
|
homepage: https://github.com/unixs/ruby-native-btree
|
56
55
|
licenses:
|