rubytree 0.9.5pre5 → 0.9.5pre6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +8 -5
- data/History.rdoc +2 -2
- data/lib/tree/utils/hash_converter.rb +2 -2
- data/lib/tree/version.rb +1 -1
- data/test/test_binarytree.rb +18 -20
- data/test/test_tree.rb +39 -39
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: beae3fd153b5ddbad1ab19265ca8bf64a7776ada
|
4
|
+
data.tar.gz: 145cc70d51f4355f623d2abe35eb31eefe745fb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dca4bb879aeff95228214b79177426da728bec7eff50273035397d67acd22329d8ba157ff4d5507584c1cac8a2ae1c4980d86051f50a42f386dae6a130700ed6
|
7
|
+
data.tar.gz: 81e2f5def082d451130d464d40930e48e4e4633c287216a98c870a216527de4d47876f9e3862409e90f15008fd7441b052858aadeb0de5be2effe5bb2c4bddd6
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubytree (0.9.
|
4
|
+
rubytree (0.9.5pre6)
|
5
5
|
json (~> 1.8)
|
6
6
|
structured_warnings (~> 0.1)
|
7
7
|
|
@@ -18,9 +18,9 @@ GEM
|
|
18
18
|
json (1.8.1)
|
19
19
|
mime-types (2.4.3)
|
20
20
|
multi_json (1.10.1)
|
21
|
+
power_assert (0.2.2)
|
21
22
|
rake (10.4.2)
|
22
23
|
rdoc (4.2.0)
|
23
|
-
json (~> 1.4)
|
24
24
|
rest-client (1.6.7)
|
25
25
|
mime-types (>= 1.16)
|
26
26
|
rtags (0.97)
|
@@ -34,6 +34,8 @@ GEM
|
|
34
34
|
structured_warnings (0.1.4)
|
35
35
|
term-ansicolor (1.2.2)
|
36
36
|
tins (~> 0.8)
|
37
|
+
test-unit (3.0.9)
|
38
|
+
power_assert
|
37
39
|
thor (0.18.1)
|
38
40
|
tins (0.13.2)
|
39
41
|
yard (0.8.7.6)
|
@@ -42,10 +44,11 @@ PLATFORMS
|
|
42
44
|
ruby
|
43
45
|
|
44
46
|
DEPENDENCIES
|
45
|
-
bundler (~> 1.
|
47
|
+
bundler (~> 1.7)
|
46
48
|
coveralls (>= 0.7)
|
47
|
-
rake (~> 10.
|
48
|
-
rdoc (~> 4.
|
49
|
+
rake (~> 10.4)
|
50
|
+
rdoc (~> 4.2)
|
49
51
|
rtagstask (~> 0.0)
|
50
52
|
rubytree!
|
53
|
+
test-unit (~> 3.0)
|
51
54
|
yard (~> 0.8)
|
data/History.rdoc
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
=== 0.9.5pre5 / 2015-01-01
|
6
6
|
|
7
|
-
* Fixed {issue 32}
|
7
|
+
* Fixed {issue 32}[https://github.com/evolve75/RubyTree/issues/32] and enabled
|
8
8
|
'move' semantics on the {Tree::TreeNode#add} method, so that a child being
|
9
9
|
added, that has an existing parent, will be removed from its old parent, prior
|
10
10
|
to being added to the new location.
|
@@ -12,7 +12,7 @@
|
|
12
12
|
=== 0.9.5pre4 / 2014-12-17
|
13
13
|
|
14
14
|
* Added performance improvements to {Tree::TreeNode#is_root?} and
|
15
|
-
{Tree::
|
15
|
+
{Tree::Utils::TreeMetricsHandler#node_depth}. Thanks to {https://github.com/aidansteele Aidan Steel}.
|
16
16
|
|
17
17
|
=== 0.9.5pre3 / 2014-12-16
|
18
18
|
|
@@ -5,9 +5,9 @@
|
|
5
5
|
#
|
6
6
|
# Author:: Jen Hamon (http://www.github.com/jhamon)
|
7
7
|
#
|
8
|
-
# Time-stamp: <
|
8
|
+
# Time-stamp: <2015-01-02 15:11:03 anupam>
|
9
9
|
#
|
10
|
-
# Copyright (C) 2014 Jen Hamon (http://www.github.com/jhamon) and
|
10
|
+
# Copyright (C) 2014, 2015 Jen Hamon (http://www.github.com/jhamon) and
|
11
11
|
# Anupam Sengupta <anupamsg@gmail.com>
|
12
12
|
#
|
13
13
|
# All rights reserved.
|
data/lib/tree/version.rb
CHANGED
data/test/test_binarytree.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# test_binarytree.rb - This file is part of the RubyTree package.
|
4
4
|
#
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012, 2013 Anupam Sengupta
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2015 Anupam Sengupta
|
7
7
|
#
|
8
8
|
# All rights reserved.
|
9
9
|
#
|
@@ -64,7 +64,7 @@ module TestTree
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def test_from_hash
|
67
|
-
# Can make a root
|
67
|
+
# Can't make a root node without a name
|
68
68
|
assert_raise (ArgumentError) { Tree::BinaryTreeNode.from_hash({})}
|
69
69
|
# Can't have multiple roots
|
70
70
|
assert_raise (ArgumentError) { Tree::BinaryTreeNode.from_hash({:A => {}, :B => {}}) }
|
@@ -82,20 +82,18 @@ module TestTree
|
|
82
82
|
# D
|
83
83
|
|
84
84
|
assert_same(tree.class, Tree::BinaryTreeNode)
|
85
|
-
assert_same(tree.name
|
86
|
-
assert_equal(tree.is_root
|
87
|
-
assert_equal(tree.is_leaf
|
88
|
-
assert_equal(tree.children.count
|
89
|
-
assert_equal(tree.size
|
90
|
-
assert_equal(tree.left_child.name, :B)
|
91
|
-
assert_equal(tree.right_child.name, :C)
|
85
|
+
assert_same(:A, tree.name)
|
86
|
+
assert_equal(true, tree.is_root?)
|
87
|
+
assert_equal(false, tree.is_leaf?)
|
88
|
+
assert_equal(2, tree.children.count) # B, C, D
|
89
|
+
assert_equal(4, tree.size)
|
92
90
|
|
93
91
|
valid_hash_with_content = {[:A, "Content!"] => {:B => {}, :C => { [:D, "More content"] => {} } } }
|
94
92
|
tree2 = Tree::BinaryTreeNode.from_hash(valid_hash_with_content)
|
95
93
|
|
96
|
-
assert_equal(tree2.class
|
97
|
-
assert_equal(
|
98
|
-
assert_equal(tree2[:C][:D].content
|
94
|
+
assert_equal(Tree::BinaryTreeNode, tree2.class)
|
95
|
+
assert_equal("Content!" , tree2.content)
|
96
|
+
assert_equal("More content", tree2[:C][:D].content)
|
99
97
|
end
|
100
98
|
|
101
99
|
def test_add_from_hash
|
@@ -104,11 +102,11 @@ module TestTree
|
|
104
102
|
# Can't have too many children
|
105
103
|
too_many_kids = {:child1 => {}, :child2 => {}, :child3 => {}}
|
106
104
|
assert_raise(ArgumentError) { root.add_from_hash(too_many_kids) }
|
107
|
-
assert_equal(root.children.count
|
105
|
+
assert_equal(0, root.children.count) # Nothing added
|
108
106
|
|
109
107
|
# Well behaved when adding nothing
|
110
|
-
assert_equal(root.add_from_hash({})
|
111
|
-
assert_equal(root.size
|
108
|
+
assert_equal([], root.add_from_hash({}))
|
109
|
+
assert_equal(1, root.size)
|
112
110
|
|
113
111
|
valid_hash = {:A => {}, :B => { :C => {}, [:D, "leaf"] => {} } }
|
114
112
|
added = root.add_from_hash(valid_hash)
|
@@ -118,11 +116,11 @@ module TestTree
|
|
118
116
|
# / \
|
119
117
|
# C D
|
120
118
|
|
121
|
-
assert_equal(added.class
|
122
|
-
assert_equal(added.count
|
123
|
-
assert_equal(root.size
|
119
|
+
assert_equal(Array, added.class)
|
120
|
+
assert_equal(2, added.count)
|
121
|
+
assert_equal(5, root.size)
|
124
122
|
assert_equal(root.children.count, 2)
|
125
|
-
assert_equal(root[:B][:D].content
|
123
|
+
assert_equal("leaf", root[:B][:D].content)
|
126
124
|
|
127
125
|
# Can't add more than two children
|
128
126
|
assert_raise(ArgumentError) { root.add_from_hash({:X => {}}) }
|
@@ -186,7 +184,7 @@ module TestTree
|
|
186
184
|
result_array = []
|
187
185
|
result = f.inordered_each { |node| result_array << node.detached_copy}
|
188
186
|
|
189
|
-
assert_equal(
|
187
|
+
assert_equal(f, result) # each should return the original object
|
190
188
|
|
191
189
|
expected_array.each_index do |i|
|
192
190
|
# Match only the names.
|
data/test/test_tree.rb
CHANGED
@@ -146,24 +146,24 @@ module TestTree
|
|
146
146
|
|
147
147
|
tree = Tree::TreeNode.from_hash(hash)
|
148
148
|
|
149
|
-
assert_same(tree.class
|
149
|
+
assert_same(Tree::TreeNode, tree.class)
|
150
150
|
assert_same(tree.name, :A)
|
151
|
-
assert_equal(tree.is_root
|
152
|
-
assert_equal(tree.is_leaf
|
153
|
-
assert_equal(tree.size
|
154
|
-
assert_equal(
|
155
|
-
assert_equal(tree.children.count
|
151
|
+
assert_equal(true, tree.is_root?)
|
152
|
+
assert_equal(false, tree.is_leaf?)
|
153
|
+
assert_equal(9, tree.size)
|
154
|
+
assert_equal("Root content", tree.content)
|
155
|
+
assert_equal(3, tree.children.count) # B, C, D
|
156
156
|
|
157
157
|
leaf_with_content = tree[:B][:F][:I]
|
158
|
-
assert_equal(
|
159
|
-
assert_equal(leaf_with_content.is_leaf
|
158
|
+
assert_equal("Leaf content", leaf_with_content.content)
|
159
|
+
assert_equal(true, leaf_with_content.is_leaf?)
|
160
160
|
|
161
161
|
leaf_without_content = tree[:C]
|
162
|
-
assert_equal(leaf_without_content.is_leaf
|
162
|
+
assert_equal(true, leaf_without_content.is_leaf?)
|
163
163
|
|
164
164
|
interior_node = tree[:B][:F]
|
165
|
-
assert_equal(interior_node.is_leaf
|
166
|
-
assert_equal(interior_node.children.count
|
165
|
+
assert_equal(false, interior_node.is_leaf?)
|
166
|
+
assert_equal(2, interior_node.children.count)
|
167
167
|
|
168
168
|
# Can't make a node without a name
|
169
169
|
assert_raise (ArgumentError) { Tree::TreeNode.from_hash({}) }
|
@@ -198,24 +198,24 @@ module TestTree
|
|
198
198
|
|
199
199
|
tree = Tree::TreeNode.from_hash(hash)
|
200
200
|
|
201
|
-
assert_same(tree.class
|
202
|
-
assert_same(tree.name
|
203
|
-
assert_equal(tree.is_root
|
204
|
-
assert_equal(tree.is_leaf
|
205
|
-
assert_equal(tree.size
|
206
|
-
assert_equal(
|
207
|
-
assert_equal(tree.children.count
|
201
|
+
assert_same(Tree::TreeNode, tree.class)
|
202
|
+
assert_same(:A, tree.name)
|
203
|
+
assert_equal(true, tree.is_root?)
|
204
|
+
assert_equal(false, tree.is_leaf?)
|
205
|
+
assert_equal(9, tree.size)
|
206
|
+
assert_equal("Root content", tree.content)
|
207
|
+
assert_equal(3, tree.children.count) # B, C, D
|
208
208
|
|
209
209
|
leaf_with_content = tree[:B][:F][:I]
|
210
|
-
assert_equal(
|
211
|
-
assert_equal(leaf_with_content.is_leaf
|
210
|
+
assert_equal("Leaf content", leaf_with_content.content)
|
211
|
+
assert_equal(true, leaf_with_content.is_leaf?)
|
212
212
|
|
213
213
|
leaf_without_content = tree[:C]
|
214
|
-
assert_equal(leaf_without_content.is_leaf
|
214
|
+
assert_equal(true, leaf_without_content.is_leaf?)
|
215
215
|
|
216
216
|
interior_node = tree[:B][:F]
|
217
|
-
assert_equal(interior_node.is_leaf
|
218
|
-
assert_equal(interior_node.children.count
|
217
|
+
assert_equal(false, interior_node.is_leaf?)
|
218
|
+
assert_equal(2, interior_node.children.count)
|
219
219
|
end
|
220
220
|
|
221
221
|
def test_add_from_hash
|
@@ -223,7 +223,7 @@ module TestTree
|
|
223
223
|
|
224
224
|
# Doesn't blow up when added an empty hash
|
225
225
|
hash = {}
|
226
|
-
assert_equal(tree.add_from_hash(hash)
|
226
|
+
assert_equal([], tree.add_from_hash(hash))
|
227
227
|
|
228
228
|
# Okay, now try a real hash
|
229
229
|
hash = {:B => {:C => {:D => nil}, :E => {}, :F => {}}, [:G, "G content"] => {}}
|
@@ -236,13 +236,13 @@ module TestTree
|
|
236
236
|
# D
|
237
237
|
|
238
238
|
added_children = tree.add_from_hash(hash)
|
239
|
-
assert_equal(added_children.class
|
240
|
-
assert_equal(added_children.count
|
241
|
-
assert_equal(tree.size
|
242
|
-
assert_equal(tree[:G].content
|
243
|
-
assert_equal(tree[:G].is_leaf
|
244
|
-
assert_equal(tree[:B].size
|
245
|
-
assert_equal(tree[:B].children.count
|
239
|
+
assert_equal(Array, added_children.class)
|
240
|
+
assert_equal(2, added_children.count)
|
241
|
+
assert_equal(7, tree.size)
|
242
|
+
assert_equal("G content", tree[:G].content)
|
243
|
+
assert_equal(true, tree[:G].is_leaf?)
|
244
|
+
assert_equal(5, tree[:B].size)
|
245
|
+
assert_equal(3, tree[:B].children.count)
|
246
246
|
|
247
247
|
assert_raise (ArgumentError) { tree.add_from_hash([]) }
|
248
248
|
assert_raise (ArgumentError) { tree.add_from_hash("not a hash") }
|
@@ -272,7 +272,7 @@ module TestTree
|
|
272
272
|
|
273
273
|
exported = a.to_h
|
274
274
|
expected = {:A => {:B => {:E => {}}, :C => {:F => {}, :G => {}}}}
|
275
|
-
assert_equal(
|
275
|
+
assert_equal(expected, exported)
|
276
276
|
end
|
277
277
|
|
278
278
|
# Test that from_hash and to_h are symmetric
|
@@ -288,7 +288,7 @@ module TestTree
|
|
288
288
|
input = {:A => {:B => {:E => {:I => {}, :J =>{}}, :F => {}, :G => {}}, :C =>{:H => {:K => {}}}}}
|
289
289
|
|
290
290
|
node = Tree::TreeNode.from_hash(input)
|
291
|
-
assert_equal(node.to_h
|
291
|
+
assert_equal(input, node.to_h)
|
292
292
|
end
|
293
293
|
|
294
294
|
# Test the presence of content in the nodes.
|
@@ -316,20 +316,20 @@ module TestTree
|
|
316
316
|
first_node = Tree::TreeNode.new(1)
|
317
317
|
second_node = Tree::TreeNode.new(2)
|
318
318
|
|
319
|
-
assert_equal(first_node <=> nil
|
320
|
-
assert_equal(first_node <=> second_node
|
319
|
+
assert_equal(+1, first_node <=> nil)
|
320
|
+
assert_equal(-1, first_node <=> second_node)
|
321
321
|
|
322
322
|
second_node = Tree::TreeNode.new(1)
|
323
|
-
assert_equal(first_node <=> second_node
|
323
|
+
assert_equal(0, first_node <=> second_node)
|
324
324
|
|
325
325
|
first_node = Tree::TreeNode.new("ABC")
|
326
326
|
second_node = Tree::TreeNode.new("XYZ")
|
327
327
|
|
328
|
-
assert_equal(first_node <=> nil
|
329
|
-
assert_equal(first_node <=> second_node
|
328
|
+
assert_equal(+1, first_node <=> nil)
|
329
|
+
assert_equal(-1, first_node <=> second_node)
|
330
330
|
|
331
331
|
second_node = Tree::TreeNode.new("ABC")
|
332
|
-
assert_equal(first_node <=> second_node
|
332
|
+
assert_equal(0, first_node <=> second_node)
|
333
333
|
|
334
334
|
StandardWarning.enable
|
335
335
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubytree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anupam Sengupta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: structured_warnings
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.7'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.7'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rdoc
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '4.
|
61
|
+
version: '4.2'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '4.
|
68
|
+
version: '4.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +164,7 @@ post_install_message: |2
|
|
164
164
|
========================================================================
|
165
165
|
Thank you for installing RubyTree.
|
166
166
|
|
167
|
-
Note:: As of 0.9.
|
167
|
+
Note:: As of 0.9.5, the Tree::TreeNode#add method has 'move' semantics.
|
168
168
|
|
169
169
|
Details of the API changes are documented in the API-CHANGES file.
|
170
170
|
========================================================================
|