rubytree 0.9.7 → 1.0.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  # test_tree.rb - This file is part of the RubyTree package.
4
4
  #
5
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Anupam Sengupta
5
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017 Anupam Sengupta
6
6
  #
7
7
  # All rights reserved.
8
8
  #
@@ -33,11 +33,13 @@
33
33
  #
34
34
 
35
35
  require 'test/unit'
36
+ require 'structured_warnings'
36
37
  require 'json'
37
- require 'tree'
38
+ require_relative '../lib/tree/tree_deps'
38
39
 
39
40
  module TestTree
40
41
  # Test class for the Tree node.
42
+ # noinspection RubyTooManyInstanceVariablesInspection
41
43
  class TestTreeNode < Test::Unit::TestCase
42
44
 
43
45
  Person = Struct::new(:First, :last) # A simple structure to use as the content for the nodes.
@@ -63,13 +65,13 @@ module TestTree
63
65
  #
64
66
  # Some basic setup to create the nodes for the test tree.
65
67
  def setup
66
- @root = Tree::TreeNode.new("ROOT", "Root Node")
68
+ @root = Tree::TreeNode.new('ROOT', 'Root Node')
67
69
 
68
- @child1 = Tree::TreeNode.new("Child1", "Child Node 1")
69
- @child2 = Tree::TreeNode.new("Child2", "Child Node 2")
70
- @child3 = Tree::TreeNode.new("Child3", "Child Node 3")
71
- @child4 = Tree::TreeNode.new("Child4", "Grand Child 1")
72
- @child5 = Tree::TreeNode.new("Child5", "Child Node 4")
70
+ @child1 = Tree::TreeNode.new('Child1', 'Child Node 1')
71
+ @child2 = Tree::TreeNode.new('Child2', 'Child Node 2')
72
+ @child3 = Tree::TreeNode.new('Child3', 'Child Node 3')
73
+ @child4 = Tree::TreeNode.new('Child4', 'Grand Child 1')
74
+ @child5 = Tree::TreeNode.new('Child5', 'Child Node 4')
73
75
 
74
76
  end
75
77
 
@@ -92,17 +94,17 @@ module TestTree
92
94
 
93
95
  # This test is for the root alone - without any children being linked
94
96
  def test_root_setup
95
- assert_not_nil(@root , "Root cannot be nil")
96
- assert_nil(@root.parent , "Parent of root node should be nil")
97
- assert_not_nil(@root.name , "Name should not be nil")
98
- assert_equal("ROOT" , @root.name, "Name should be 'ROOT'")
99
- assert_equal("Root Node" , @root.content, "Content should be 'Root Node'")
100
- assert(@root.is_root? , "Should identify as root")
101
- assert(!@root.has_children? , "Cannot have any children")
102
- assert(@root.has_content? , "This root should have content")
103
- assert_equal(1 , @root.size, "Number of nodes should be one")
104
- assert_equal(0, @root.siblings.length, "This root does not have any children")
105
- assert_equal(0, @root.in_degree, "Root should have an in-degree of 0")
97
+ assert_not_nil(@root , 'Root cannot be nil')
98
+ assert_nil(@root.parent , 'Parent of root node should be nil')
99
+ assert_not_nil(@root.name , 'Name should not be nil')
100
+ assert_equal('ROOT', @root.name, "Name should be 'ROOT'")
101
+ assert_equal('Root Node', @root.content, "Content should be 'Root Node'")
102
+ assert(@root.is_root? , 'Should identify as root')
103
+ assert(!@root.has_children? , 'Cannot have any children')
104
+ assert(@root.has_content? , 'This root should have content')
105
+ assert_equal(1 , @root.size, 'Number of nodes should be one')
106
+ assert_equal(0, @root.siblings.length, 'This root does not have any children')
107
+ assert_equal(0, @root.in_degree, 'Root should have an in-degree of 0')
106
108
  assert_equal(0, @root.node_height, "Root's height before adding any children is 0")
107
109
  assert_raise(ArgumentError) { Tree::TreeNode.new(nil) }
108
110
  end
@@ -115,8 +117,8 @@ module TestTree
115
117
  # return nil so that the possibility of a recursive error does not exist
116
118
  # at all.
117
119
  assert_same(@root , @root.root, "Root's root is self")
118
- assert_same(@root , @child1.root, "Root should be ROOT")
119
- assert_same(@root , @child4.root, "Root should be ROOT")
120
+ assert_same(@root , @child1.root, 'Root should be ROOT')
121
+ assert_same(@root , @child4.root, 'Root should be ROOT')
120
122
  assert_equal(2 , @root.node_height, "Root's height after adding the children should be 2")
121
123
  end
122
124
 
@@ -129,18 +131,18 @@ module TestTree
129
131
  # / \
130
132
  # H I
131
133
 
132
- hash = {[:A, "Root content"] => {
133
- :B => {
134
- :E => {},
135
- :F => {
136
- :H => {},
137
- [:I, "Leaf content"] => {}
138
- }
139
- },
140
- :C => {},
141
- :D => {
142
- :G => {}
143
- }
134
+ hash = {[:A, 'Root content'] => {
135
+ B: {
136
+ E: {},
137
+ F: {
138
+ H: {},
139
+ [:I, 'Leaf content'] => {}
140
+ }
141
+ },
142
+ C: {},
143
+ D: {
144
+ G: {}
145
+ }
144
146
  }
145
147
  }
146
148
 
@@ -151,11 +153,11 @@ module TestTree
151
153
  assert_equal(true, tree.is_root?)
152
154
  assert_equal(false, tree.is_leaf?)
153
155
  assert_equal(9, tree.size)
154
- assert_equal("Root content", tree.content)
156
+ assert_equal('Root content', tree.content)
155
157
  assert_equal(3, tree.children.count) # B, C, D
156
158
 
157
159
  leaf_with_content = tree[:B][:F][:I]
158
- assert_equal("Leaf content", leaf_with_content.content)
160
+ assert_equal('Leaf content', leaf_with_content.content)
159
161
  assert_equal(true, leaf_with_content.is_leaf?)
160
162
 
161
163
  leaf_without_content = tree[:C]
@@ -168,7 +170,7 @@ module TestTree
168
170
  # Can't make a node without a name
169
171
  assert_raise (ArgumentError) { Tree::TreeNode.from_hash({}) }
170
172
  # Can't have multiple roots
171
- assert_raise (ArgumentError) { Tree::TreeNode.from_hash({:A => {}, :B => {}}) }
173
+ assert_raise (ArgumentError) { Tree::TreeNode.from_hash({A: {}, B: {}}) }
172
174
 
173
175
  end
174
176
 
@@ -181,18 +183,18 @@ module TestTree
181
183
  # / \
182
184
  # H I
183
185
 
184
- hash = {[:A, "Root content"] => {
185
- :B => {
186
- :E => nil,
187
- :F => {
188
- :H => nil,
189
- [:I, "Leaf content"] => nil
190
- }
191
- },
192
- :C => nil,
193
- :D => {
194
- :G => nil
195
- }
186
+ hash = {[:A, 'Root content'] => {
187
+ B: {
188
+ E: nil,
189
+ F: {
190
+ H: nil,
191
+ [:I, 'Leaf content'] => nil
192
+ }
193
+ },
194
+ C: nil,
195
+ D: {
196
+ G: nil
197
+ }
196
198
  }
197
199
  }
198
200
 
@@ -203,11 +205,11 @@ module TestTree
203
205
  assert_equal(true, tree.is_root?)
204
206
  assert_equal(false, tree.is_leaf?)
205
207
  assert_equal(9, tree.size)
206
- assert_equal("Root content", tree.content)
208
+ assert_equal('Root content', tree.content)
207
209
  assert_equal(3, tree.children.count) # B, C, D
208
210
 
209
211
  leaf_with_content = tree[:B][:F][:I]
210
- assert_equal("Leaf content", leaf_with_content.content)
212
+ assert_equal('Leaf content', leaf_with_content.content)
211
213
  assert_equal(true, leaf_with_content.is_leaf?)
212
214
 
213
215
  leaf_without_content = tree[:C]
@@ -226,7 +228,7 @@ module TestTree
226
228
  assert_equal([], tree.add_from_hash(hash))
227
229
 
228
230
  # Okay, now try a real hash
229
- hash = {:B => {:C => {:D => nil}, :E => {}, :F => {}}, [:G, "G content"] => {}}
231
+ hash = {B: {C: {D: nil}, E: {}, F: {}}, [:G, 'G content'] => {}}
230
232
  # A
231
233
  # / \
232
234
  # B G
@@ -239,14 +241,14 @@ module TestTree
239
241
  assert_equal(Array, added_children.class)
240
242
  assert_equal(2, added_children.count)
241
243
  assert_equal(7, tree.size)
242
- assert_equal("G content", tree[:G].content)
244
+ assert_equal('G content', tree[:G].content)
243
245
  assert_equal(true, tree[:G].is_leaf?)
244
246
  assert_equal(5, tree[:B].size)
245
247
  assert_equal(3, tree[:B].children.count)
246
248
 
247
249
  assert_raise (ArgumentError) { tree.add_from_hash([]) }
248
- assert_raise (ArgumentError) { tree.add_from_hash("not a hash") }
249
- assert_raise (ArgumentError) { tree.add_from_hash({:X => "Not a hash or nil"}) }
250
+ assert_raise (ArgumentError) { tree.add_from_hash('not a hash') }
251
+ assert_raise (ArgumentError) { tree.add_from_hash({X: 'Not a hash or nil'}) }
250
252
  end
251
253
 
252
254
  # Test exporting to ruby Hash
@@ -254,7 +256,7 @@ module TestTree
254
256
  a = Tree::TreeNode.new(:A)
255
257
  b = Tree::TreeNode.new(:B)
256
258
  c = Tree::TreeNode.new(:C)
257
- d = Tree::TreeNode.new(:D)
259
+ # d = Tree::TreeNode.new(:D)
258
260
  e = Tree::TreeNode.new(:E)
259
261
  f = Tree::TreeNode.new(:F)
260
262
  g = Tree::TreeNode.new(:G)
@@ -271,7 +273,7 @@ module TestTree
271
273
  b << e
272
274
 
273
275
  exported = a.to_h
274
- expected = {:A => {:B => {:E => {}}, :C => {:F => {}, :G => {}}}}
276
+ expected = {A: {B: {E: {}}, C: {F: {}, G: {}}}}
275
277
  assert_equal(expected, exported)
276
278
  end
277
279
 
@@ -285,7 +287,7 @@ module TestTree
285
287
  # |\ |
286
288
  # I J K
287
289
 
288
- input = {:A => {:B => {:E => {:I => {}, :J =>{}}, :F => {}, :G => {}}, :C =>{:H => {:K => {}}}}}
290
+ input = {A: {B: {E: {I: {}, J: {}}, F: {}, G: {}}, C: {H: {K: {}}}}}
289
291
 
290
292
  node = Tree::TreeNode.from_hash(input)
291
293
  assert_equal(input, node.to_h)
@@ -293,25 +295,25 @@ module TestTree
293
295
 
294
296
  # Test the presence of content in the nodes.
295
297
  def test_has_content_eh
296
- a_node = Tree::TreeNode.new("A Node")
297
- assert_nil(a_node.content , "The node should not have content")
298
- assert(!a_node.has_content? , "The node should not have content")
298
+ a_node = Tree::TreeNode.new('A Node')
299
+ assert_nil(a_node.content , 'The node should not have content')
300
+ assert(!a_node.has_content? , 'The node should not have content')
299
301
 
300
- a_node.content = "Something"
301
- assert_not_nil(a_node.content, "The node should now have content")
302
- assert(a_node.has_content?, "The node should now have content")
302
+ a_node.content = 'Something'
303
+ assert_not_nil(a_node.content, 'The node should now have content')
304
+ assert(a_node.has_content?, 'The node should now have content')
303
305
  end
304
306
 
305
307
  # Test the equivalence of size and length methods.
306
308
  def test_length_is_size
307
309
  setup_test_tree
308
- assert_equal(@root.size, @root.length, "Length and size methods should return the same result")
310
+ assert_equal(@root.size, @root.length, 'Length and size methods should return the same result')
309
311
  end
310
312
 
311
313
  # Test the <=> operator.
312
314
  def test_spaceship
313
315
  require 'structured_warnings'
314
- StandardWarning.disable # Disable the warnings for using integers as node names
316
+ StructuredWarnings::StandardWarning.disable # Disable the warnings for using integers as node names
315
317
 
316
318
  first_node = Tree::TreeNode.new(1)
317
319
  second_node = Tree::TreeNode.new(2)
@@ -322,66 +324,66 @@ module TestTree
322
324
  second_node = Tree::TreeNode.new(1)
323
325
  assert_equal(0, first_node <=> second_node)
324
326
 
325
- first_node = Tree::TreeNode.new("ABC")
326
- second_node = Tree::TreeNode.new("XYZ")
327
+ first_node = Tree::TreeNode.new('ABC')
328
+ second_node = Tree::TreeNode.new('XYZ')
327
329
 
328
330
  assert_nil(first_node <=> nil)
329
331
  assert_equal(-1, first_node <=> second_node)
330
332
 
331
- second_node = Tree::TreeNode.new("ABC")
333
+ second_node = Tree::TreeNode.new('ABC')
332
334
  assert_equal(0, first_node <=> second_node)
333
335
 
334
- StandardWarning.enable
336
+ StructuredWarnings::StandardWarning.enable
335
337
  end
336
338
 
337
339
  # Test the inclusion of Comparable
338
340
  def test_is_comparable
339
- nodeA = Tree::TreeNode.new("NodeA", "Some Content")
340
- nodeB = Tree::TreeNode.new("NodeB", "Some Content")
341
- nodeC = Tree::TreeNode.new("NodeC", "Some Content")
341
+ node_a = Tree::TreeNode.new('NodeA', 'Some Content')
342
+ node_b = Tree::TreeNode.new('NodeB', 'Some Content')
343
+ node_c = Tree::TreeNode.new('NodeC', 'Some Content')
342
344
 
343
345
  # Check if the nodes compare correctly
344
- assert(nodeA < nodeB, "Node A is lexically 'less than' node B")
345
- assert(nodeA <= nodeB, "Node A is lexically 'less than' node B")
346
- assert(nodeB > nodeA, "Node B is lexically 'greater than' node A")
347
- assert(nodeB >= nodeA, "Node B is lexically 'greater than' node A")
346
+ assert(node_a < node_b, "Node A is lexically 'less than' node B")
347
+ assert(node_a <= node_b, "Node A is lexically 'less than' node B")
348
+ assert(node_b > node_a, "Node B is lexically 'greater than' node A")
349
+ assert(node_b >= node_a, "Node B is lexically 'greater than' node A")
348
350
 
349
- assert(!(nodeA == nodeB), "Node A and Node B are not equal")
350
- assert(nodeB.between?(nodeA, nodeC), "Node B is lexically between node A and node C")
351
+ assert(!(node_a == node_b), 'Node A and Node B are not equal')
352
+ assert(node_b.between?(node_a, node_c), 'Node B is lexically between node A and node C')
351
353
 
352
354
 
353
355
  end
354
356
 
355
357
  # Test the to_s method. This is probably a little fragile right now.
356
358
  def test_to_s
357
- a_node = Tree::TreeNode.new("A Node", "Some Content")
359
+ a_node = Tree::TreeNode.new('A Node', 'Some Content')
358
360
 
359
- expected_string = "Node Name: A Node Content: Some Content Parent: <None> Children: 0 Total Nodes: 1"
361
+ expected_string = 'Node Name: A Node Content: Some Content Parent: <None> Children: 0 Total Nodes: 1'
360
362
 
361
- assert_equal(expected_string, a_node.to_s, "The string representation should be same")
363
+ assert_equal(expected_string, a_node.to_s, 'The string representation should be same')
362
364
 
363
365
  # Now test with a symbol as a key.
364
- a_node = Tree::TreeNode.new(:Node_Name, "Some Content")
365
- expected_string = "Node Name: Node_Name Content: Some Content Parent: <None> Children: 0 Total Nodes: 1"
366
- assert_equal(expected_string, a_node.to_s, "The string representation should be same")
366
+ a_node = Tree::TreeNode.new(:Node_Name, 'Some Content')
367
+ expected_string = 'Node Name: Node_Name Content: Some Content Parent: <None> Children: 0 Total Nodes: 1'
368
+ assert_equal(expected_string, a_node.to_s, 'The string representation should be same')
367
369
 
368
370
  # Now test with a symbol as a key and another symbol as the content.
369
371
  a_node = Tree::TreeNode.new(:Node_Name, :Content)
370
- expected_string = "Node Name: Node_Name Content: Content Parent: <None> Children: 0 Total Nodes: 1"
371
- assert_equal(expected_string, a_node.to_s, "The string representation should be same")
372
+ expected_string = 'Node Name: Node_Name Content: Content Parent: <None> Children: 0 Total Nodes: 1'
373
+ assert_equal(expected_string, a_node.to_s, 'The string representation should be same')
372
374
 
373
375
  # Now test with a symbol as a key, and a hash as the content.
374
- a_hash = {:a_key => "Some Value"}
376
+ a_hash = {a_key: 'Some Value'}
375
377
  a_node = Tree::TreeNode.new(:Node_Name, a_hash)
376
378
  expected_string = "Node Name: Node_Name Content: #{a_hash} Parent: <None> Children: 0 Total Nodes: 1"
377
- assert_equal(expected_string, a_node.to_s, "The string representation should be same")
379
+ assert_equal(expected_string, a_node.to_s, 'The string representation should be same')
378
380
 
379
381
  # Lets now add a child to the previous node, and test the to_s for the child
380
- child_node = Tree::TreeNode.new(:Child_node, "Child Node")
382
+ child_node = Tree::TreeNode.new(:Child_node, 'Child Node')
381
383
  a_node << child_node
382
384
 
383
- expected_string = "Node Name: Child_node Content: Child Node Parent: Node_Name Children: 0 Total Nodes: 1"
384
- assert_equal(expected_string, child_node.to_s, "The string representation should be same")
385
+ expected_string = 'Node Name: Child_node Content: Child Node Parent: Node_Name Children: 0 Total Nodes: 1'
386
+ assert_equal(expected_string, child_node.to_s, 'The string representation should be same')
385
387
 
386
388
  end
387
389
 
@@ -404,8 +406,8 @@ module TestTree
404
406
 
405
407
  assert(@root.is_first_sibling?, "Root's first sibling is itself")
406
408
  assert( @child1.is_first_sibling?, "Child1's first sibling is itself")
407
- assert(!@child2.is_first_sibling?, "Child2 is not the first sibling")
408
- assert(!@child3.is_first_sibling?, "Child3 is not the first sibling")
409
+ assert(!@child2.is_first_sibling?, 'Child2 is not the first sibling')
410
+ assert(!@child3.is_first_sibling?, 'Child3 is not the first sibling')
409
411
  assert( @child4.is_first_sibling?, "Child4's first sibling is itself")
410
412
  end
411
413
 
@@ -414,8 +416,8 @@ module TestTree
414
416
  setup_test_tree
415
417
 
416
418
  assert(@root.is_last_sibling?, "Root's last sibling is itself")
417
- assert(!@child1.is_last_sibling?, "Child1 is not the last sibling")
418
- assert(!@child2.is_last_sibling?, "Child2 is not the last sibling")
419
+ assert(!@child1.is_last_sibling?, 'Child1 is not the last sibling')
420
+ assert(!@child2.is_last_sibling?, 'Child2 is not the last sibling')
419
421
  assert( @child3.is_last_sibling?, "Child3's last sibling is itself")
420
422
  assert( @child4.is_last_sibling?, "Child4's last sibling is itself")
421
423
  end
@@ -441,22 +443,22 @@ module TestTree
441
443
  result = @child1.siblings { |sibling| siblings << sibling}
442
444
 
443
445
  assert_equal(@child1, result)
444
- assert_equal(2, siblings.length, "Should have two siblings")
445
- assert(siblings.include?(@child2), "Should have 2nd child as sibling")
446
- assert(siblings.include?(@child3), "Should have 3rd child as sibling")
446
+ assert_equal(2, siblings.length, 'Should have two siblings')
447
+ assert(siblings.include?(@child2), 'Should have 2nd child as sibling')
448
+ assert(siblings.include?(@child3), 'Should have 3rd child as sibling')
447
449
 
448
450
  siblings.clear
449
451
  siblings = @child1.siblings
450
452
  assert_equal(Array, siblings.class)
451
- assert_equal(2, siblings.length, "Should have two siblings")
453
+ assert_equal(2, siblings.length, 'Should have two siblings')
452
454
 
453
455
  siblings.clear
454
456
  @child4.siblings {|sibling| siblings << sibling}
455
- assert(siblings.empty?, "Should not have any siblings")
457
+ assert(siblings.empty?, 'Should not have any siblings')
456
458
 
457
459
  siblings.clear
458
460
  siblings = @root.siblings
459
- assert_equal(0, siblings.length, "Root should not have any siblings")
461
+ assert_equal(0, siblings.length, 'Root should not have any siblings')
460
462
 
461
463
  end
462
464
 
@@ -464,51 +466,51 @@ module TestTree
464
466
  def test_is_only_child_eh
465
467
  setup_test_tree
466
468
 
467
- assert( @root.is_only_child? , "Root is an only child")
468
- assert(!@child1.is_only_child?, "Child1 is not the only child")
469
- assert(!@child2.is_only_child?, "Child2 is not the only child")
470
- assert(!@child3.is_only_child?, "Child3 is not the only child")
471
- assert( @child4.is_only_child?, "Child4 is an only child")
469
+ assert(@root.is_only_child? , 'Root is an only child')
470
+ assert(!@child1.is_only_child?, 'Child1 is not the only child')
471
+ assert(!@child2.is_only_child?, 'Child2 is not the only child')
472
+ assert(!@child3.is_only_child?, 'Child3 is not the only child')
473
+ assert(@child4.is_only_child?, 'Child4 is an only child')
472
474
  end
473
475
 
474
476
  # Test the next_sibling method.
475
477
  def test_next_sibling
476
478
  setup_test_tree
477
479
 
478
- assert_nil(@root.next_sibling, "Root does not have any next sibling")
480
+ assert_nil(@root.next_sibling, 'Root does not have any next sibling')
479
481
  assert_equal(@child2, @child1.next_sibling, "Child1's next sibling is Child2")
480
482
  assert_equal(@child3, @child2.next_sibling, "Child2's next sibling is Child3")
481
- assert_nil(@child3.next_sibling, "Child3 does not have a next sibling")
482
- assert_nil(@child4.next_sibling, "Child4 does not have a next sibling")
483
+ assert_nil(@child3.next_sibling, 'Child3 does not have a next sibling')
484
+ assert_nil(@child4.next_sibling, 'Child4 does not have a next sibling')
483
485
  end
484
486
 
485
487
  # Test the previous_sibling method.
486
488
  def test_previous_sibling
487
489
  setup_test_tree
488
490
 
489
- assert_nil(@root.previous_sibling, "Root does not have any previous sibling")
490
- assert_nil(@child1.previous_sibling, "Child1 does not have previous sibling")
491
+ assert_nil(@root.previous_sibling, 'Root does not have any previous sibling')
492
+ assert_nil(@child1.previous_sibling, 'Child1 does not have previous sibling')
491
493
  assert_equal(@child1, @child2.previous_sibling, "Child2's previous sibling is Child1")
492
494
  assert_equal(@child2, @child3.previous_sibling, "Child3's previous sibling is Child2")
493
- assert_nil(@child4.previous_sibling, "Child4 does not have a previous sibling")
495
+ assert_nil(@child4.previous_sibling, 'Child4 does not have a previous sibling')
494
496
  end
495
497
 
496
498
  # Test the add method.
497
499
  def test_add
498
- assert(!@root.has_children?, "Should not have any children")
500
+ assert(!@root.has_children?, 'Should not have any children')
499
501
 
500
- assert_equal(1, @root.size, "Should have 1 node (the root)")
502
+ assert_equal(1, @root.size, 'Should have 1 node (the root)')
501
503
  @root.add(@child1)
502
504
 
503
505
  @root << @child2
504
506
 
505
- assert(@root.has_children?, "Should have children")
506
- assert_equal(3, @root.size, "Should have three nodes")
507
+ assert(@root.has_children?, 'Should have children')
508
+ assert_equal(3, @root.size, 'Should have three nodes')
507
509
 
508
510
  @root << @child3 << @child4
509
511
 
510
- assert_equal(5, @root.size, "Should have five nodes")
511
- assert_equal(2, @child3.size, "Should have two nodes")
512
+ assert_equal(5, @root.size, 'Should have five nodes')
513
+ assert_equal(2, @child3.size, 'Should have two nodes')
512
514
 
513
515
  # Test the addition of a nil node.
514
516
  assert_raise(ArgumentError) { @root.add(nil) }
@@ -528,11 +530,11 @@ module TestTree
528
530
  #
529
531
  # In this case, the two 'deep' nodes should not be considered duplicates
530
532
 
531
- root = Tree::TreeNode.new("root")
532
- one = Tree::TreeNode.new("one")
533
- two = Tree::TreeNode.new("two")
534
- three= Tree::TreeNode.new("three")
535
- deep = Tree::TreeNode.new("deep")
533
+ root = Tree::TreeNode.new('root')
534
+ one = Tree::TreeNode.new('one')
535
+ two = Tree::TreeNode.new('two')
536
+ three= Tree::TreeNode.new('three')
537
+ deep = Tree::TreeNode.new('deep')
536
538
 
537
539
  root << one << deep
538
540
  # The same child cannot be added under any circumstance
@@ -542,25 +544,25 @@ module TestTree
542
544
  begin
543
545
  root << two << deep
544
546
  rescue RuntimeError => e
545
- fail("Error! The RuntimeError should not have been thrown. The same node can be added to different branches.")
547
+ fail("Error! The RuntimeError #{e} should not have been thrown. The same node can be added to different branches.")
546
548
  end
547
549
 
548
550
  assert_raise(ArgumentError) {root << three << three }
549
551
 
550
- root.remove_all! # Because the first child 'three' whould have been added.
552
+ root.remove_all! # Because the first child 'three' would have been added.
551
553
  begin
552
- three_dup = Tree::TreeNode.new("three")
554
+ three_dup = Tree::TreeNode.new('three')
553
555
  root << three << three_dup
554
556
  rescue RuntimeError => e
555
- fail("Error! The RuntimeError should not have been thrown. The same node name can be used in the branch.")
557
+ fail("Error! The RuntimeError #{e} should not have been thrown. The same node name can be used in the branch.")
556
558
  end
557
559
  end
558
560
 
559
561
  # Test Addition at a specific position
560
562
  def test_add_at_specific_position
561
- assert(!@root.has_children?, "Should not have any children")
563
+ assert(!@root.has_children?, 'Should not have any children')
562
564
 
563
- assert_equal(1, @root.size, "Should have 1 node (the root)")
565
+ assert_equal(1, @root.size, 'Should have 1 node (the root)')
564
566
  @root.add(@child1) # First Child added at position 0
565
567
  # Validate that children = [@child1]
566
568
  assert_equal(@child1, @root[0])
@@ -569,14 +571,14 @@ module TestTree
569
571
  # Validate that children = [@child1, @child2]
570
572
  assert_equal(@child1, @root[0])
571
573
  assert_equal(@child2, @root[1])
572
- assert_equal(2, @root.children.size, "Should have two child nodes")
574
+ assert_equal(2, @root.children.size, 'Should have two child nodes')
573
575
 
574
576
  @root.add(@child3, 1) # Third child inserted at position 1 (before @child2)
575
577
  # Validate that children = [@child1, @child3, @child2]
576
578
  assert_equal(@child1, @root[0])
577
579
  assert_equal(@child3, @root[1])
578
580
  assert_equal(@child2, @root[2])
579
- assert_equal(3, @root.children.size, "Should have three child nodes")
581
+ assert_equal(3, @root.children.size, 'Should have three child nodes')
580
582
 
581
583
  @root.add(@child4, @root.children.size) # Fourth child inserted at the end (equivalent to plain #add(child4)
582
584
  # Validate that children = [@child1, @child3, @child2, @child4]
@@ -584,7 +586,7 @@ module TestTree
584
586
  assert_equal(@child3, @root[1])
585
587
  assert_equal(@child2, @root[2])
586
588
  assert_equal(@child4, @root[3])
587
- assert_equal(4, @root.children.size, "Should have four child nodes")
589
+ assert_equal(4, @root.children.size, 'Should have four child nodes')
588
590
 
589
591
  # Now, a negative test. We are preventing addition to a position that does not exist.
590
592
  assert_raise(RuntimeError) {
@@ -596,7 +598,7 @@ module TestTree
596
598
  assert_equal(@child2, @root[2])
597
599
  assert_equal(@child4, @root[3])
598
600
  assert_nil(@root[4])
599
- assert_equal(4, @root.children.size, "Should have four child nodes")
601
+ assert_equal(4, @root.children.size, 'Should have four child nodes')
600
602
 
601
603
  # Another negative test. Lets attempt to add from the end at a position that is not available
602
604
  assert_raise(RuntimeError) {
@@ -607,7 +609,7 @@ module TestTree
607
609
  assert_equal(@child3, @root[-3])
608
610
  assert_equal(@child2, @root[-2])
609
611
  assert_equal(@child4, @root[-1])
610
- assert_equal(4, @root.children.size, "Should have four child nodes")
612
+ assert_equal(4, @root.children.size, 'Should have four child nodes')
611
613
 
612
614
  # Lets correctly add the fifth child from the end to effectively prepend the node.
613
615
  @root.add(@child5, -(@root.children.size+1)) # Fifth child inserted beyond the first position; i.e. at -5
@@ -617,7 +619,7 @@ module TestTree
617
619
  assert_equal(@child3, @root[-3])
618
620
  assert_equal(@child2, @root[-2])
619
621
  assert_equal(@child4, @root[-1])
620
- assert_equal(5, @root.children.size, "Should have five child nodes")
622
+ assert_equal(5, @root.children.size, 'Should have five child nodes')
621
623
  end
622
624
 
623
625
  # Test the replace! and replace_with! methods
@@ -626,40 +628,40 @@ module TestTree
626
628
  @root << @child2
627
629
  @root << @child3
628
630
 
629
- assert_equal(4, @root.size, "Should have four nodes")
630
- assert(@root.children.include?(@child1), "Should parent child1")
631
- assert(@root.children.include?(@child2), "Should parent child2")
632
- assert(@root.children.include?(@child3), "Should parent child3")
633
- assert(!@root.children.include?(@child4), "Should not parent child4")
631
+ assert_equal(4, @root.size, 'Should have four nodes')
632
+ assert(@root.children.include?(@child1), 'Should parent child1')
633
+ assert(@root.children.include?(@child2), 'Should parent child2')
634
+ assert(@root.children.include?(@child3), 'Should parent child3')
635
+ assert(!@root.children.include?(@child4), 'Should not parent child4')
634
636
 
635
637
  @root.replace!(@child2, @child4)
636
638
 
637
639
  # Also test replacing with a node of the same name
638
640
  @root.replace! @child4, @child4.detached_copy
639
641
 
640
- assert_equal(4, @root.size, "Should have three nodes")
641
- assert(@root.children.include?(@child1), "Should parent child1")
642
- assert(!@root.children.include?(@child2), "Should not parent child2")
643
- assert(@root.children.include?(@child3), "Should parent child3")
644
- assert(@root.children.include?(@child4), "Should parent child4")
645
- assert_equal(1, @root.children.find_index(@child4), "Should add child4 to index 1")
642
+ assert_equal(4, @root.size, 'Should have three nodes')
643
+ assert(@root.children.include?(@child1), 'Should parent child1')
644
+ assert(!@root.children.include?(@child2), 'Should not parent child2')
645
+ assert(@root.children.include?(@child3), 'Should parent child3')
646
+ assert(@root.children.include?(@child4), 'Should parent child4')
647
+ assert_equal(1, @root.children.find_index(@child4), 'Should add child4 to index 1')
646
648
  end
647
649
 
648
650
  def test_replace_with
649
651
  @root << @child1
650
652
  @root << @child2
651
653
 
652
- assert_equal(3, @root.size, "Should have three nodes")
653
- assert(@root.children.include?(@child1), "Should parent child1")
654
- assert(@root.children.include?(@child2), "Should parent child2")
655
- assert(!@root.children.include?(@child3), "Should not parent child3")
654
+ assert_equal(3, @root.size, 'Should have three nodes')
655
+ assert(@root.children.include?(@child1), 'Should parent child1')
656
+ assert(@root.children.include?(@child2), 'Should parent child2')
657
+ assert(!@root.children.include?(@child3), 'Should not parent child3')
656
658
 
657
659
  @child2.replace_with @child3
658
660
 
659
- assert_equal(3, @root.size, "Should have three nodes")
660
- assert(@root.children.include?(@child1), "Should parent child1")
661
- assert(!@root.children.include?(@child2), "Should not parent child2")
662
- assert(@root.children.include?(@child3), "Should parent child3")
661
+ assert_equal(3, @root.size, 'Should have three nodes')
662
+ assert(@root.children.include?(@child1), 'Should parent child1')
663
+ assert(!@root.children.include?(@child2), 'Should not parent child2')
664
+ assert(@root.children.include?(@child3), 'Should parent child3')
663
665
  end
664
666
 
665
667
  # Test the remove! and remove_all! methods.
@@ -667,57 +669,57 @@ module TestTree
667
669
  @root << @child1
668
670
  @root << @child2
669
671
 
670
- assert(@root.has_children?, "Should have children")
671
- assert_equal(3, @root.size, "Should have three nodes")
672
+ assert(@root.has_children?, 'Should have children')
673
+ assert_equal(3, @root.size, 'Should have three nodes')
672
674
 
673
675
  @root.remove!(@child1)
674
- assert_equal(2, @root.size, "Should have two nodes")
676
+ assert_equal(2, @root.size, 'Should have two nodes')
675
677
  @root.remove!(@child2)
676
678
 
677
- assert(!@root.has_children?, "Should have no children")
678
- assert_equal(1, @root.size, "Should have one node")
679
+ assert(!@root.has_children?, 'Should have no children')
680
+ assert_equal(1, @root.size, 'Should have one node')
679
681
 
680
682
  @root << @child1
681
683
  @root << @child2
682
684
 
683
- assert(@root.has_children?, "Should have children")
684
- assert_equal(3, @root.size, "Should have three nodes")
685
+ assert(@root.has_children?, 'Should have children')
686
+ assert_equal(3, @root.size, 'Should have three nodes')
685
687
 
686
688
  @root.remove_all!
687
689
 
688
- assert(!@root.has_children?, "Should have no children")
689
- assert_equal(1, @root.size, "Should have one node")
690
+ assert(!@root.has_children?, 'Should have no children')
691
+ assert_equal(1, @root.size, 'Should have one node')
690
692
 
691
693
  # Some negative testing
692
694
  @root.remove!(nil)
693
- assert(!@root.has_children?, "Should have no children")
694
- assert_equal(1, @root.size, "Should have one node")
695
+ assert(!@root.has_children?, 'Should have no children')
696
+ assert_equal(1, @root.size, 'Should have one node')
695
697
  end
696
698
 
697
699
  # Test the remove_all! method.
698
700
  def test_remove_all_bang
699
701
  setup_test_tree
700
- assert(@root.has_children?, "Should have children")
702
+ assert(@root.has_children?, 'Should have children')
701
703
  @root.remove_all!
702
704
 
703
- assert(!@root.has_children?, "Should have no children")
704
- assert_equal(1, @root.size, "Should have one node")
705
+ assert(!@root.has_children?, 'Should have no children')
706
+ assert_equal(1, @root.size, 'Should have one node')
705
707
  end
706
708
 
707
709
  # Test the remove_from_parent! method.
708
710
  def test_remove_from_parent_bang
709
711
  setup_test_tree
710
712
 
711
- assert(@root.has_children?, "Should have children")
712
- assert(!@root.is_leaf?, "Root is not a leaf here")
713
+ assert(@root.has_children?, 'Should have children')
714
+ assert(!@root.is_leaf?, 'Root is not a leaf here')
713
715
 
714
716
  child1 = @root[0]
715
- assert_not_nil(child1, "Child 1 should exist")
717
+ assert_not_nil(child1, 'Child 1 should exist')
716
718
  assert_same(@root, child1.root, "Child 1's root should be ROOT")
717
- assert(@root.include?(child1), "root should have child1")
719
+ assert(@root.include?(child1), 'root should have child1')
718
720
  child1.remove_from_parent!
719
721
  assert_same(child1, child1.root, "Child 1's root should be self")
720
- assert(!@root.include?(child1), "root should not have child1")
722
+ assert(!@root.include?(child1), 'root should not have child1')
721
723
 
722
724
  child1.remove_from_parent!
723
725
  assert_same(child1, child1.root, "Child 1's root should still be self")
@@ -727,35 +729,35 @@ module TestTree
727
729
  def test_children
728
730
  setup_test_tree
729
731
 
730
- assert(@root.has_children?, "Should have children")
731
- assert_equal(5, @root.size, "Should have five nodes")
732
- assert(@child3.has_children?, "Should have children")
733
- assert(!@child3.is_leaf?, "Should not be a leaf")
732
+ assert(@root.has_children?, 'Should have children')
733
+ assert_equal(5, @root.size, 'Should have five nodes')
734
+ assert(@child3.has_children?, 'Should have children')
735
+ assert(!@child3.is_leaf?, 'Should not be a leaf')
734
736
 
735
- assert_equal(1, @child3.node_height, "The subtree at Child 3 should have a height of 1")
736
- for child in [@child1, @child2, @child4]
737
+ assert_equal(1, @child3.node_height, 'The subtree at Child 3 should have a height of 1')
738
+ [@child1, @child2, @child4].each { |child|
737
739
  assert_equal(0, child.node_height, "The subtree at #{child.name} should have a height of 0")
738
- end
740
+ }
739
741
 
740
742
  result_array = @root.children
741
743
 
742
- assert_equal(3, result_array.length, "Should have three direct children")
743
- assert(!result_array.include?(@root), "Should not have root")
744
- assert_equal(result_array[0], @child1, "Should have child 1")
745
- assert_equal(result_array[1], @child2, "Should have child 2")
746
- assert_equal(result_array[2], @child3, "Should have child 3")
747
- assert(!result_array.include?(@child4), "Should not have child 4")
744
+ assert_equal(3, result_array.length, 'Should have three direct children')
745
+ assert(!result_array.include?(@root), 'Should not have root')
746
+ assert_equal(result_array[0], @child1, 'Should have child 1')
747
+ assert_equal(result_array[1], @child2, 'Should have child 2')
748
+ assert_equal(result_array[2], @child3, 'Should have child 3')
749
+ assert(!result_array.include?(@child4), 'Should not have child 4')
748
750
 
749
751
  # Lets try the block version of the method.
750
752
  result_array.clear
751
753
  result = @root.children {|child| result_array << child}
752
754
  assert_equal(@root, result)
753
755
  result_array.length
754
- assert_equal(3, result_array.length, "Should have three children")
755
- assert_equal(result_array[0], @child1, "Should have child 1")
756
- assert_equal(result_array[1], @child2, "Should have child 2")
757
- assert_equal(result_array[2], @child3, "Should have child 3")
758
- assert(!result_array.include?(@child4), "Should not have child 4")
756
+ assert_equal(3, result_array.length, 'Should have three children')
757
+ assert_equal(result_array[0], @child1, 'Should have child 1')
758
+ assert_equal(result_array[1], @child2, 'Should have child 2')
759
+ assert_equal(result_array[2], @child3, 'Should have child 3')
760
+ assert(!result_array.include?(@child4), 'Should not have child 4')
759
761
 
760
762
  end
761
763
 
@@ -764,7 +766,7 @@ module TestTree
764
766
  setup_test_tree
765
767
 
766
768
  assert_equal(@child1, @root.first_child, "Root's first child is Child1")
767
- assert_nil(@child1.first_child, "Child1 does not have any children")
769
+ assert_nil(@child1.first_child, 'Child1 does not have any children')
768
770
  assert_equal(@child4, @child3.first_child, "Child3's first child is Child4")
769
771
  end
770
772
 
@@ -773,7 +775,7 @@ module TestTree
773
775
  setup_test_tree
774
776
 
775
777
  assert_equal(@child3, @root.last_child, "Root's last child is Child3")
776
- assert_nil(@child1.last_child, "Child1 does not have any children")
778
+ assert_nil(@child1.last_child, 'Child1 does not have any children')
777
779
  assert_equal(@child4, @child3.last_child, "Child3's last child is Child4")
778
780
  end
779
781
 
@@ -781,43 +783,43 @@ module TestTree
781
783
  def test_find
782
784
  setup_test_tree
783
785
  found_node = @root.find { |node| node == @child2}
784
- assert_same(@child2, found_node, "The node should be Child 2")
786
+ assert_same(@child2, found_node, 'The node should be Child 2')
785
787
 
786
788
  found_node = @root.find { |node| node == @child4}
787
- assert_same(@child4, found_node, "The node should be Child 4")
789
+ assert_same(@child4, found_node, 'The node should be Child 4')
788
790
 
789
- found_node = @root.find { |node| node.name == "Child4" }
790
- assert_same(@child4, found_node, "The node should be Child 4")
791
- found_node = @root.find { |node| node.name == "NOT PRESENT" }
792
- assert_nil(found_node, "The node should not be found")
791
+ found_node = @root.find { |node| node.name == 'Child4' }
792
+ assert_same(@child4, found_node, 'The node should be Child 4')
793
+ found_node = @root.find { |node| node.name == 'NOT PRESENT' }
794
+ assert_nil(found_node, 'The node should not be found')
793
795
  end
794
796
 
795
797
  # Test the parentage method.
796
798
  def test_parentage
797
799
  setup_test_tree
798
800
 
799
- assert_nil(@root.parentage, "Root does not have any parentage")
800
- assert_equal([@root], @child1.parentage, "Child1 has Root as its parent")
801
- assert_equal([@child3, @root], @child4.parentage, "Child4 has Child3 and Root as ancestors")
801
+ assert_nil(@root.parentage, 'Root does not have any parentage')
802
+ assert_equal([@root], @child1.parentage, 'Child1 has Root as its parent')
803
+ assert_equal([@child3, @root], @child4.parentage, 'Child4 has Child3 and Root as ancestors')
802
804
  end
803
805
 
804
806
  # Test the each method.
805
807
  def test_each
806
808
  setup_test_tree
807
809
 
808
- assert(@root.has_children?, "Should have children")
809
- assert_equal(5, @root.size, "Should have five nodes")
810
- assert(@child3.has_children?, "Should have children")
810
+ assert(@root.has_children?, 'Should have children')
811
+ assert_equal(5, @root.size, 'Should have five nodes')
812
+ assert(@child3.has_children?, 'Should have children')
811
813
 
812
814
  nodes = []
813
815
  @root.each { |node| nodes << node }
814
816
 
815
- assert_equal(5, nodes.length, "Should have FIVE NODES")
816
- assert(nodes.include?(@root), "Should have root")
817
- assert(nodes.include?(@child1), "Should have child 1")
818
- assert(nodes.include?(@child2), "Should have child 2")
819
- assert(nodes.include?(@child3), "Should have child 3")
820
- assert(nodes.include?(@child4), "Should have child 4")
817
+ assert_equal(5, nodes.length, 'Should have FIVE NODES')
818
+ assert(nodes.include?(@root), 'Should have root')
819
+ assert(nodes.include?(@child1), 'Should have child 1')
820
+ assert(nodes.include?(@child2), 'Should have child 2')
821
+ assert(nodes.include?(@child3), 'Should have child 3')
822
+ assert(nodes.include?(@child4), 'Should have child 4')
821
823
  end
822
824
 
823
825
  # Test the each_leaf method.
@@ -827,23 +829,23 @@ module TestTree
827
829
  result_array = []
828
830
  result = @root.each_leaf { |node| result_array << node }
829
831
  assert_equal(@root, result)
830
- assert_equal(3, result_array.length, "Should have THREE LEAF NODES")
831
- assert(!result_array.include?(@root), "Should not have root")
832
- assert(result_array.include?(@child1), "Should have child 1")
833
- assert(result_array.include?(@child2), "Should have child 2")
834
- assert(!result_array.include?(@child3), "Should not have child 3")
835
- assert(result_array.include?(@child4), "Should have child 4")
832
+ assert_equal(3, result_array.length, 'Should have THREE LEAF NODES')
833
+ assert(!result_array.include?(@root), 'Should not have root')
834
+ assert(result_array.include?(@child1), 'Should have child 1')
835
+ assert(result_array.include?(@child2), 'Should have child 2')
836
+ assert(!result_array.include?(@child3), 'Should not have child 3')
837
+ assert(result_array.include?(@child4), 'Should have child 4')
836
838
 
837
839
  # Now lets try without the block
838
840
  result_array.clear
839
841
  result_array = @root.each_leaf
840
842
  assert_equal(Array, result_array.class)
841
- assert_equal(3, result_array.length, "Should have THREE LEAF NODES")
842
- assert(!result_array.include?(@root), "Should not have root")
843
- assert(result_array.include?(@child1), "Should have child 1")
844
- assert(result_array.include?(@child2), "Should have child 2")
845
- assert(!result_array.include?(@child3), "Should not have child 3")
846
- assert(result_array.include?(@child4), "Should have child 4")
843
+ assert_equal(3, result_array.length, 'Should have THREE LEAF NODES')
844
+ assert(!result_array.include?(@root), 'Should not have root')
845
+ assert(result_array.include?(@child1), 'Should have child 1')
846
+ assert(result_array.include?(@child2), 'Should have child 2')
847
+ assert(!result_array.include?(@child3), 'Should not have child 3')
848
+ assert(result_array.include?(@child4), 'Should have child 4')
847
849
 
848
850
  end
849
851
 
@@ -852,20 +854,20 @@ module TestTree
852
854
  setup_test_tree
853
855
 
854
856
  assert_nil(@root.parent, "Root's parent should be nil")
855
- assert_equal(@root, @child1.parent, "Parent should be root")
856
- assert_equal(@root, @child3.parent, "Parent should be root")
857
- assert_equal(@child3, @child4.parent, "Parent should be child3")
858
- assert_equal(@root, @child4.parent.parent, "Parent should be root")
857
+ assert_equal(@root, @child1.parent, 'Parent should be root')
858
+ assert_equal(@root, @child3.parent, 'Parent should be root')
859
+ assert_equal(@child3, @child4.parent, 'Parent should be child3')
860
+ assert_equal(@root, @child4.parent.parent, 'Parent should be root')
859
861
  end
860
862
 
861
863
  # Test the [] method.
862
864
  def test_indexed_access
863
865
  setup_test_tree
864
866
 
865
- assert_equal(@child1, @root[0], "Should be the first child")
866
- assert_equal(@child4, @root[2][0], "Should be the grandchild")
867
- assert_nil(@root["TEST"], "Should be nil")
868
- assert_nil(@root[99], "Should be nil")
867
+ assert_equal(@child1, @root[0], 'Should be the first child')
868
+ assert_equal(@child4, @root[2][0], 'Should be the grandchild')
869
+ assert_nil(@root['TEST'], 'Should be nil')
870
+ assert_nil(@root[99], 'Should be nil')
869
871
  assert_raise(ArgumentError) { @root[nil] }
870
872
  end
871
873
 
@@ -879,11 +881,11 @@ module TestTree
879
881
  # Tests the binary dumping mechanism with an Object content node
880
882
  def test_marshal_dump
881
883
  # Setup Test Data
882
- test_root = Tree::TreeNode.new("ROOT", "Root Node")
883
- test_content = {"KEY1" => "Value1", "KEY2" => "Value2" }
884
- test_child = Tree::TreeNode.new("Child", test_content)
885
- test_content2 = ["AValue1", "AValue2", "AValue3"]
886
- test_grand_child = Tree::TreeNode.new("Grand Child 1", test_content2)
884
+ test_root = Tree::TreeNode.new('ROOT', 'Root Node')
885
+ test_content = {'KEY1' => 'Value1', 'KEY2' => 'Value2'}
886
+ test_child = Tree::TreeNode.new('Child', test_content)
887
+ test_content2 = %w(AValue1 AValue2 AValue3)
888
+ test_grand_child = Tree::TreeNode.new('Grand Child 1', test_content2)
887
889
  test_root << test_child << test_grand_child
888
890
 
889
891
  # Perform the test operation
@@ -891,30 +893,30 @@ module TestTree
891
893
  new_root = Marshal.load(data) # And unmarshal
892
894
 
893
895
  # Test the root node
894
- assert_equal(test_root.name, new_root.name, "Must identify as ROOT")
896
+ assert_equal(test_root.name, new_root.name, 'Must identify as ROOT')
895
897
  assert_equal(test_root.content, new_root.content, "Must have root's content")
896
- assert(new_root.is_root?, "Must be the ROOT node")
897
- assert(new_root.has_children?, "Must have a child node")
898
+ assert(new_root.is_root?, 'Must be the ROOT node')
899
+ assert(new_root.has_children?, 'Must have a child node')
898
900
 
899
901
  # Test the child node
900
902
  new_child = new_root[test_child.name]
901
- assert_equal(test_child.name, new_child.name, "Must have child 1")
902
- assert(new_child.has_content?, "Child must have content")
903
- assert(new_child.is_only_child?, "Child must be the only child")
903
+ assert_equal(test_child.name, new_child.name, 'Must have child 1')
904
+ assert(new_child.has_content?, 'Child must have content')
905
+ assert(new_child.is_only_child?, 'Child must be the only child')
904
906
 
905
907
  new_child_content = new_child.content
906
908
  assert_equal(Hash, new_child_content.class, "Class of child's content should be a hash")
907
- assert_equal(test_child.content.size, new_child_content.size, "The content should have same size")
909
+ assert_equal(test_child.content.size, new_child_content.size, 'The content should have same size')
908
910
 
909
911
  # Test the grand-child node
910
912
  new_grand_child = new_child[test_grand_child.name]
911
- assert_equal(test_grand_child.name, new_grand_child.name, "Must have grand child")
912
- assert(new_grand_child.has_content?, "Grand-child must have content")
913
- assert(new_grand_child.is_only_child?, "Grand-child must be the only child")
913
+ assert_equal(test_grand_child.name, new_grand_child.name, 'Must have grand child')
914
+ assert(new_grand_child.has_content?, 'Grand-child must have content')
915
+ assert(new_grand_child.is_only_child?, 'Grand-child must be the only child')
914
916
 
915
917
  new_grand_child_content = new_grand_child.content
916
918
  assert_equal(Array, new_grand_child_content.class, "Class of grand-child's content should be an Array")
917
- assert_equal(test_grand_child.content.size, new_grand_child_content.size, "The content should have same size")
919
+ assert_equal(test_grand_child.content.size, new_grand_child_content.size, 'The content should have same size')
918
920
  end
919
921
 
920
922
  # marshal_load and marshal_dump are symmetric methods
@@ -925,31 +927,33 @@ module TestTree
925
927
  def test_collect
926
928
  setup_test_tree
927
929
  collect_array = @root.collect do |node|
928
- node.content = "abc"
930
+ node.content = 'abc'
929
931
  node
930
932
  end
931
- collect_array.each {|node| assert_equal("abc", node.content, "Should be 'abc'")}
933
+ collect_array.each {|node| assert_equal('abc', node.content, "Should be 'abc'")}
932
934
  end
933
935
 
934
936
  # Test freezing the tree
935
937
  def test_freeze_tree_bang
936
938
  setup_test_tree
937
939
 
938
- @root.content = "ABC"
939
- assert_equal("ABC", @root.content, "Content should be 'ABC'")
940
+ @root.content = 'ABC'
941
+ assert_equal('ABC', @root.content, "Content should be 'ABC'")
940
942
  @root.freeze_tree!
941
943
  # Note: The error raised here depends on the Ruby version.
942
944
  # For Ruby > 1.9, RuntimeError is raised
943
945
  # For Ruby ~ 1.8, TypeError is raised
944
- assert_raise(RuntimeError, TypeError) {@root.content = "123"}
945
- assert_raise(RuntimeError, TypeError) {@root[0].content = "123"}
946
+ assert_raise(RuntimeError, TypeError) {@root.content = '123'
947
+ }
948
+ assert_raise(RuntimeError, TypeError) {@root[0].content = '123'
949
+ }
946
950
  end
947
951
 
948
- # Test whether the content is accesible
952
+ # Test whether the content is accessible
949
953
  def test_content
950
- pers = Person::new("John", "Doe")
951
- @root.content = pers
952
- assert_same(pers, @root.content, "Content should be the same")
954
+ person = Person::new('John', 'Doe')
955
+ @root.content = person
956
+ assert_same(person, @root.content, 'Content should be the same')
953
957
  end
954
958
 
955
959
  # Test the depth computation algorithm. Note that this is an incorrect computation and actually returns height+1
@@ -957,9 +961,9 @@ module TestTree
957
961
  def test_depth
958
962
  begin
959
963
  require 'structured_warnings'
960
- assert_warn(DeprecatedMethodWarning) { do_deprecated_depth }
964
+ assert_warn(StructuredWarnings::DeprecatedMethodWarning) { do_deprecated_depth }
961
965
  rescue LoadError
962
- # Since the structued_warnings package is not present, we revert to good old Kernel#warn behavior.
966
+ # Since the structured_warnings package is not present, we revert to good old Kernel#warn behavior.
963
967
  do_deprecated_depth
964
968
  end
965
969
  end
@@ -969,17 +973,17 @@ module TestTree
969
973
  assert_equal(1, @root.depth, "A single node's depth is 1")
970
974
 
971
975
  @root << @child1
972
- assert_equal(2, @root.depth, "This should be of depth 2")
976
+ assert_equal(2, @root.depth, 'This should be of depth 2')
973
977
 
974
978
  @root << @child2
975
- assert_equal(2, @root.depth, "This should be of depth 2")
979
+ assert_equal(2, @root.depth, 'This should be of depth 2')
976
980
 
977
981
  @child2 << @child3
978
- assert_equal(3, @root.depth, "This should be of depth 3")
979
- assert_equal(2, @child2.depth, "This should be of depth 2")
982
+ assert_equal(3, @root.depth, 'This should be of depth 3')
983
+ assert_equal(2, @child2.depth, 'This should be of depth 2')
980
984
 
981
985
  @child3 << @child4
982
- assert_equal(4, @root.depth, "This should be of depth 4")
986
+ assert_equal(4, @root.depth, 'This should be of depth 4')
983
987
  end
984
988
 
985
989
  # Test the height computation algorithm
@@ -987,23 +991,23 @@ module TestTree
987
991
  assert_equal(0, @root.node_height, "A single node's height is 0")
988
992
 
989
993
  @root << @child1
990
- assert_equal(1, @root.node_height, "This should be of height 1")
991
- assert_equal(0, @child1.node_height, "This should be of height 0")
994
+ assert_equal(1, @root.node_height, 'This should be of height 1')
995
+ assert_equal(0, @child1.node_height, 'This should be of height 0')
992
996
 
993
997
  @root << @child2
994
- assert_equal(1, @root.node_height, "This should be of height 1")
995
- assert_equal(0, @child2.node_height, "This should be of height 0")
998
+ assert_equal(1, @root.node_height, 'This should be of height 1')
999
+ assert_equal(0, @child2.node_height, 'This should be of height 0')
996
1000
 
997
1001
  @child2 << @child3
998
- assert_equal(2, @root.node_height, "This should be of height 2")
999
- assert_equal(1, @child2.node_height, "This should be of height 1")
1000
- assert_equal(0, @child3.node_height, "This should be of height 0")
1002
+ assert_equal(2, @root.node_height, 'This should be of height 2')
1003
+ assert_equal(1, @child2.node_height, 'This should be of height 1')
1004
+ assert_equal(0, @child3.node_height, 'This should be of height 0')
1001
1005
 
1002
1006
  @child3 << @child4
1003
- assert_equal(3, @root.node_height, "This should be of height 3")
1004
- assert_equal(2, @child2.node_height, "This should be of height 2")
1005
- assert_equal(1, @child3.node_height, "This should be of height 1")
1006
- assert_equal(0, @child4.node_height, "This should be of height 0")
1007
+ assert_equal(3, @root.node_height, 'This should be of height 3')
1008
+ assert_equal(2, @child2.node_height, 'This should be of height 2')
1009
+ assert_equal(1, @child3.node_height, 'This should be of height 1')
1010
+ assert_equal(0, @child4.node_height, 'This should be of height 0')
1007
1011
  end
1008
1012
 
1009
1013
  # Test the depth computation algorithm. Note that this is the correct depth computation. The original
@@ -1013,29 +1017,29 @@ module TestTree
1013
1017
 
1014
1018
  setup_test_tree
1015
1019
 
1016
- for child in [@child1, @child2, @child3]
1020
+ [@child1, @child2, @child3].each { |child|
1017
1021
  assert_equal(1, child.node_depth, "Node #{child.name} should have depth 1")
1018
- end
1022
+ }
1019
1023
 
1020
- assert_equal(2, @child4.node_depth, "Child 4 should have depth 2")
1024
+ assert_equal(2, @child4.node_depth, 'Child 4 should have depth 2')
1021
1025
 
1022
1026
  @root << @child5 << @child3
1023
- assert_equal(3, @child4.node_depth, "Child 4 should have depth 3 after Child 5 inserted above")
1027
+ assert_equal(3, @child4.node_depth, 'Child 4 should have depth 3 after Child 5 inserted above')
1024
1028
  end
1025
1029
 
1026
1030
  # Test the level method. Since this is an alias of node_depth, we just test for equivalence
1027
1031
  def test_level
1028
1032
  assert_equal(0, @root.level, "A root node's level is 0")
1029
1033
 
1030
- assert_equal(@root.node_depth, @root.level, "Level and depth should be the same")
1034
+ assert_equal(@root.node_depth, @root.level, 'Level and depth should be the same')
1031
1035
 
1032
1036
  setup_test_tree
1033
- for child in [@child1, @child2, @child3]
1037
+ [@child1, @child2, @child3].each { |child|
1034
1038
  assert_equal(1, child.level, "Node #{child.name} should have level 1")
1035
- assert_equal(@root.node_depth, @root.level, "Level and depth should be the same")
1036
- end
1039
+ assert_equal(@root.node_depth, @root.level, 'Level and depth should be the same')
1040
+ }
1037
1041
 
1038
- assert_equal(2, @child4.level, "Child 4 should have level 2")
1042
+ assert_equal(2, @child4.level, 'Child 4 should have level 2')
1039
1043
  end
1040
1044
 
1041
1045
  # Test the breadth computation algorithm
@@ -1043,29 +1047,29 @@ module TestTree
1043
1047
  assert_equal(1, @root.breadth, "A single node's breadth is 1")
1044
1048
 
1045
1049
  @root << @child1
1046
- assert_equal(1, @root.breadth, "This should be of breadth 1")
1050
+ assert_equal(1, @root.breadth, 'This should be of breadth 1')
1047
1051
 
1048
1052
  @root << @child2
1049
- assert_equal(2, @child1.breadth, "This should be of breadth 2")
1050
- assert_equal(2, @child2.breadth, "This should be of breadth 2")
1053
+ assert_equal(2, @child1.breadth, 'This should be of breadth 2')
1054
+ assert_equal(2, @child2.breadth, 'This should be of breadth 2')
1051
1055
 
1052
1056
  @root << @child3
1053
- assert_equal(3, @child1.breadth, "This should be of breadth 3")
1054
- assert_equal(3, @child2.breadth, "This should be of breadth 3")
1057
+ assert_equal(3, @child1.breadth, 'This should be of breadth 3')
1058
+ assert_equal(3, @child2.breadth, 'This should be of breadth 3')
1055
1059
 
1056
1060
  @child3 << @child4
1057
- assert_equal(1, @child4.breadth, "This should be of breadth 1")
1061
+ assert_equal(1, @child4.breadth, 'This should be of breadth 1')
1058
1062
  end
1059
1063
 
1060
1064
  # Test the breadth for each
1061
1065
  def test_breadth_each
1062
- j = Tree::TreeNode.new("j")
1063
- f = Tree::TreeNode.new("f")
1064
- k = Tree::TreeNode.new("k")
1065
- a = Tree::TreeNode.new("a")
1066
- d = Tree::TreeNode.new("d")
1067
- h = Tree::TreeNode.new("h")
1068
- z = Tree::TreeNode.new("z")
1066
+ j = Tree::TreeNode.new('j')
1067
+ f = Tree::TreeNode.new('f')
1068
+ k = Tree::TreeNode.new('k')
1069
+ a = Tree::TreeNode.new('a')
1070
+ d = Tree::TreeNode.new('d')
1071
+ h = Tree::TreeNode.new('h')
1072
+ z = Tree::TreeNode.new('z')
1069
1073
 
1070
1074
  # The expected order of response
1071
1075
  expected_array = [j,
@@ -1108,13 +1112,13 @@ module TestTree
1108
1112
 
1109
1113
  # Test the preordered_each method.
1110
1114
  def test_preordered_each
1111
- j = Tree::TreeNode.new("j")
1112
- f = Tree::TreeNode.new("f")
1113
- k = Tree::TreeNode.new("k")
1114
- a = Tree::TreeNode.new("a")
1115
- d = Tree::TreeNode.new("d")
1116
- h = Tree::TreeNode.new("h")
1117
- z = Tree::TreeNode.new("z")
1115
+ j = Tree::TreeNode.new('j')
1116
+ f = Tree::TreeNode.new('f')
1117
+ k = Tree::TreeNode.new('k')
1118
+ a = Tree::TreeNode.new('a')
1119
+ d = Tree::TreeNode.new('d')
1120
+ h = Tree::TreeNode.new('h')
1121
+ z = Tree::TreeNode.new('z')
1118
1122
 
1119
1123
  # The expected order of response
1120
1124
  expected_array = [j, f, a, d, h, k, z]
@@ -1147,13 +1151,13 @@ module TestTree
1147
1151
 
1148
1152
  # Test the postordered_each method.
1149
1153
  def test_postordered_each
1150
- j = Tree::TreeNode.new("j")
1151
- f = Tree::TreeNode.new("f")
1152
- k = Tree::TreeNode.new("k")
1153
- a = Tree::TreeNode.new("a")
1154
- d = Tree::TreeNode.new("d")
1155
- h = Tree::TreeNode.new("h")
1156
- z = Tree::TreeNode.new("z")
1154
+ j = Tree::TreeNode.new('j')
1155
+ f = Tree::TreeNode.new('f')
1156
+ k = Tree::TreeNode.new('k')
1157
+ a = Tree::TreeNode.new('a')
1158
+ d = Tree::TreeNode.new('d')
1159
+ h = Tree::TreeNode.new('h')
1160
+ z = Tree::TreeNode.new('z')
1157
1161
 
1158
1162
  # The expected order of response
1159
1163
  expected_array = [d, a, h, f, z, k, j]
@@ -1198,14 +1202,14 @@ module TestTree
1198
1202
  def test_detached_copy
1199
1203
  setup_test_tree
1200
1204
 
1201
- assert(@root.has_children?, "The root should have children")
1205
+ assert(@root.has_children?, 'The root should have children')
1202
1206
  copy_of_root = @root.detached_copy
1203
- assert(!copy_of_root.has_children?, "The copy should not have children")
1204
- assert_equal(@root.name, copy_of_root.name, "The names should be equal")
1207
+ assert(!copy_of_root.has_children?, 'The copy should not have children')
1208
+ assert_equal(@root.name, copy_of_root.name, 'The names should be equal')
1205
1209
 
1206
1210
  # Try the same test with a child node
1207
- assert(!@child3.is_root?, "Child 3 is not a root")
1208
- assert(@child3.has_children?, "Child 3 has children")
1211
+ assert(!@child3.is_root?, 'Child 3 is not a root')
1212
+ assert(@child3.has_children?, 'Child 3 has children')
1209
1213
  copy_of_child3 = @child3.detached_copy
1210
1214
  assert(copy_of_child3.is_root?, "Child 3's copy is a root")
1211
1215
  assert(!copy_of_child3.has_children?, "Child 3's copy does not have children")
@@ -1215,61 +1219,61 @@ module TestTree
1215
1219
  def test_detached_subtree_copy
1216
1220
  setup_test_tree
1217
1221
 
1218
- assert(@root.has_children?, "The root should have children.")
1222
+ assert(@root.has_children?, 'The root should have children.')
1219
1223
  tree_copy = @root.detached_subtree_copy
1220
1224
 
1221
- assert_equal(@root.name, tree_copy.name, "The names should be equal.")
1222
- assert_not_equal(@root.object_id, tree_copy.object_id, "Object_ids should differ.")
1223
- assert(tree_copy.is_root?, "Copied root should be a root node.")
1224
- assert(tree_copy.has_children?, "Copied tree should have children.")
1225
- assert_equal(tree_copy.children.count, @root.children.count, "Copied tree and the original tree should have same number of children.")
1225
+ assert_equal(@root.name, tree_copy.name, 'The names should be equal.')
1226
+ assert_not_equal(@root.object_id, tree_copy.object_id, 'Object_ids should differ.')
1227
+ assert(tree_copy.is_root?, 'Copied root should be a root node.')
1228
+ assert(tree_copy.has_children?, 'Copied tree should have children.')
1229
+ assert_equal(tree_copy.children.count, @root.children.count, 'Copied tree and the original tree should have same number of children.')
1226
1230
 
1227
- assert_equal(tree_copy[0].name, @child1.name, "The names of Child1 (original and copy) should be same.")
1228
- assert_not_equal(tree_copy[0].object_id, @child1.object_id, "Child1 Object_ids (original and copy) should differ.")
1229
- assert(!tree_copy[0].is_root?, "Child1 copied should not be root.")
1230
- assert(!tree_copy[0].has_children?, "Child1 copied should not have children.")
1231
+ assert_equal(tree_copy[0].name, @child1.name, 'The names of Child1 (original and copy) should be same.')
1232
+ assert_not_equal(tree_copy[0].object_id, @child1.object_id, 'Child1 Object_ids (original and copy) should differ.')
1233
+ assert(!tree_copy[0].is_root?, 'Child1 copied should not be root.')
1234
+ assert(!tree_copy[0].has_children?, 'Child1 copied should not have children.')
1231
1235
 
1232
- assert_equal(tree_copy[1].name, @child2.name, "The names of Child2 (original and copy) should be same.")
1233
- assert_not_equal(tree_copy[1].object_id, @child2.object_id, "Child2 Object_ids (original and copy) should differ.")
1234
- assert(!tree_copy[1].is_root?, "Child2 copied should not be root.")
1235
- assert(!tree_copy[1].has_children?, "Child2 copied should not have children.")
1236
+ assert_equal(tree_copy[1].name, @child2.name, 'The names of Child2 (original and copy) should be same.')
1237
+ assert_not_equal(tree_copy[1].object_id, @child2.object_id, 'Child2 Object_ids (original and copy) should differ.')
1238
+ assert(!tree_copy[1].is_root?, 'Child2 copied should not be root.')
1239
+ assert(!tree_copy[1].has_children?, 'Child2 copied should not have children.')
1236
1240
 
1237
- assert_equal(tree_copy[2].name, @child3.name, "The names of Child3 (original and copy) should be same.")
1238
- assert_not_equal(tree_copy[2].object_id, @child3.object_id, "Child3 Object_ids (original and copy) should differ.")
1239
- assert(!tree_copy[2].is_root?, "Child3 copied should not be root.")
1240
- assert(tree_copy[2].has_children?, "Child3 copied should have children.")
1241
+ assert_equal(tree_copy[2].name, @child3.name, 'The names of Child3 (original and copy) should be same.')
1242
+ assert_not_equal(tree_copy[2].object_id, @child3.object_id, 'Child3 Object_ids (original and copy) should differ.')
1243
+ assert(!tree_copy[2].is_root?, 'Child3 copied should not be root.')
1244
+ assert(tree_copy[2].has_children?, 'Child3 copied should have children.')
1241
1245
 
1242
- assert_equal(tree_copy[2][0].name, @child4.name, "The names of Child4 (original and copy) should be same.")
1243
- assert_not_equal(tree_copy[2][0].object_id, @child4.object_id, "Child4 Object_ids (original and copy) should differ.")
1244
- assert(!tree_copy[2][0].is_root?, "Child4 copied should not be root.")
1245
- assert(!tree_copy[2][0].has_children?, "Child4 copied should not have children.")
1246
+ assert_equal(tree_copy[2][0].name, @child4.name, 'The names of Child4 (original and copy) should be same.')
1247
+ assert_not_equal(tree_copy[2][0].object_id, @child4.object_id, 'Child4 Object_ids (original and copy) should differ.')
1248
+ assert(!tree_copy[2][0].is_root?, 'Child4 copied should not be root.')
1249
+ assert(!tree_copy[2][0].has_children?, 'Child4 copied should not have children.')
1246
1250
  end
1247
1251
 
1248
1252
  # Test the has_children? method.
1249
1253
  def test_has_children_eh
1250
1254
  setup_test_tree
1251
- assert(@root.has_children?, "The Root node MUST have children")
1255
+ assert(@root.has_children?, 'The Root node MUST have children')
1252
1256
  end
1253
1257
 
1254
1258
  # test the is_leaf? method.
1255
1259
  def test_is_leaf_eh
1256
1260
  setup_test_tree
1257
- assert(!@child3.is_leaf?, "Child 3 is not a leaf node")
1258
- assert(@child4.is_leaf?, "Child 4 is a leaf node")
1261
+ assert(!@child3.is_leaf?, 'Child 3 is not a leaf node')
1262
+ assert(@child4.is_leaf?, 'Child 4 is a leaf node')
1259
1263
  end
1260
1264
 
1261
1265
  # Test the is_root? method.
1262
1266
  def test_is_root_eh
1263
1267
  setup_test_tree
1264
- assert(@root.is_root?, "The ROOT node must respond as the root node")
1268
+ assert(@root.is_root?, 'The ROOT node must respond as the root node')
1265
1269
  end
1266
1270
 
1267
1271
  # Test the content= method.
1268
1272
  def test_content_equals
1269
1273
  @root.content = nil
1270
1274
  assert_nil(@root.content, "Root's content should be nil")
1271
- @root.content = "ABCD"
1272
- assert_equal("ABCD", @root.content, "Root's content should now be 'ABCD'")
1275
+ @root.content = 'dummy content'
1276
+ assert_equal('dummy content', @root.content, "Root's content should now be 'dummy content'")
1273
1277
  end
1274
1278
 
1275
1279
  # Test the size method.
@@ -1286,10 +1290,10 @@ module TestTree
1286
1290
  @root << @child1
1287
1291
  @root << @child2
1288
1292
  @root << @child3 << @child4
1289
- assert_not_nil(@root['Child1'], "Child 1 should have been added to Root")
1290
- assert_not_nil(@root['Child2'], "Child 2 should have been added to Root")
1291
- assert_not_nil(@root['Child3'], "Child 3 should have been added to Root")
1292
- assert_not_nil(@child3['Child4'], "Child 4 should have been added to Child3")
1293
+ assert_not_nil(@root['Child1'], 'Child 1 should have been added to Root')
1294
+ assert_not_nil(@root['Child2'], 'Child 2 should have been added to Root')
1295
+ assert_not_nil(@root['Child3'], 'Child 3 should have been added to Root')
1296
+ assert_not_nil(@child3['Child4'], 'Child 4 should have been added to Child3')
1293
1297
  end
1294
1298
 
1295
1299
  # Test the [] method.
@@ -1298,19 +1302,19 @@ module TestTree
1298
1302
 
1299
1303
  @root << @child1
1300
1304
  @root << @child2
1301
- assert_equal(@child1.name, @root['Child1'].name, "Child 1 should be returned")
1302
- assert_equal(@child1.name, @root[0].name, "Child 1 should be returned")
1303
- assert_equal(@child1.name, @root[-2].name, "Child 1 should be returned") # Negative access also works
1304
- assert_equal(@child1.name, @root[-(@root.children.size)].name, "Child 1 should be returned") # Negative access also works
1305
+ assert_equal(@child1.name, @root['Child1'].name, 'Child 1 should be returned')
1306
+ assert_equal(@child1.name, @root[0].name, 'Child 1 should be returned')
1307
+ assert_equal(@child1.name, @root[-2].name, 'Child 1 should be returned') # Negative access also works
1308
+ assert_equal(@child1.name, @root[-(@root.children.size)].name, 'Child 1 should be returned') # Negative access also works
1305
1309
 
1306
- assert_equal(@child2.name, @root['Child2'].name, "Child 2 should be returned")
1307
- assert_equal(@child2.name, @root[1].name, "Child 2 should be returned")
1308
- assert_equal(@child2.name, @root[-1].name, "Child 2 should be returned") # Negative access also works
1310
+ assert_equal(@child2.name, @root['Child2'].name, 'Child 2 should be returned')
1311
+ assert_equal(@child2.name, @root[1].name, 'Child 2 should be returned')
1312
+ assert_equal(@child2.name, @root[-1].name, 'Child 2 should be returned') # Negative access also works
1309
1313
 
1310
- assert_nil(@root['Some Random Name'], "Should return nil")
1311
- assert_nil(@root[99], "Should return nil")
1312
- assert_nil(@root[-(@root.children.size+1)], "Should return nil")
1313
- assert_nil(@root[-3], "Should return nil")
1314
+ assert_nil(@root['Some Random Name'], 'Should return nil')
1315
+ assert_nil(@root[99], 'Should return nil')
1316
+ assert_nil(@root[-(@root.children.size+1)], 'Should return nil')
1317
+ assert_nil(@root[-3], 'Should return nil')
1314
1318
  end
1315
1319
 
1316
1320
  # Test the in_degree method.
@@ -1340,18 +1344,18 @@ module TestTree
1340
1344
  setup_test_tree
1341
1345
 
1342
1346
  expected_json = {
1343
- "name" => "ROOT",
1344
- "content" => "Root Node",
1345
- JSON.create_id => "Tree::TreeNode",
1346
- "children" => [
1347
- {"name" => "Child1", "content" => "Child Node 1", JSON.create_id => "Tree::TreeNode"},
1348
- {"name" => "Child2", "content" => "Child Node 2", JSON.create_id => "Tree::TreeNode"},
1347
+ 'name' => 'ROOT',
1348
+ 'content' => 'Root Node',
1349
+ JSON.create_id => 'Tree::TreeNode',
1350
+ 'children' => [
1351
+ {'name' => 'Child1', 'content' => 'Child Node 1', JSON.create_id => 'Tree::TreeNode'},
1352
+ {'name' => 'Child2', 'content' => 'Child Node 2', JSON.create_id => 'Tree::TreeNode'},
1349
1353
  {
1350
- "name" => "Child3",
1351
- "content" => "Child Node 3",
1352
- JSON.create_id => "Tree::TreeNode",
1353
- "children" => [
1354
- {"name" => "Child4", "content" => "Grand Child 1", JSON.create_id => "Tree::TreeNode"}
1354
+ 'name' => 'Child3',
1355
+ 'content' => 'Child Node 3',
1356
+ JSON.create_id => 'Tree::TreeNode',
1357
+ 'children' => [
1358
+ {'name' => 'Child4', 'content' => 'Grand Child 1', JSON.create_id => 'Tree::TreeNode'}
1355
1359
  ]
1356
1360
  }
1357
1361
  ]
@@ -1362,18 +1366,18 @@ module TestTree
1362
1366
 
1363
1367
  def test_json_deserialization
1364
1368
  tree_as_json = {
1365
- "name" => "ROOT",
1366
- "content" => "Root Node",
1367
- JSON.create_id => "Tree::TreeNode",
1368
- "children" => [
1369
- {"name" => "Child1", "content" => "Child Node 1", JSON.create_id => "Tree::TreeNode"},
1370
- {"name" => "Child2", "content" => "Child Node 2", JSON.create_id => "Tree::TreeNode"},
1369
+ 'name' => 'ROOT',
1370
+ 'content' => 'Root Node',
1371
+ JSON.create_id => 'Tree::TreeNode',
1372
+ 'children' => [
1373
+ {'name' => 'Child1', 'content' => 'Child Node 1', JSON.create_id => 'Tree::TreeNode'},
1374
+ {'name' => 'Child2', 'content' => 'Child Node 2', JSON.create_id => 'Tree::TreeNode'},
1371
1375
  {
1372
- "name" => "Child3",
1373
- "content" => "Child Node 3",
1374
- JSON.create_id => "Tree::TreeNode",
1375
- "children" => [
1376
- {"name" => "Child4", "content" => "Grand Child 1", JSON.create_id => "Tree::TreeNode"}
1376
+ 'name' => 'Child3',
1377
+ 'content' => 'Child Node 3',
1378
+ JSON.create_id => 'Tree::TreeNode',
1379
+ 'children' => [
1380
+ {'name' => 'Child4', 'content' => 'Grand Child 1', JSON.create_id => 'Tree::TreeNode'}
1377
1381
  ]
1378
1382
  }
1379
1383
  ]
@@ -1381,30 +1385,30 @@ module TestTree
1381
1385
 
1382
1386
  tree = JSON.parse(tree_as_json, :create_additions => true)
1383
1387
 
1384
- assert_equal(@root.name, tree.root.name, "Root should be returned")
1385
- assert_equal(@child1.name, tree[0].name, "Child 1 should be returned")
1386
- assert_equal(@child2.name, tree[1].name, "Child 2 should be returned")
1387
- assert_equal(@child3.name, tree[2].name, "Child 3 should be returned")
1388
- assert_equal(@child4.name, tree[2][0].name, "Grand Child 1 should be returned")
1388
+ assert_equal(@root.name, tree.root.name, 'Root should be returned')
1389
+ assert_equal(@child1.name, tree[0].name, 'Child 1 should be returned')
1390
+ assert_equal(@child2.name, tree[1].name, 'Child 2 should be returned')
1391
+ assert_equal(@child3.name, tree[2].name, 'Child 3 should be returned')
1392
+ assert_equal(@child4.name, tree[2][0].name, 'Grand Child 1 should be returned')
1389
1393
  end
1390
1394
 
1391
- def test_json_roundtrip
1392
- root_node = Tree::TreeNode.new("RTROOT", "Root Content")
1393
- root_node << Tree::TreeNode.new("RTCHILD1", "Child1 Content") << Tree::TreeNode.new("RTGRANDCHILD1", "GrandChild1 Content")
1394
- root_node << Tree::TreeNode.new("RTCHILD2", "Child2 Content")
1395
+ def test_json_round_trip
1396
+ root_node = Tree::TreeNode.new('ROOT', 'Root Content')
1397
+ root_node << Tree::TreeNode.new('CHILD1', 'Child1 Content') << Tree::TreeNode.new('GRAND_CHILD1', 'GrandChild1 Content')
1398
+ root_node << Tree::TreeNode.new('CHILD2', 'Child2 Content')
1395
1399
 
1396
1400
  j = root_node.to_json
1397
1401
 
1398
1402
  k = JSON.parse(j, :create_additions => true)
1399
1403
 
1400
- assert_equal(k.name, root_node.name, "Root should be returned")
1401
- assert_equal(k[0].name, root_node[0].name, "Child 1 should be returned")
1402
- assert_equal(k[0][0].name, root_node[0][0].name, "Grand Child 1 should be returned")
1403
- assert_equal(k[1].name, root_node[1].name, "Child 2 should be returned")
1404
+ assert_equal(k.name, root_node.name, 'Root should be returned')
1405
+ assert_equal(k[0].name, root_node[0].name, 'Child 1 should be returned')
1406
+ assert_equal(k[0][0].name, root_node[0][0].name, 'Grand Child 1 should be returned')
1407
+ assert_equal(k[1].name, root_node[1].name, 'Child 2 should be returned')
1404
1408
  end
1405
1409
 
1406
1410
  # Test the old CamelCase method names
1407
- def test_old_camelCase_method_names
1411
+ def test_old_camel_case_names
1408
1412
  setup_test_tree
1409
1413
 
1410
1414
  meth_names_to_test = %w{isRoot? isLeaf? hasContent?
@@ -1415,19 +1419,20 @@ module TestTree
1415
1419
 
1416
1420
  require 'structured_warnings'
1417
1421
 
1418
- DeprecatedMethodWarning.disable do
1422
+ StructuredWarnings::DeprecatedMethodWarning.disable do
1423
+ # noinspection RubyResolve
1419
1424
  assert(@root.isRoot?) # Test if the original method is really called
1420
1425
  end
1421
1426
 
1422
1427
  meth_names_to_test.each do |meth_name|
1423
- assert_warn(DeprecatedMethodWarning) {@root.send(meth_name)}
1428
+ assert_warn(StructuredWarnings::DeprecatedMethodWarning) {@root.send(meth_name)}
1424
1429
  end
1425
1430
 
1426
1431
  # Special Case for printTree to avoid putting stuff on the STDOUT during the unit test.
1427
1432
  begin
1428
1433
  require 'stringio'
1429
1434
  $stdout = StringIO.new
1430
- assert_warn(DeprecatedMethodWarning) { @root.send('printTree') }
1435
+ assert_warn(StructuredWarnings::DeprecatedMethodWarning) { @root.send('printTree') }
1431
1436
  ensure
1432
1437
  $stdout = STDOUT
1433
1438
  end
@@ -1438,11 +1443,11 @@ module TestTree
1438
1443
  def test_integer_node_names
1439
1444
 
1440
1445
  require 'structured_warnings'
1441
- assert_warn(StandardWarning) do
1442
- @n_root = Tree::TreeNode.new(0, "Root Node")
1443
- @n_child1 = Tree::TreeNode.new(1, "Child Node 1")
1444
- @n_child2 = Tree::TreeNode.new(2, "Child Node 2")
1445
- @n_child3 = Tree::TreeNode.new("three", "Child Node 3")
1446
+ assert_warn(StructuredWarnings::StandardWarning) do
1447
+ @n_root = Tree::TreeNode.new(0, 'Root Node')
1448
+ @n_child1 = Tree::TreeNode.new(1, 'Child Node 1')
1449
+ @n_child2 = Tree::TreeNode.new(2, 'Child Node 2')
1450
+ @n_child3 = Tree::TreeNode.new('three', 'Child Node 3')
1446
1451
  end
1447
1452
 
1448
1453
  @n_root << @n_child1
@@ -1455,25 +1460,25 @@ module TestTree
1455
1460
  assert_equal(@n_root[1, true].name, 1) # This will work, as the flag is now enabled
1456
1461
 
1457
1462
  # Sanity check for the "normal" string name cases. Both cases should work.
1458
- assert_equal(@n_root["three", false].name, "three")
1463
+ assert_equal(@n_root['three', false].name, 'three')
1459
1464
 
1460
- StandardWarning.disable
1461
- assert_equal(@n_root["three", true].name, "three")
1465
+ StructuredWarnings::StandardWarning.disable
1466
+ assert_equal(@n_root['three', true].name, 'three')
1462
1467
 
1463
1468
  # Also ensure that the warning is actually being thrown
1464
- StandardWarning.enable
1465
- assert_warn(StandardWarning) {assert_equal(@n_root["three", true].name, "three") }
1469
+ StructuredWarnings::StandardWarning.enable
1470
+ assert_warn(StructuredWarnings::StandardWarning) {assert_equal(@n_root['three', true].name, 'three') }
1466
1471
  end
1467
1472
 
1468
1473
  # Test the addition of a node to itself as a child
1469
1474
  def test_add_node_to_self_as_child
1470
- root = Tree::TreeNode.new("root")
1475
+ root = Tree::TreeNode.new('root')
1471
1476
 
1472
1477
  # Lets check the direct parentage scenario
1473
1478
  assert_raise(ArgumentError) {root << root}
1474
1479
 
1475
1480
  # And now a scenario where the node addition is done down the hierarchy
1476
- child = Tree::TreeNode.new("child")
1481
+ child = Tree::TreeNode.new('child')
1477
1482
  assert_raise(ArgumentError) { root << child << root }
1478
1483
  end
1479
1484
 
@@ -1484,7 +1489,8 @@ module TestTree
1484
1489
  leafs = @root.each_leaf
1485
1490
  parents = leafs.collect {|leaf| leaf.parent }
1486
1491
  leafs.each {|leaf| leaf.remove_from_parent!}
1487
- parents.each {|parent| assert(parent.is_leaf?) if not parent.has_children?}
1492
+ parents.each {|parent| assert(parent.is_leaf?) unless parent.has_children?
1493
+ }
1488
1494
 
1489
1495
  end
1490
1496
 
@@ -1498,7 +1504,7 @@ module TestTree
1498
1504
  begin
1499
1505
  @root.first_child << @child2
1500
1506
  rescue RuntimeError => e
1501
- fail("No error should have been raised for adding a non-sibling duplicate.")
1507
+ fail("No error #{e} should have been raised for adding a non-sibling duplicate.")
1502
1508
  end
1503
1509
 
1504
1510
  end
@@ -1520,15 +1526,15 @@ module TestTree
1520
1526
  #
1521
1527
  @other_tree = @root.detached_copy
1522
1528
  @other_tree << @child1.detached_copy
1523
- @other_tree["Child1"] << Tree::TreeNode.new("Child1a", "GrandChild Node 1a")
1524
- @other_tree["Child1"] << Tree::TreeNode.new("Child1b", "GrandChild Node 1b")
1529
+ @other_tree['Child1'] << Tree::TreeNode.new('Child1a', 'GrandChild Node 1a')
1530
+ @other_tree['Child1'] << Tree::TreeNode.new('Child1b', 'GrandChild Node 1b')
1525
1531
  @other_tree << @child3.detached_copy
1526
- @other_tree["Child3"] << Tree::TreeNode.new("Child3a", "GrandChild Node 3a")
1527
- @other_tree["Child3"]["Child3a"] << Tree::TreeNode.new("Child3a1", "GreatGrandChild Node 3a1")
1532
+ @other_tree['Child3'] << Tree::TreeNode.new('Child3a', 'GrandChild Node 3a')
1533
+ @other_tree['Child3']['Child3a'] << Tree::TreeNode.new('Child3a1', 'GreatGrandChild Node 3a1')
1528
1534
 
1529
1535
  # And another (different) one so we can test exceptions...
1530
- @other_tree2 = Tree::TreeNode.new("ROOTIE", "A different root")
1531
- @other_tree2 << Tree::TreeNode.new("new_child1", "New Child 1")
1536
+ @other_tree2 = Tree::TreeNode.new('ROOT2', 'A different root')
1537
+ @other_tree2 << Tree::TreeNode.new('new_child1', 'New Child 1')
1532
1538
  end
1533
1539
 
1534
1540
  # Test tree merging.
@@ -1538,23 +1544,17 @@ module TestTree
1538
1544
 
1539
1545
  merged_tree = @root.merge(@other_tree)
1540
1546
 
1541
- # puts "\n\ntest_merge:\n\n"
1542
- # @root.print_tree
1543
- # puts "\n"
1544
- # @other_tree.print_tree
1545
- # puts "\n"
1546
- # merged_tree.print_tree
1547
1547
 
1548
- assert( @root["Child1"]["Child1a"].nil?, ".merge() has altered self." )
1549
- assert( @root["Child1"]["Child1b"].nil?, ".merge() has altered self." )
1550
- assert( @root["Child3"]["Child3a"].nil?, ".merge() has altered self." )
1548
+ assert(@root['Child1']['Child1a'].nil?, '.merge() has altered self.')
1549
+ assert(@root['Child1']['Child1b'].nil?, '.merge() has altered self.')
1550
+ assert(@root['Child3']['Child3a'].nil?, '.merge() has altered self.')
1551
1551
  assert( merged_tree.is_a?(Tree::TreeNode) )
1552
- assert( !merged_tree["Child1"]["Child1a"].nil?, ".merge() has not included ['Child1']['Child1a'] from other_tree." )
1553
- assert( !merged_tree["Child1"]["Child1b"].nil?, ".merge() has not included ['Child1']['Child1b'] from other_tree." )
1554
- assert( !merged_tree["Child3"]["Child3a"].nil?, ".merge() has not included ['Child3']['Child3a'] from other_tree." )
1555
- assert( !merged_tree["Child2"].nil?, ".merge() has not included ['Child2'] from self." )
1556
- assert( !merged_tree["Child3"]["Child3a"]["Child3a1"].nil?, ".merge() has not included ['Child3']['Child3a']['Child3a1'] from other_tree." )
1557
- assert( !merged_tree["Child3"]["Child4"].nil?, ".merge() has not included ['Child3']['Child4'] from self." )
1552
+ assert(!merged_tree['Child1']['Child1a'].nil?, ".merge() has not included ['Child1']['Child1a'] from other_tree." )
1553
+ assert(!merged_tree['Child1']['Child1b'].nil?, ".merge() has not included ['Child1']['Child1b'] from other_tree." )
1554
+ assert(!merged_tree['Child3']['Child3a'].nil?, ".merge() has not included ['Child3']['Child3a'] from other_tree." )
1555
+ assert(!merged_tree['Child2'].nil?, ".merge() has not included ['Child2'] from self." )
1556
+ assert(!merged_tree['Child3']['Child3a']['Child3a1'].nil?, ".merge() has not included ['Child3']['Child3a']['Child3a1'] from other_tree." )
1557
+ assert(!merged_tree['Child3']['Child4'].nil?, ".merge() has not included ['Child3']['Child4'] from self." )
1558
1558
 
1559
1559
  assert_raise(ArgumentError) { @root.merge(@other_tree2) }
1560
1560
  assert_raise(TypeError) { @root.merge('ROOT') }
@@ -1565,22 +1565,17 @@ module TestTree
1565
1565
  setup_test_tree
1566
1566
  setup_other_test_tree
1567
1567
 
1568
- # puts "\n\ntest_merge_bang:\n\n"
1569
- # @root.print_tree
1570
- # puts "\n"
1571
- # @other_tree.print_tree
1572
-
1573
- @root.merge!(@other_tree)
1568
+ @root.merge!(@other_tree)
1574
1569
 
1575
1570
  # puts "\n"
1576
1571
  # @root.print_tree
1577
1572
 
1578
- assert( !@root["Child1"]["Child1a"].nil?, ".merge() has not included ['Child1']['Child1a'] from other_tree." )
1579
- assert( !@root["Child1"]["Child1b"].nil?, ".merge() has not included ['Child1']['Child1b'] from other_tree." )
1580
- assert( !@root["Child3"]["Child3a"].nil?, ".merge() has not included ['Child3']['Child3a'] from other_tree." )
1581
- assert( !@root["Child2"].nil?, ".merge() has not included ['Child2'] from self." )
1582
- assert( !@root["Child3"]["Child3a"]["Child3a1"].nil?, ".merge() has not included ['Child3']['Child3a']['Child3a1'] from other_tree." )
1583
- assert( !@root["Child3"]["Child4"].nil?, ".merge() has not included ['Child3']['Child4'] from self." )
1573
+ assert(!@root['Child1']['Child1a'].nil?, ".merge() has not included ['Child1']['Child1a'] from other_tree." )
1574
+ assert(!@root['Child1']['Child1b'].nil?, ".merge() has not included ['Child1']['Child1b'] from other_tree." )
1575
+ assert(!@root['Child3']['Child3a'].nil?, ".merge() has not included ['Child3']['Child3a'] from other_tree." )
1576
+ assert(!@root['Child2'].nil?, ".merge() has not included ['Child2'] from self." )
1577
+ assert(!@root['Child3']['Child3a']['Child3a1'].nil?, ".merge() has not included ['Child3']['Child3a']['Child3a1'] from other_tree." )
1578
+ assert(!@root['Child3']['Child4'].nil?, ".merge() has not included ['Child3']['Child4'] from self." )
1584
1579
 
1585
1580
  assert_raise(ArgumentError) { @root.merge!(@other_tree2) }
1586
1581
  assert_raise(TypeError) { @root.merge!('ROOT') }
@@ -1616,38 +1611,38 @@ module TestTree
1616
1611
  end
1617
1612
 
1618
1613
  def test_change_parent
1619
- root_node = Tree::TreeNode.new("OLDROOT")
1614
+ root_node = Tree::TreeNode.new('OLD_ROOT')
1620
1615
 
1621
- child_node = Tree::TreeNode.new("CHILD")
1616
+ child_node = Tree::TreeNode.new('CHILD')
1622
1617
  assert_equal(0, child_node.node_depth)
1623
1618
 
1624
1619
  root_node << child_node
1625
- assert_equal(root_node["CHILD"].name, "CHILD")
1620
+ assert_equal(root_node['CHILD'].name, 'CHILD')
1626
1621
  assert_equal(0, root_node.node_depth)
1627
1622
  assert_equal(1, child_node.node_depth)
1628
1623
 
1629
- grandchild_node = Tree::TreeNode.new("GRANDCHILD")
1624
+ grandchild_node = Tree::TreeNode.new('GRANDCHILD')
1630
1625
  child_node << grandchild_node
1631
- assert_equal(root_node["CHILD"]["GRANDCHILD"].name, "GRANDCHILD")
1626
+ assert_equal(root_node['CHILD']['GRANDCHILD'].name, 'GRANDCHILD')
1632
1627
  assert_equal(0, root_node.node_depth)
1633
1628
  assert_equal(1, child_node.node_depth)
1634
1629
  assert_equal(2, grandchild_node.node_depth)
1635
1630
 
1636
- root2_node = Tree::TreeNode.new("NEWROOT")
1631
+ root2_node = Tree::TreeNode.new('NEW_ROOT')
1637
1632
  assert_equal(0, root2_node.node_depth)
1638
1633
 
1639
1634
  # Move the grand child to a new root.
1640
1635
  root2_node << grandchild_node
1641
- assert_equal(root2_node["GRANDCHILD"].name, "GRANDCHILD")
1636
+ assert_equal(root2_node['GRANDCHILD'].name, 'GRANDCHILD')
1642
1637
  assert_equal(root2_node, grandchild_node.parent)
1643
1638
  assert_equal(1, grandchild_node.node_depth)
1644
1639
 
1645
1640
  # Test the move semantics for addition of an existing child node
1646
- root1 = Tree::TreeNode.new("1")
1647
- root1 << Tree::TreeNode.new("2") << Tree::TreeNode.new("4")
1648
- root1 << Tree::TreeNode.new("3") << Tree::TreeNode.new("5")
1649
- root1["3"] << Tree::TreeNode.new("6")
1650
- assert_equal(root1["3"]["6"].name, "6")
1641
+ root1 = Tree::TreeNode.new('1')
1642
+ root1 << Tree::TreeNode.new('2') << Tree::TreeNode.new('4')
1643
+ root1 << Tree::TreeNode.new('3') << Tree::TreeNode.new('5')
1644
+ root1['3'] << Tree::TreeNode.new('6')
1645
+ assert_equal(root1['3']['6'].name, '6')
1651
1646
 
1652
1647
  # Create a new tree
1653
1648
  root2 = root1.dup
@@ -1655,24 +1650,24 @@ module TestTree
1655
1650
  assert_not_same(root1, root2)
1656
1651
 
1657
1652
  # Now 'move' the "4" node to the new tree. This should have 'dup' semantics.
1658
- root2["3"] << root1["2"]["4"]
1659
- assert_equal("3", root2["3"]["4"].parent.name) # This is on the new tree
1660
- assert_nil(root1["2"]["4"]) # This is on the old tree
1653
+ root2['3'] << root1['2']['4']
1654
+ assert_equal('3', root2['3']['4'].parent.name) # This is on the new tree
1655
+ assert_nil(root1['2']['4']) # This is on the old tree
1661
1656
 
1662
1657
  end
1663
1658
 
1664
1659
  # Test the path_as_string method.
1665
1660
  def test_path_as_string
1666
- j = Tree::TreeNode.new("j")
1667
- f = Tree::TreeNode.new("f")
1668
- k = Tree::TreeNode.new("k")
1669
- a = Tree::TreeNode.new("a")
1670
- d = Tree::TreeNode.new("d")
1671
- h = Tree::TreeNode.new("h")
1672
- z = Tree::TreeNode.new("z")
1673
- p = Tree::TreeNode.new("p")
1674
- t = Tree::TreeNode.new("t")
1675
- e = Tree::TreeNode.new("e")
1661
+ j = Tree::TreeNode.new('j')
1662
+ f = Tree::TreeNode.new('f')
1663
+ k = Tree::TreeNode.new('k')
1664
+ a = Tree::TreeNode.new('a')
1665
+ d = Tree::TreeNode.new('d')
1666
+ h = Tree::TreeNode.new('h')
1667
+ z = Tree::TreeNode.new('z')
1668
+ p = Tree::TreeNode.new('p')
1669
+ t = Tree::TreeNode.new('t')
1670
+ e = Tree::TreeNode.new('e')
1676
1671
 
1677
1672
  # Create the following Tree
1678
1673
  # j <-- level 0 (Root)
@@ -1690,7 +1685,7 @@ module TestTree
1690
1685
  h << t
1691
1686
  j << k << z
1692
1687
 
1693
- assert_equal(t.path_as_string(), 'j=>f=>h=>t') # Check the default sep.
1688
+ assert_equal(t.path_as_string, 'j=>f=>h=>t') # Check the default sep.
1694
1689
 
1695
1690
  assert_equal(t.path_as_string(' => '), 'j => f => h => t')
1696
1691
  assert_equal(z.path_as_string(' => '), 'j => k => z')
@@ -1699,16 +1694,16 @@ module TestTree
1699
1694
 
1700
1695
  # Test the path_as_array method.
1701
1696
  def test_path_as_array
1702
- j = Tree::TreeNode.new("j")
1703
- f = Tree::TreeNode.new("f")
1704
- k = Tree::TreeNode.new("k")
1705
- a = Tree::TreeNode.new("a")
1706
- d = Tree::TreeNode.new("d")
1707
- h = Tree::TreeNode.new("h")
1708
- z = Tree::TreeNode.new("z")
1709
- p = Tree::TreeNode.new("p")
1710
- t = Tree::TreeNode.new("t")
1711
- e = Tree::TreeNode.new("e")
1697
+ j = Tree::TreeNode.new('j')
1698
+ f = Tree::TreeNode.new('f')
1699
+ k = Tree::TreeNode.new('k')
1700
+ a = Tree::TreeNode.new('a')
1701
+ d = Tree::TreeNode.new('d')
1702
+ h = Tree::TreeNode.new('h')
1703
+ z = Tree::TreeNode.new('z')
1704
+ p = Tree::TreeNode.new('p')
1705
+ t = Tree::TreeNode.new('t')
1706
+ e = Tree::TreeNode.new('e')
1712
1707
 
1713
1708
  # Create the following Tree
1714
1709
  # j <-- level 0 (Root)
@@ -1726,9 +1721,9 @@ module TestTree
1726
1721
  h << t
1727
1722
  j << k << z
1728
1723
 
1729
- assert_equal(e.path_as_array, ['j', 'f', 'a', 'd', 'e'])
1730
- assert_equal(p.path_as_array, ['j', 'f' , 'h', 'p'])
1731
- assert_equal(k.path_as_array, ['j', 'k'])
1724
+ assert_equal(e.path_as_array, %w(j f a d e))
1725
+ assert_equal(p.path_as_array, %w(j f h p))
1726
+ assert_equal(k.path_as_array, %w(j k))
1732
1727
  end
1733
1728
  end
1734
1729
  end