rubytree 0.9.3pre → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3dd9b9757055ea2f6896146448b13996c7e099cf
4
- data.tar.gz: 96f4a3cce558178889c67e64984778ad2192f42f
3
+ metadata.gz: 2696640cc7392fcb9a3d373ad067d2e58c01d0a0
4
+ data.tar.gz: 7ebb55c5a07049ff8ee0faa621e198d9e30354aa
5
5
  SHA512:
6
- metadata.gz: 32066b906cf88e1cba0ebc79c3b824e2f074ca884d90ddbbff76ee128ecc9f13c584fa362231f58c81ffc733574a4a780700e3d7b458b95476fe81920f17a71f
7
- data.tar.gz: 7d1eef090b839f6c8a3335d0fc5b8820aea6a614d2c7e2f6de3b784dd318f39fe99ef6bdec5d7105cb4c17c1c403bf69524b1f7411ee7f8d07aba843dc211a34
6
+ metadata.gz: 84b245a63875a6e70bf3e63a24717430981eaf7c6c2c7671e1ef5e46b95e82aeb9f5890ab85a48bc560ab023062c8cc8b0ed840f9850ba0bf1b627f12705cc02
7
+ data.tar.gz: f30e25b3626ec5f44214711b4d7b9392469d39410e6c399aca0b94bbd961840a33584c51b553f2cd7e5534af1b8602edf5a1c68d5fff031af41d2e0977ceef3f
@@ -9,6 +9,12 @@ Note: API level changes are expected to reduce dramatically after the 1.x
9
9
  release. In most cases, an alternative will be provided to ensure relatively
10
10
  smooth transition to the new APIs.
11
11
 
12
+ == Release 0.9.3 Changes
13
+
14
+ - The validation for unique node names has changed in the {Tree::TreeNode#add}
15
+ method. RubyTree no longer enforces globally unique names. The node-names need
16
+ to be unique only between the sibling nodes.
17
+
12
18
  == Release 0.9.0 Changes
13
19
 
14
20
  - New post-ordered traversal via the {Tree::TreeNode#postordered_each} method.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubytree (0.9.3pre)
4
+ rubytree (0.9.3)
5
5
  json (~> 1.8)
6
6
  structured_warnings (~> 0.1)
7
7
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  = History of Changes
4
4
 
5
+ === 0.9.3 / 2014-02-01
6
+
7
+ * Fixed the issue with globally unique node names. See Github issue #24.
8
+
5
9
  === 0.9.2 / 2014-01-03
6
10
 
7
11
  * Yanked R0.9.1 as the History file was not updated.
data/TAGS CHANGED
@@ -81,32 +81,32 @@ module Tree::Tree48,2158
81
81
  def to_s::Tree::TreeNode#to_s297,10212
82
82
  def <<::Tree::TreeNode#<<320,10983
83
83
  def add::Tree::TreeNode#add355,12489
84
- def insertion_range::Tree::TreeNode#insertion_range375,13549
85
- def remove!::Tree::TreeNode#remove!397,14336
86
- def parent=::Tree::TreeNode#parent=412,14739
87
- def remove_from_parent!::Tree::TreeNode#remove_from_parent!425,15124
88
- def remove_all!::Tree::TreeNode#remove_all!436,15496
89
- def set_as_root!::Tree::TreeNode#set_as_root!447,15725
90
- def freeze_tree!::Tree::TreeNode#freeze_tree!457,16051
91
- def []::Tree::TreeNode#[]497,17569
92
- def each::Tree::TreeNode#each522,18536
93
- def preordered_each::Tree::TreeNode#preordered_each550,19496
94
- def postordered_each::Tree::TreeNode#postordered_each562,19908
95
- def breadth_each::Tree::TreeNode#breadth_each598,21334
96
- def children::Tree::TreeNode#children624,22272
97
- def each_leaf::Tree::TreeNode#each_leaf645,22893
98
- def first_child::Tree::TreeNode#first_child662,23315
99
- def last_child::Tree::TreeNode#last_child670,23526
100
- def first_sibling::Tree::TreeNode#first_sibling686,23973
101
- def is_first_sibling?::Tree::TreeNode#is_first_sibling?696,24247
102
- def last_sibling::Tree::TreeNode#last_sibling710,24663
103
- def is_last_sibling?::Tree::TreeNode#is_last_sibling?720,24933
104
- def siblings::Tree::TreeNode#siblings736,25486
105
- def is_only_child?::Tree::TreeNode#is_only_child?755,26038
106
- def next_sibling::Tree::TreeNode#next_sibling768,26441
107
- def previous_sibling::Tree::TreeNode#previous_sibling784,26915
108
- def <=>::Tree::TreeNode#<=>800,27426
109
- def print_tree::Tree::TreeNode#print_tree808,27655
84
+ def insertion_range::Tree::TreeNode#insertion_range375,13451
85
+ def remove!::Tree::TreeNode#remove!397,14238
86
+ def parent=::Tree::TreeNode#parent=412,14641
87
+ def remove_from_parent!::Tree::TreeNode#remove_from_parent!425,15026
88
+ def remove_all!::Tree::TreeNode#remove_all!436,15398
89
+ def set_as_root!::Tree::TreeNode#set_as_root!447,15627
90
+ def freeze_tree!::Tree::TreeNode#freeze_tree!457,15953
91
+ def []::Tree::TreeNode#[]497,17471
92
+ def each::Tree::TreeNode#each522,18438
93
+ def preordered_each::Tree::TreeNode#preordered_each550,19398
94
+ def postordered_each::Tree::TreeNode#postordered_each562,19810
95
+ def breadth_each::Tree::TreeNode#breadth_each598,21236
96
+ def children::Tree::TreeNode#children624,22174
97
+ def each_leaf::Tree::TreeNode#each_leaf645,22795
98
+ def first_child::Tree::TreeNode#first_child662,23217
99
+ def last_child::Tree::TreeNode#last_child670,23428
100
+ def first_sibling::Tree::TreeNode#first_sibling686,23875
101
+ def is_first_sibling?::Tree::TreeNode#is_first_sibling?696,24149
102
+ def last_sibling::Tree::TreeNode#last_sibling710,24565
103
+ def is_last_sibling?::Tree::TreeNode#is_last_sibling?720,24835
104
+ def siblings::Tree::TreeNode#siblings736,25388
105
+ def is_only_child?::Tree::TreeNode#is_only_child?755,25940
106
+ def next_sibling::Tree::TreeNode#next_sibling768,26343
107
+ def previous_sibling::Tree::TreeNode#previous_sibling784,26817
108
+ def <=>::Tree::TreeNode#<=>800,27328
109
+ def print_tree::Tree::TreeNode#print_tree808,27557
110
110
 
111
111
  test/run_test.rb,0
112
112
 
@@ -170,53 +170,53 @@ module TestTree::TestTree39,1725
170
170
  def test_previous_sibling::TestTree::TestTreeNode#test_previous_sibling315,13146
171
171
  def test_add::TestTree::TestTreeNode#test_add326,13675
172
172
  def test_add_duplicate::TestTree::TestTreeNode#test_add_duplicate347,14357
173
- def test_add_at_specific_position::TestTree::TestTreeNode#test_add_at_specific_position378,15292
174
- def test_remove_bang::TestTree::TestTreeNode#test_remove_bang442,18345
175
- def test_remove_all_bang::TestTree::TestTreeNode#test_remove_all_bang474,19308
176
- def test_remove_from_parent_bang::TestTree::TestTreeNode#test_remove_from_parent_bang484,19614
177
- def test_children::TestTree::TestTreeNode#test_children503,20329
178
- def test_first_child::TestTree::TestTreeNode#test_first_child539,21918
179
- def test_last_child::TestTree::TestTreeNode#test_last_child548,22246
180
- def test_find::TestTree::TestTreeNode#test_find557,22562
181
- def test_parentage::TestTree::TestTreeNode#test_parentage572,23157
182
- def test_each::TestTree::TestTreeNode#test_each581,23489
183
- def test_each_leaf::TestTree::TestTreeNode#test_each_leaf600,24173
184
- def test_parent::TestTree::TestTreeNode#test_parent627,25368
185
- def test_indexed_access::TestTree::TestTreeNode#test_indexed_access638,25787
186
- def test_print_tree::TestTree::TestTreeNode#test_print_tree649,26160
187
- def test_marshal_dump::TestTree::TestTreeNode#test_marshal_dump656,26320
188
- alias test_marshal_load::TestTree::TestTreeNode#test_marshal_load698,28442
189
- def test_collect::TestTree::TestTreeNode#test_collect701,28563
190
- def test_freeze_tree_bang::TestTree::TestTreeNode#test_freeze_tree_bang711,28829
191
- def test_content::TestTree::TestTreeNode#test_content725,29351
192
- def test_depth::TestTree::TestTreeNode#test_depth733,29742
193
- def do_deprecated_depth::TestTree::TestTreeNode#do_deprecated_depth744,30115
194
- def test_node_height::TestTree::TestTreeNode#test_node_height762,30683
195
- def test_node_depth::TestTree::TestTreeNode#test_node_depth787,31892
196
- def test_level::TestTree::TestTreeNode#test_level800,32329
197
- def test_breadth::TestTree::TestTreeNode#test_breadth815,32872
198
- def test_breadth_each::TestTree::TestTreeNode#test_breadth_each834,33519
199
- def test_preordered_each::TestTree::TestTreeNode#test_preordered_each875,34825
200
- def test_postordered_each::TestTree::TestTreeNode#test_postordered_each914,36079
201
- def test_detached_copy::TestTree::TestTreeNode#test_detached_copy953,37334
202
- def test_detached_subtree_copy::TestTree::TestTreeNode#test_detached_subtree_copy970,38062
203
- def test_has_children_eh::TestTree::TestTreeNode#test_has_children_eh1004,40314
204
- def test_is_leaf_eh::TestTree::TestTreeNode#test_is_leaf_eh1010,40476
205
- def test_is_root_eh::TestTree::TestTreeNode#test_is_root_eh1017,40682
206
- def test_content_equals::TestTree::TestTreeNode#test_content_equals1023,40845
207
- def test_size::TestTree::TestTreeNode#test_size1031,41110
208
- def test_lt2::TestTree::TestTreeNode#test_lt21040,41374
209
- def test_index::TestTree::TestTreeNode#test_index1051,41866
210
- def test_in_degree::TestTree::TestTreeNode#test_in_degree1072,42962
211
- def test_out_degree::TestTree::TestTreeNode#test_out_degree1083,43429
212
- def test_json_serialization::TestTree::TestTreeNode#test_json_serialization1094,43916
213
- def test_json_deserialization::TestTree::TestTreeNode#test_json_deserialization1118,44716
214
- def test_json_roundtrip::TestTree::TestTreeNode#test_json_roundtrip1146,45902
215
- def test_old_camelCase_method_names::TestTree::TestTreeNode#test_old_camelCase_method_names1162,46643
216
- def test_integer_node_names::TestTree::TestTreeNode#test_integer_node_names1193,47711
217
- def test_add_node_to_self_as_child::TestTree::TestTreeNode#test_add_node_to_self_as_child1224,48941
218
- def test_single_node_becomes_leaf::TestTree::TestTreeNode#test_single_node_becomes_leaf1236,49367
219
- def test_unique_node_names::TestTree::TestTreeNode#test_unique_node_names1248,49788
220
- def setup_other_test_tree::TestTree::TestTreeNode#setup_other_test_tree1262,50143
221
- def test_merge::TestTree::TestTreeNode#test_merge1290,51132
222
- def test_merge_bang::TestTree::TestTreeNode#test_merge_bang1319,52570
173
+ def test_add_at_specific_position::TestTree::TestTreeNode#test_add_at_specific_position388,15785
174
+ def test_remove_bang::TestTree::TestTreeNode#test_remove_bang452,18838
175
+ def test_remove_all_bang::TestTree::TestTreeNode#test_remove_all_bang484,19801
176
+ def test_remove_from_parent_bang::TestTree::TestTreeNode#test_remove_from_parent_bang494,20107
177
+ def test_children::TestTree::TestTreeNode#test_children513,20822
178
+ def test_first_child::TestTree::TestTreeNode#test_first_child549,22411
179
+ def test_last_child::TestTree::TestTreeNode#test_last_child558,22739
180
+ def test_find::TestTree::TestTreeNode#test_find567,23055
181
+ def test_parentage::TestTree::TestTreeNode#test_parentage582,23650
182
+ def test_each::TestTree::TestTreeNode#test_each591,23982
183
+ def test_each_leaf::TestTree::TestTreeNode#test_each_leaf610,24666
184
+ def test_parent::TestTree::TestTreeNode#test_parent637,25861
185
+ def test_indexed_access::TestTree::TestTreeNode#test_indexed_access648,26280
186
+ def test_print_tree::TestTree::TestTreeNode#test_print_tree659,26653
187
+ def test_marshal_dump::TestTree::TestTreeNode#test_marshal_dump666,26813
188
+ alias test_marshal_load::TestTree::TestTreeNode#test_marshal_load708,28935
189
+ def test_collect::TestTree::TestTreeNode#test_collect711,29056
190
+ def test_freeze_tree_bang::TestTree::TestTreeNode#test_freeze_tree_bang721,29322
191
+ def test_content::TestTree::TestTreeNode#test_content735,29844
192
+ def test_depth::TestTree::TestTreeNode#test_depth743,30235
193
+ def do_deprecated_depth::TestTree::TestTreeNode#do_deprecated_depth754,30608
194
+ def test_node_height::TestTree::TestTreeNode#test_node_height772,31176
195
+ def test_node_depth::TestTree::TestTreeNode#test_node_depth797,32385
196
+ def test_level::TestTree::TestTreeNode#test_level810,32822
197
+ def test_breadth::TestTree::TestTreeNode#test_breadth825,33365
198
+ def test_breadth_each::TestTree::TestTreeNode#test_breadth_each844,34012
199
+ def test_preordered_each::TestTree::TestTreeNode#test_preordered_each885,35318
200
+ def test_postordered_each::TestTree::TestTreeNode#test_postordered_each924,36572
201
+ def test_detached_copy::TestTree::TestTreeNode#test_detached_copy963,37827
202
+ def test_detached_subtree_copy::TestTree::TestTreeNode#test_detached_subtree_copy980,38555
203
+ def test_has_children_eh::TestTree::TestTreeNode#test_has_children_eh1014,40807
204
+ def test_is_leaf_eh::TestTree::TestTreeNode#test_is_leaf_eh1020,40969
205
+ def test_is_root_eh::TestTree::TestTreeNode#test_is_root_eh1027,41175
206
+ def test_content_equals::TestTree::TestTreeNode#test_content_equals1033,41338
207
+ def test_size::TestTree::TestTreeNode#test_size1041,41603
208
+ def test_lt2::TestTree::TestTreeNode#test_lt21050,41867
209
+ def test_index::TestTree::TestTreeNode#test_index1061,42359
210
+ def test_in_degree::TestTree::TestTreeNode#test_in_degree1082,43455
211
+ def test_out_degree::TestTree::TestTreeNode#test_out_degree1093,43922
212
+ def test_json_serialization::TestTree::TestTreeNode#test_json_serialization1104,44409
213
+ def test_json_deserialization::TestTree::TestTreeNode#test_json_deserialization1128,45209
214
+ def test_json_roundtrip::TestTree::TestTreeNode#test_json_roundtrip1156,46395
215
+ def test_old_camelCase_method_names::TestTree::TestTreeNode#test_old_camelCase_method_names1172,47136
216
+ def test_integer_node_names::TestTree::TestTreeNode#test_integer_node_names1203,48204
217
+ def test_add_node_to_self_as_child::TestTree::TestTreeNode#test_add_node_to_self_as_child1234,49434
218
+ def test_single_node_becomes_leaf::TestTree::TestTreeNode#test_single_node_becomes_leaf1250,49947
219
+ def test_unique_node_names::TestTree::TestTreeNode#test_unique_node_names1262,50368
220
+ def setup_other_test_tree::TestTree::TestTreeNode#setup_other_test_tree1276,50723
221
+ def test_merge::TestTree::TestTreeNode#test_merge1304,51712
222
+ def test_merge_bang::TestTree::TestTreeNode#test_merge_bang1333,53150
@@ -354,11 +354,11 @@ module Tree
354
354
  # @see #<<
355
355
  def add(child, at_index = -1)
356
356
  raise ArgumentError, "Attempting to add a nil node" unless child # Only handles the immediate child scenario
357
- raise ArgumentError, "Attempting add node to itself" if self == child
358
- raise ArgumentError, "Attempting to add root as a child" if self.root == child
357
+ raise ArgumentError, "Attempting add node to itself" if self.equal?(child)
358
+ raise ArgumentError, "Attempting add root as a child" if self.equal?(root) unless self.is_root?
359
+
359
360
  # Lazy mans unique test, won't test if children of child are unique in this tree too.
360
- #self.root.each { |node| raise "Child #{child.name} already added!" if node.name == child.name }
361
- self.children.each { |node| raise "Child #{child.name} already added!" if node.name == child.name }
361
+ raise "Child #{child.name} already added!" if @children_hash.include?(child.name)
362
362
 
363
363
  if insertion_range.include?(at_index)
364
364
  @children.insert(at_index, child)
@@ -37,5 +37,5 @@
37
37
  #
38
38
  module Tree
39
39
  # Rubytree Package Version
40
- VERSION = '0.9.3pre'
40
+ VERSION = '0.9.3'
41
41
  end
@@ -359,9 +359,9 @@ module TestTree
359
359
  root = Tree::TreeNode.new("root")
360
360
  one = Tree::TreeNode.new("one")
361
361
  two = Tree::TreeNode.new("two")
362
+ three= Tree::TreeNode.new("three")
362
363
  deep = Tree::TreeNode.new("deep")
363
364
 
364
-
365
365
  root << one << deep
366
366
  # The same child cannot be added under any circumstance
367
367
  assert_raise(RuntimeError) { root.add(Tree::TreeNode.new(one.name)) }
@@ -370,7 +370,17 @@ module TestTree
370
370
  begin
371
371
  root << two << deep
372
372
  rescue RuntimeError => e
373
- fail("Error! The RuntimeError should not have been thrown.")
373
+ fail("Error! The RuntimeError should not have been thrown. The same node can be added to different branches.")
374
+ end
375
+
376
+ assert_raise(ArgumentError) {root << three << three }
377
+
378
+ root.remove_all! # Because the first child 'three' whould have been added.
379
+ begin
380
+ three_dup = Tree::TreeNode.new("three")
381
+ root << three << three_dup
382
+ rescue RuntimeError => e
383
+ fail("Error! The RuntimeError should not have been thrown. The same node name can be used in the branch.")
374
384
  end
375
385
  end
376
386
 
@@ -1229,7 +1239,11 @@ module TestTree
1229
1239
 
1230
1240
  # And now a scenario where the node addition is done down the hierarchy
1231
1241
  child = Tree::TreeNode.new("child")
1232
- assert_raise(ArgumentError) { root << child << root }
1242
+ begin
1243
+ root << child << root
1244
+ rescue ArgumentError => e
1245
+ fail("The ArgumentError should not have been raised.")
1246
+ end
1233
1247
  end
1234
1248
 
1235
1249
  # Test whether the tree_leaf method works correctly
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubytree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3pre
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anupam Sengupta
@@ -161,19 +161,9 @@ licenses:
161
161
  metadata: {}
162
162
  post_install_message: |2
163
163
  ========================================================================
164
- Thank you for installing rubytree.
164
+ Thank you for installing RubyTree.
165
165
 
166
- Note that the TreeNode#siblings method has changed in 0.8.3.
167
- It now returns an empty array for the root node.
168
-
169
- WARNING: SIGNIFICANT API CHANGE in 0.8.0 !
170
- ------------------------------------------
171
-
172
- Please note that as of 0.8.0 the CamelCase method names are DEPRECATED.
173
- The new method names follow the ruby_convention (separated by '_').
174
-
175
- The old CamelCase methods still work (a warning will be displayed),
176
- but may go away in the future.
166
+ Note:: As of 0.9.3, node names do not need to be globally unique.
177
167
 
178
168
  Details of the API changes are documented in the API-CHANGES file.
179
169
  ========================================================================
@@ -190,9 +180,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
180
  version: 1.8.7
191
181
  required_rubygems_version: !ruby/object:Gem::Requirement
192
182
  requirements:
193
- - - ">"
183
+ - - ">="
194
184
  - !ruby/object:Gem::Version
195
- version: 1.3.1
185
+ version: '0'
196
186
  requirements: []
197
187
  rubyforge_project: rubytree
198
188
  rubygems_version: 2.2.1