rubytree 1.0.2 → 2.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.
data/test/test_tree.rb CHANGED
@@ -2,9 +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, 2017, 2020, 2020 Anupam Sengupta
6
- #
7
- # All rights reserved.
5
+ # Copyright (c) 2006-2022 Anupam Sengupta. All rights reserved.
8
6
  #
9
7
  # Redistribution and use in source and binary forms, with or without modification,
10
8
  # are permitted provided that the following conditions are met:
@@ -31,9 +29,9 @@
31
29
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32
30
  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
31
  #
32
+ # frozen_string_literal: true
34
33
 
35
34
  require 'test/unit'
36
- require 'structured_warnings'
37
35
  require 'json'
38
36
  require_relative '../lib/tree/tree_deps'
39
37
 
@@ -96,9 +94,9 @@ module TestTree
96
94
  assert_not_nil(@root.name, 'Name should not be nil')
97
95
  assert_equal('ROOT', @root.name, "Name should be 'ROOT'")
98
96
  assert_equal('Root Node', @root.content, "Content should be 'Root Node'")
99
- assert(@root.is_root?, 'Should identify as root')
100
- assert(!@root.has_children?, 'Cannot have any children')
101
- assert(@root.has_content?, 'This root should have content')
97
+ assert(@root.root?, 'Should identify as root')
98
+ assert(!@root.children?, 'Cannot have any children')
99
+ assert(@root.content?, 'This root should have content')
102
100
  assert_equal(1, @root.size, 'Number of nodes should be one')
103
101
  assert_equal(0, @root.siblings.length, 'This root does not have any children')
104
102
  assert_equal(0, @root.in_degree, 'Root should have an in-degree of 0')
@@ -110,7 +108,7 @@ module TestTree
110
108
  def test_root
111
109
  setup_test_tree
112
110
 
113
- # TODO: Should probably change this logic. Root's root should
111
+ # @todo: Should probably change this logic. Root's root should
114
112
  # return nil so that the possibility of a recursive error does not exist
115
113
  # at all.
116
114
  assert_same(@root, @root.root, "Root's root is self")
@@ -146,21 +144,21 @@ module TestTree
146
144
 
147
145
  assert_same(Tree::TreeNode, tree.class)
148
146
  assert_same(tree.name, :A)
149
- assert_equal(true, tree.is_root?)
150
- assert_equal(false, tree.is_leaf?)
147
+ assert_equal(true, tree.root?)
148
+ assert_equal(false, tree.leaf?)
151
149
  assert_equal(9, tree.size)
152
150
  assert_equal('Root content', tree.content)
153
151
  assert_equal(3, tree.children.count) # B, C, D
154
152
 
155
153
  leaf_with_content = tree[:B][:F][:I]
156
154
  assert_equal('Leaf content', leaf_with_content.content)
157
- assert_equal(true, leaf_with_content.is_leaf?)
155
+ assert_equal(true, leaf_with_content.leaf?)
158
156
 
159
157
  leaf_without_content = tree[:C]
160
- assert_equal(true, leaf_without_content.is_leaf?)
158
+ assert_equal(true, leaf_without_content.leaf?)
161
159
 
162
160
  interior_node = tree[:B][:F]
163
- assert_equal(false, interior_node.is_leaf?)
161
+ assert_equal(false, interior_node.leaf?)
164
162
  assert_equal(2, interior_node.children.count)
165
163
 
166
164
  # Can't make a node without a name
@@ -196,21 +194,21 @@ module TestTree
196
194
 
197
195
  assert_same(Tree::TreeNode, tree.class)
198
196
  assert_same(:A, tree.name)
199
- assert_equal(true, tree.is_root?)
200
- assert_equal(false, tree.is_leaf?)
197
+ assert_equal(true, tree.root?)
198
+ assert_equal(false, tree.leaf?)
201
199
  assert_equal(9, tree.size)
202
200
  assert_equal('Root content', tree.content)
203
201
  assert_equal(3, tree.children.count) # B, C, D
204
202
 
205
203
  leaf_with_content = tree[:B][:F][:I]
206
204
  assert_equal('Leaf content', leaf_with_content.content)
207
- assert_equal(true, leaf_with_content.is_leaf?)
205
+ assert_equal(true, leaf_with_content.leaf?)
208
206
 
209
207
  leaf_without_content = tree[:C]
210
- assert_equal(true, leaf_without_content.is_leaf?)
208
+ assert_equal(true, leaf_without_content.leaf?)
211
209
 
212
210
  interior_node = tree[:B][:F]
213
- assert_equal(false, interior_node.is_leaf?)
211
+ assert_equal(false, interior_node.leaf?)
214
212
  assert_equal(2, interior_node.children.count)
215
213
  end
216
214
 
@@ -236,7 +234,7 @@ module TestTree
236
234
  assert_equal(2, added_children.count)
237
235
  assert_equal(7, tree.size)
238
236
  assert_equal('G content', tree[:G].content)
239
- assert_equal(true, tree[:G].is_leaf?)
237
+ assert_equal(true, tree[:G].leaf?)
240
238
  assert_equal(5, tree[:B].size)
241
239
  assert_equal(3, tree[:B].children.count)
242
240
 
@@ -291,24 +289,15 @@ module TestTree
291
289
  def test_has_content_eh
292
290
  a_node = Tree::TreeNode.new('A Node')
293
291
  assert_nil(a_node.content, 'The node should not have content')
294
- assert(!a_node.has_content?, 'The node should not have content')
292
+ assert(!a_node.content?, 'The node should not have content')
295
293
 
296
294
  a_node.content = 'Something'
297
295
  assert_not_nil(a_node.content, 'The node should now have content')
298
- assert(a_node.has_content?, 'The node should now have content')
299
- end
300
-
301
- # Test the equivalence of size and length methods.
302
- def test_length_is_size
303
- setup_test_tree
304
- assert_equal(@root.size, @root.length, 'Length and size methods should return the same result')
296
+ assert(a_node.content?, 'The node should now have content')
305
297
  end
306
298
 
307
299
  # Test the <=> operator.
308
300
  def test_spaceship
309
- require 'structured_warnings'
310
- StructuredWarnings::StandardWarning.disable # Disable the warnings for using integers as node names
311
-
312
301
  first_node = Tree::TreeNode.new(1)
313
302
  second_node = Tree::TreeNode.new(2)
314
303
 
@@ -326,8 +315,6 @@ module TestTree
326
315
 
327
316
  second_node = Tree::TreeNode.new('ABC')
328
317
  assert_equal(0, first_node <=> second_node)
329
-
330
- StructuredWarnings::StandardWarning.enable
331
318
  end
332
319
 
333
320
  # Test the inclusion of Comparable
@@ -342,7 +329,7 @@ module TestTree
342
329
  assert(node_b > node_a, "Node B is lexically 'greater than' node A")
343
330
  assert(node_b >= node_a, "Node B is lexically 'greater than' node A")
344
331
 
345
- assert(!(node_a == node_b), 'Node A and Node B are not equal')
332
+ assert(node_a != node_b, 'Node A and Node B are not equal')
346
333
  assert(node_b.between?(node_a, node_c), 'Node B is lexically between node A and node C')
347
334
  end
348
335
 
@@ -382,7 +369,7 @@ module TestTree
382
369
  def test_first_sibling
383
370
  setup_test_tree
384
371
 
385
- # TODO: Need to fix the first_sibling method to return nil for nodes with no siblings.
372
+ # @todo: Need to fix the first_sibling method to return nil for nodes with no siblings.
386
373
  assert_same(@root, @root.first_sibling, "Root's first sibling is itself")
387
374
  assert_same(@child1, @child1.first_sibling, "Child1's first sibling is itself")
388
375
  assert_same(@child1, @child2.first_sibling, "Child2's first sibling should be child1")
@@ -391,26 +378,26 @@ module TestTree
391
378
  assert_not_same(@child1, @child4.first_sibling, "Child4's first sibling is itself")
392
379
  end
393
380
 
394
- # Test the is_first_sibling? method.
381
+ # Test the first_sibling? method.
395
382
  def test_is_first_sibling_eh
396
383
  setup_test_tree
397
384
 
398
- assert(@root.is_first_sibling?, "Root's first sibling is itself")
399
- assert(@child1.is_first_sibling?, "Child1's first sibling is itself")
400
- assert(!@child2.is_first_sibling?, 'Child2 is not the first sibling')
401
- assert(!@child3.is_first_sibling?, 'Child3 is not the first sibling')
402
- assert(@child4.is_first_sibling?, "Child4's first sibling is itself")
385
+ assert(@root.first_sibling?, "Root's first sibling is itself")
386
+ assert(@child1.first_sibling?, "Child1's first sibling is itself")
387
+ assert(!@child2.first_sibling?, 'Child2 is not the first sibling')
388
+ assert(!@child3.first_sibling?, 'Child3 is not the first sibling')
389
+ assert(@child4.first_sibling?, "Child4's first sibling is itself")
403
390
  end
404
391
 
405
- # Test the is_last_sibling? method.
392
+ # Test the last_sibling? method.
406
393
  def test_is_last_sibling_eh
407
394
  setup_test_tree
408
395
 
409
- assert(@root.is_last_sibling?, "Root's last sibling is itself")
410
- assert(!@child1.is_last_sibling?, 'Child1 is not the last sibling')
411
- assert(!@child2.is_last_sibling?, 'Child2 is not the last sibling')
412
- assert(@child3.is_last_sibling?, "Child3's last sibling is itself")
413
- assert(@child4.is_last_sibling?, "Child4's last sibling is itself")
396
+ assert(@root.last_sibling?, "Root's last sibling is itself")
397
+ assert(!@child1.last_sibling?, 'Child1 is not the last sibling')
398
+ assert(!@child2.last_sibling?, 'Child2 is not the last sibling')
399
+ assert(@child3.last_sibling?, "Child3's last sibling is itself")
400
+ assert(@child4.last_sibling?, "Child4's last sibling is itself")
414
401
  end
415
402
 
416
403
  # Test the last_sibling method.
@@ -452,15 +439,15 @@ module TestTree
452
439
  assert_equal(0, siblings.length, 'Root should not have any siblings')
453
440
  end
454
441
 
455
- # Test the is_only_child? method.
442
+ # Test the only_child? method.
456
443
  def test_is_only_child_eh
457
444
  setup_test_tree
458
445
 
459
- assert(@root.is_only_child?, 'Root is an only child')
460
- assert(!@child1.is_only_child?, 'Child1 is not the only child')
461
- assert(!@child2.is_only_child?, 'Child2 is not the only child')
462
- assert(!@child3.is_only_child?, 'Child3 is not the only child')
463
- assert(@child4.is_only_child?, 'Child4 is an only child')
446
+ assert(@root.only_child?, 'Root is an only child')
447
+ assert(!@child1.only_child?, 'Child1 is not the only child')
448
+ assert(!@child2.only_child?, 'Child2 is not the only child')
449
+ assert(!@child3.only_child?, 'Child3 is not the only child')
450
+ assert(@child4.only_child?, 'Child4 is an only child')
464
451
  end
465
452
 
466
453
  # Test the next_sibling method.
@@ -487,14 +474,14 @@ module TestTree
487
474
 
488
475
  # Test the add method.
489
476
  def test_add
490
- assert(!@root.has_children?, 'Should not have any children')
477
+ assert(!@root.children?, 'Should not have any children')
491
478
 
492
479
  assert_equal(1, @root.size, 'Should have 1 node (the root)')
493
480
  @root.add(@child1)
494
481
 
495
482
  @root << @child2
496
483
 
497
- assert(@root.has_children?, 'Should have children')
484
+ assert(@root.children?, 'Should have children')
498
485
  assert_equal(3, @root.size, 'Should have three nodes')
499
486
 
500
487
  @root << @child3 << @child4
@@ -533,7 +520,8 @@ module TestTree
533
520
  begin
534
521
  root << two << deep
535
522
  rescue RuntimeError => e
536
- raise("Error! The RuntimeError #{e} should not have been thrown. The same node can be added to different branches.")
523
+ raise("Error! The RuntimeError #{e} should not have been thrown. " \
524
+ 'The same node can be added to different branches.')
537
525
  end
538
526
 
539
527
  assert_raise(ArgumentError) { root << three << three }
@@ -549,7 +537,7 @@ module TestTree
549
537
 
550
538
  # Test Addition at a specific position
551
539
  def test_add_at_specific_position
552
- assert(!@root.has_children?, 'Should not have any children')
540
+ assert(!@root.children?, 'Should not have any children')
553
541
 
554
542
  assert_equal(1, @root.size, 'Should have 1 node (the root)')
555
543
  @root.add(@child1) # First Child added at position 0
@@ -579,7 +567,9 @@ module TestTree
579
567
 
580
568
  # Now, a negative test. We are preventing addition to a position that does not exist.
581
569
  assert_raise(RuntimeError) do
582
- @root.add(@child5, @root.children.size + 1) # Fifth child inserted beyond the last position that is valid (at 5th pos).
570
+ # Fifth child inserted beyond the last position that is valid (at 5th
571
+ # pos).
572
+ @root.add(@child5, @root.children.size + 1)
583
573
  end
584
574
  # Validate that we still have children = [@child1, @child3, @child2, @child4]
585
575
  assert_equal(@child1, @root[0])
@@ -589,9 +579,12 @@ module TestTree
589
579
  assert_nil(@root[4])
590
580
  assert_equal(4, @root.children.size, 'Should have four child nodes')
591
581
 
592
- # Another negative test. Lets attempt to add from the end at a position that is not available
582
+ # Another negative test. Lets attempt to add from the end at a position
583
+ # that is not available
593
584
  assert_raise(RuntimeError) do
594
- @root.add(@child5, -(@root.children.size + 2)) # Fifth child inserted beyond the first position that is valid; i.e. at -6
585
+ # Fifth child inserted beyond the first position that is valid; i.e. at
586
+ # -6
587
+ @root.add(@child5, -(@root.children.size + 2))
595
588
  end
596
589
  assert_nil(@root[-5])
597
590
  assert_equal(@child1, @root[-4])
@@ -600,8 +593,11 @@ module TestTree
600
593
  assert_equal(@child4, @root[-1])
601
594
  assert_equal(4, @root.children.size, 'Should have four child nodes')
602
595
 
603
- # Lets correctly add the fifth child from the end to effectively prepend the node.
604
- @root.add(@child5, -(@root.children.size + 1)) # Fifth child inserted beyond the first position; i.e. at -5
596
+ # Lets correctly add the fifth child from the end to effectively prepend
597
+ # the node.
598
+
599
+ # Fifth child inserted beyond the first position; i.e. at -5
600
+ @root.add(@child5, -(@root.children.size + 1))
605
601
  assert_nil(@root[-6])
606
602
  assert_equal(@child5, @root[-5])
607
603
  assert_equal(@child1, @root[-4])
@@ -658,40 +654,40 @@ module TestTree
658
654
  @root << @child1
659
655
  @root << @child2
660
656
 
661
- assert(@root.has_children?, 'Should have children')
657
+ assert(@root.children?, 'Should have children')
662
658
  assert_equal(3, @root.size, 'Should have three nodes')
663
659
 
664
660
  @root.remove!(@child1)
665
661
  assert_equal(2, @root.size, 'Should have two nodes')
666
662
  @root.remove!(@child2)
667
663
 
668
- assert(!@root.has_children?, 'Should have no children')
664
+ assert(!@root.children?, 'Should have no children')
669
665
  assert_equal(1, @root.size, 'Should have one node')
670
666
 
671
667
  @root << @child1
672
668
  @root << @child2
673
669
 
674
- assert(@root.has_children?, 'Should have children')
670
+ assert(@root.children?, 'Should have children')
675
671
  assert_equal(3, @root.size, 'Should have three nodes')
676
672
 
677
673
  @root.remove_all!
678
674
 
679
- assert(!@root.has_children?, 'Should have no children')
675
+ assert(!@root.children?, 'Should have no children')
680
676
  assert_equal(1, @root.size, 'Should have one node')
681
677
 
682
678
  # Some negative testing
683
679
  @root.remove!(nil)
684
- assert(!@root.has_children?, 'Should have no children')
680
+ assert(!@root.children?, 'Should have no children')
685
681
  assert_equal(1, @root.size, 'Should have one node')
686
682
  end
687
683
 
688
684
  # Test the remove_all! method.
689
685
  def test_remove_all_bang
690
686
  setup_test_tree
691
- assert(@root.has_children?, 'Should have children')
687
+ assert(@root.children?, 'Should have children')
692
688
  @root.remove_all!
693
689
 
694
- assert(!@root.has_children?, 'Should have no children')
690
+ assert(!@root.children?, 'Should have no children')
695
691
  assert_equal(1, @root.size, 'Should have one node')
696
692
  end
697
693
 
@@ -699,8 +695,8 @@ module TestTree
699
695
  def test_remove_from_parent_bang
700
696
  setup_test_tree
701
697
 
702
- assert(@root.has_children?, 'Should have children')
703
- assert(!@root.is_leaf?, 'Root is not a leaf here')
698
+ assert(@root.children?, 'Should have children')
699
+ assert(!@root.leaf?, 'Root is not a leaf here')
704
700
 
705
701
  child1 = @root[0]
706
702
  assert_not_nil(child1, 'Child 1 should exist')
@@ -718,10 +714,10 @@ module TestTree
718
714
  def test_children
719
715
  setup_test_tree
720
716
 
721
- assert(@root.has_children?, 'Should have children')
717
+ assert(@root.children?, 'Should have children')
722
718
  assert_equal(5, @root.size, 'Should have five nodes')
723
- assert(@child3.has_children?, 'Should have children')
724
- assert(!@child3.is_leaf?, 'Should not be a leaf')
719
+ assert(@child3.children?, 'Should have children')
720
+ assert(!@child3.leaf?, 'Should not be a leaf')
725
721
 
726
722
  assert_equal(1, @child3.node_height, 'The subtree at Child 3 should have a height of 1')
727
723
  [@child1, @child2, @child4].each do |child|
@@ -795,9 +791,9 @@ module TestTree
795
791
  def test_each
796
792
  setup_test_tree
797
793
 
798
- assert(@root.has_children?, 'Should have children')
794
+ assert(@root.children?, 'Should have children')
799
795
  assert_equal(5, @root.size, 'Should have five nodes')
800
- assert(@child3.has_children?, 'Should have children')
796
+ assert(@child3.children?, 'Should have children')
801
797
 
802
798
  nodes = []
803
799
  @root.each { |node| nodes << node }
@@ -882,14 +878,14 @@ module TestTree
882
878
  # Test the root node
883
879
  assert_equal(test_root.name, new_root.name, 'Must identify as ROOT')
884
880
  assert_equal(test_root.content, new_root.content, "Must have root's content")
885
- assert(new_root.is_root?, 'Must be the ROOT node')
886
- assert(new_root.has_children?, 'Must have a child node')
881
+ assert(new_root.root?, 'Must be the ROOT node')
882
+ assert(new_root.children?, 'Must have a child node')
887
883
 
888
884
  # Test the child node
889
885
  new_child = new_root[test_child.name]
890
886
  assert_equal(test_child.name, new_child.name, 'Must have child 1')
891
- assert(new_child.has_content?, 'Child must have content')
892
- assert(new_child.is_only_child?, 'Child must be the only child')
887
+ assert(new_child.content?, 'Child must have content')
888
+ assert(new_child.only_child?, 'Child must be the only child')
893
889
 
894
890
  new_child_content = new_child.content
895
891
  assert_equal(Hash, new_child_content.class, "Class of child's content should be a hash")
@@ -898,8 +894,8 @@ module TestTree
898
894
  # Test the grand-child node
899
895
  new_grand_child = new_child[test_grand_child.name]
900
896
  assert_equal(test_grand_child.name, new_grand_child.name, 'Must have grand child')
901
- assert(new_grand_child.has_content?, 'Grand-child must have content')
902
- assert(new_grand_child.is_only_child?, 'Grand-child must be the only child')
897
+ assert(new_grand_child.content?, 'Grand-child must have content')
898
+ assert(new_grand_child.only_child?, 'Grand-child must be the only child')
903
899
 
904
900
  new_grand_child_content = new_grand_child.content
905
901
  assert_equal(Array, new_grand_child_content.class, "Class of grand-child's content should be an Array")
@@ -948,34 +944,6 @@ module TestTree
948
944
  assert_same(person, @root.content, 'Content should be the same')
949
945
  end
950
946
 
951
- # Test the depth computation algorithm. Note that this is an incorrect computation and actually returns height+1
952
- # instead of depth. This method has been deprecated in this release and may be removed in the future.
953
- def test_depth
954
- require 'structured_warnings'
955
- assert_warn(StructuredWarnings::DeprecatedMethodWarning) { do_deprecated_depth }
956
- rescue LoadError
957
- # Since the structured_warnings package is not present, we revert to good old Kernel#warn behavior.
958
- do_deprecated_depth
959
- end
960
-
961
- # Run the assertions for the deprecated depth method.
962
- def do_deprecated_depth
963
- assert_equal(1, @root.depth, "A single node's depth is 1")
964
-
965
- @root << @child1
966
- assert_equal(2, @root.depth, 'This should be of depth 2')
967
-
968
- @root << @child2
969
- assert_equal(2, @root.depth, 'This should be of depth 2')
970
-
971
- @child2 << @child3
972
- assert_equal(3, @root.depth, 'This should be of depth 3')
973
- assert_equal(2, @child2.depth, 'This should be of depth 2')
974
-
975
- @child3 << @child4
976
- assert_equal(4, @root.depth, 'This should be of depth 4')
977
- end
978
-
979
947
  # Test the height computation algorithm
980
948
  def test_node_height
981
949
  assert_equal(0, @root.node_height, "A single node's height is 0")
@@ -1000,8 +968,7 @@ module TestTree
1000
968
  assert_equal(0, @child4.node_height, 'This should be of height 0')
1001
969
  end
1002
970
 
1003
- # Test the depth computation algorithm. Note that this is the correct depth computation. The original
1004
- # Tree::TreeNode#depth was incorrectly computing the height of the node - instead of its depth.
971
+ # Test the depth computation algorithm.
1005
972
  def test_node_depth
1006
973
  assert_equal(0, @root.node_depth, "A root node's depth is 0")
1007
974
 
@@ -1090,9 +1057,8 @@ module TestTree
1090
1057
  end
1091
1058
 
1092
1059
  assert_equal(Enumerator, j.breadth_each.class) if defined?(Enumerator.class) # Without a block
1093
- if defined?(Enumerable::Enumerator.class)
1094
- assert_equal(Enumerable::Enumerator, j.breadth_each.class)
1095
- end # Without a block
1060
+ # Without a block
1061
+ assert_equal(Enumerable::Enumerator, j.breadth_each.class) if defined?(Enumerable::Enumerator.class)
1096
1062
 
1097
1063
  # Now test without a block
1098
1064
  result_array = j.breadth_each.collect { |node| node }
@@ -1136,10 +1102,11 @@ module TestTree
1136
1102
  assert_equal(expected_array[i].name, result_array[i].name)
1137
1103
  end
1138
1104
 
1139
- assert_equal(Enumerator, j.preordered_each.class) if defined?(Enumerator.class) # Without a block
1140
- if defined?(Enumerable::Enumerator.class)
1141
- assert_equal(Enumerable::Enumerator, j.preordered_each.class)
1142
- end # Without a block
1105
+ assert_equal(Enumerator, j.preordered_each.class) \
1106
+ if defined?(Enumerator.class) # Without a block
1107
+
1108
+ assert_equal(Enumerable::Enumerator, j.preordered_each.class) \
1109
+ if defined?(Enumerable::Enumerator.class)
1143
1110
  end
1144
1111
 
1145
1112
  # Test the postordered_each method.
@@ -1179,9 +1146,9 @@ module TestTree
1179
1146
  end
1180
1147
 
1181
1148
  assert_equal(Enumerator, j.postordered_each.class) if defined?(Enumerator.class) # Without a block
1182
- if defined?(Enumerable::Enumerator.class)
1183
- assert_equal(Enumerable::Enumerator, j.postordered_each.class)
1184
- end # Without a block
1149
+
1150
+ assert_equal(Enumerable::Enumerator, j.postordered_each.class) \
1151
+ if defined?(Enumerable::Enumerator.class)
1185
1152
 
1186
1153
  # Now test without a block
1187
1154
  result_array = j.postordered_each.collect { |node| node }
@@ -1196,75 +1163,75 @@ module TestTree
1196
1163
  def test_detached_copy
1197
1164
  setup_test_tree
1198
1165
 
1199
- assert(@root.has_children?, 'The root should have children')
1166
+ assert(@root.children?, 'The root should have children')
1200
1167
  copy_of_root = @root.detached_copy
1201
- assert(!copy_of_root.has_children?, 'The copy should not have children')
1168
+ assert(!copy_of_root.children?, 'The copy should not have children')
1202
1169
  assert_equal(@root.name, copy_of_root.name, 'The names should be equal')
1203
1170
 
1204
1171
  # Try the same test with a child node
1205
- assert(!@child3.is_root?, 'Child 3 is not a root')
1206
- assert(@child3.has_children?, 'Child 3 has children')
1172
+ assert(!@child3.root?, 'Child 3 is not a root')
1173
+ assert(@child3.children?, 'Child 3 has children')
1207
1174
  copy_of_child3 = @child3.detached_copy
1208
- assert(copy_of_child3.is_root?, "Child 3's copy is a root")
1209
- assert(!copy_of_child3.has_children?, "Child 3's copy does not have children")
1175
+ assert(copy_of_child3.root?, "Child 3's copy is a root")
1176
+ assert(!copy_of_child3.children?, "Child 3's copy does not have children")
1210
1177
  end
1211
1178
 
1212
1179
  # Test the detached_subtree_copy method.
1213
1180
  def test_detached_subtree_copy
1214
1181
  setup_test_tree
1215
1182
 
1216
- assert(@root.has_children?, 'The root should have children.')
1183
+ assert(@root.children?, 'The root should have children.')
1217
1184
  tree_copy = @root.detached_subtree_copy
1218
1185
 
1219
1186
  assert_equal(@root.name, tree_copy.name, 'The names should be equal.')
1220
1187
  assert_not_equal(@root.object_id, tree_copy.object_id, 'Object_ids should differ.')
1221
- assert(tree_copy.is_root?, 'Copied root should be a root node.')
1222
- assert(tree_copy.has_children?, 'Copied tree should have children.')
1188
+ assert(tree_copy.root?, 'Copied root should be a root node.')
1189
+ assert(tree_copy.children?, 'Copied tree should have children.')
1223
1190
  assert_equal(tree_copy.children.count, @root.children.count,
1224
1191
  'Copied tree and the original tree should have same number of children.')
1225
1192
 
1226
1193
  assert_equal(tree_copy[0].name, @child1.name, 'The names of Child1 (original and copy) should be same.')
1227
1194
  assert_not_equal(tree_copy[0].object_id, @child1.object_id,
1228
1195
  '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.')
1196
+ assert(!tree_copy[0].root?, 'Child1 copied should not be root.')
1197
+ assert(!tree_copy[0].children?, 'Child1 copied should not have children.')
1231
1198
 
1232
1199
  assert_equal(tree_copy[1].name, @child2.name, 'The names of Child2 (original and copy) should be same.')
1233
1200
  assert_not_equal(tree_copy[1].object_id, @child2.object_id,
1234
1201
  'Child2 Object_ids (original and copy) should differ.')
1235
- assert(!tree_copy[1].is_root?, 'Child2 copied should not be root.')
1236
- assert(!tree_copy[1].has_children?, 'Child2 copied should not have children.')
1202
+ assert(!tree_copy[1].root?, 'Child2 copied should not be root.')
1203
+ assert(!tree_copy[1].children?, 'Child2 copied should not have children.')
1237
1204
 
1238
1205
  assert_equal(tree_copy[2].name, @child3.name, 'The names of Child3 (original and copy) should be same.')
1239
1206
  assert_not_equal(tree_copy[2].object_id, @child3.object_id,
1240
1207
  'Child3 Object_ids (original and copy) should differ.')
1241
- assert(!tree_copy[2].is_root?, 'Child3 copied should not be root.')
1242
- assert(tree_copy[2].has_children?, 'Child3 copied should have children.')
1208
+ assert(!tree_copy[2].root?, 'Child3 copied should not be root.')
1209
+ assert(tree_copy[2].children?, 'Child3 copied should have children.')
1243
1210
 
1244
1211
  assert_equal(tree_copy[2][0].name, @child4.name, 'The names of Child4 (original and copy) should be same.')
1245
1212
  assert_not_equal(tree_copy[2][0].object_id, @child4.object_id,
1246
1213
  'Child4 Object_ids (original and copy) should differ.')
1247
- assert(!tree_copy[2][0].is_root?, 'Child4 copied should not be root.')
1248
- assert(!tree_copy[2][0].has_children?, 'Child4 copied should not have children.')
1214
+ assert(!tree_copy[2][0].root?, 'Child4 copied should not be root.')
1215
+ assert(!tree_copy[2][0].children?, 'Child4 copied should not have children.')
1249
1216
  end
1250
1217
 
1251
- # Test the has_children? method.
1218
+ # Test the children? method.
1252
1219
  def test_has_children_eh
1253
1220
  setup_test_tree
1254
- assert(@root.has_children?, 'The Root node MUST have children')
1221
+ assert(@root.children?, 'The Root node MUST have children')
1255
1222
  end
1256
1223
 
1257
- # test the is_leaf? method.
1224
+ # test the leaf? method.
1258
1225
  def test_is_leaf_eh
1259
1226
  setup_test_tree
1260
- assert(!@child3.is_leaf?, 'Child 3 is not a leaf node')
1261
- assert(@child4.is_leaf?, 'Child 4 is a leaf node')
1227
+ assert(!@child3.leaf?, 'Child 3 is not a leaf node')
1228
+ assert(@child4.leaf?, 'Child 4 is a leaf node')
1262
1229
  end
1263
1230
 
1264
- # Test the is_root? method.
1231
+ # Test the root? method.
1265
1232
  def test_is_root_eh
1266
1233
  setup_test_tree
1267
- assert(@root.is_root?, 'The ROOT node must respond as the root node')
1234
+ assert(@root.root?, 'The ROOT node must respond as the root node')
1268
1235
  end
1269
1236
 
1270
1237
  # Test the content= method.
@@ -1285,7 +1252,7 @@ module TestTree
1285
1252
  end
1286
1253
 
1287
1254
  # Test the << method.
1288
- def test_lt2 # Test the << method
1255
+ def test_lt2
1289
1256
  @root << @child1
1290
1257
  @root << @child2
1291
1258
  @root << @child3 << @child4
@@ -1296,7 +1263,7 @@ module TestTree
1296
1263
  end
1297
1264
 
1298
1265
  # Test the [] method.
1299
- def test_index # Test the [] method
1266
+ def test_index
1300
1267
  assert_raise(ArgumentError) { @root[nil] }
1301
1268
 
1302
1269
  @root << @child1
@@ -1304,7 +1271,8 @@ module TestTree
1304
1271
  assert_equal(@child1.name, @root['Child1'].name, 'Child 1 should be returned')
1305
1272
  assert_equal(@child1.name, @root[0].name, 'Child 1 should be returned')
1306
1273
  assert_equal(@child1.name, @root[-2].name, 'Child 1 should be returned') # Negative access also works
1307
- assert_equal(@child1.name, @root[-@root.children.size].name, 'Child 1 should be returned') # Negative access also works
1274
+ assert_equal(@child1.name,
1275
+ @root[-@root.children.size].name, 'Child 1 should be returned') # Negative access also works
1308
1276
 
1309
1277
  assert_equal(@child2.name, @root['Child2'].name, 'Child 2 should be returned')
1310
1278
  assert_equal(@child2.name, @root[1].name, 'Child 2 should be returned')
@@ -1407,46 +1375,12 @@ module TestTree
1407
1375
  assert_equal(k[1].name, root_node[1].name, 'Child 2 should be returned')
1408
1376
  end
1409
1377
 
1410
- # Test the old CamelCase method names
1411
- def test_old_camel_case_names
1412
- setup_test_tree
1413
-
1414
- meth_names_to_test = %w[isRoot? isLeaf? hasContent?
1415
- hasChildren? firstChild lastChild
1416
- firstSibling isFirstSibling? lastSibling isLastSibling?
1417
- isOnlyChild? nextSibling previousSibling nodeHeight nodeDepth
1418
- removeFromParent! removeAll! freezeTree! ]
1419
-
1420
- require 'structured_warnings'
1421
-
1422
- StructuredWarnings::DeprecatedMethodWarning.disable do
1423
- # noinspection RubyResolve
1424
- assert(@root.isRoot?) # Test if the original method is really called
1425
- end
1426
-
1427
- meth_names_to_test.each do |meth_name|
1428
- assert_warn(StructuredWarnings::DeprecatedMethodWarning) { @root.send(meth_name) }
1429
- end
1430
-
1431
- # Special Case for printTree to avoid putting stuff on the STDOUT during the unit test.
1432
- begin
1433
- require 'stringio'
1434
- $stdout = StringIO.new
1435
- assert_warn(StructuredWarnings::DeprecatedMethodWarning) { @root.send('printTree') }
1436
- ensure
1437
- $stdout = STDOUT
1438
- end
1439
- end
1440
-
1441
1378
  # Test usage of integers as node names
1442
1379
  def test_integer_node_names
1443
- require 'structured_warnings'
1444
- assert_warn(StructuredWarnings::StandardWarning) do
1445
- @n_root = Tree::TreeNode.new(0, 'Root Node')
1446
- @n_child1 = Tree::TreeNode.new(1, 'Child Node 1')
1447
- @n_child2 = Tree::TreeNode.new(2, 'Child Node 2')
1448
- @n_child3 = Tree::TreeNode.new('three', 'Child Node 3')
1449
- end
1380
+ @n_root = Tree::TreeNode.new(0, 'Root Node')
1381
+ @n_child1 = Tree::TreeNode.new(1, 'Child Node 1')
1382
+ @n_child2 = Tree::TreeNode.new(2, 'Child Node 2')
1383
+ @n_child3 = Tree::TreeNode.new('three', 'Child Node 3')
1450
1384
 
1451
1385
  @n_root << @n_child1
1452
1386
  @n_root << @n_child2
@@ -1454,18 +1388,11 @@ module TestTree
1454
1388
 
1455
1389
  # Node[n] is really accessing the nth child with a zero-base
1456
1390
  assert_not_equal(@n_root[1].name, 1) # This is really the second child
1457
- assert_equal(@n_root[0].name, 1) # This will work, as it is the first child
1458
- assert_equal(@n_root[1, true].name, 1) # This will work, as the flag is now enabled
1391
+ assert_equal(@n_root[0].name, '1') # This will work, as it is the first child
1392
+ assert_equal(@n_root[1].name, '2') # This will work, as the flag is now enabled
1459
1393
 
1460
1394
  # Sanity check for the "normal" string name cases. Both cases should work.
1461
- assert_equal(@n_root['three', false].name, 'three')
1462
-
1463
- StructuredWarnings::StandardWarning.disable
1464
- assert_equal(@n_root['three', true].name, 'three')
1465
-
1466
- # Also ensure that the warning is actually being thrown
1467
- StructuredWarnings::StandardWarning.enable
1468
- assert_warn(StructuredWarnings::StandardWarning) { assert_equal(@n_root['three', true].name, 'three') }
1395
+ assert_equal(@n_root['three'].name, 'three')
1469
1396
  end
1470
1397
 
1471
1398
  # Test the addition of a node to itself as a child
@@ -1485,10 +1412,10 @@ module TestTree
1485
1412
  setup_test_tree
1486
1413
 
1487
1414
  leafs = @root.each_leaf
1488
- parents = leafs.collect { |leaf| leaf.parent }
1489
- leafs.each { |leaf| leaf.remove_from_parent! }
1415
+ parents = leafs.collect(&:parent)
1416
+ leafs.each(&:remove_from_parent!)
1490
1417
  parents.each do |parent|
1491
- assert(parent.is_leaf?) unless parent.has_children?
1418
+ assert(parent.leaf?) unless parent.children?
1492
1419
  end
1493
1420
  end
1494
1421