rubytree 0.3.1 → 0.4.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/ChangeLog CHANGED
@@ -1,4 +1,27 @@
1
- 2007-07-17 Anupam Sengupta <anupamsg@gmail.com>
1
+ 2007-07-18 Anupam Sengupta <anupamsg@gmail.com>
2
+
3
+ * test/testbinarytree.rb (TC_BinaryTreeTest::test_isLeftChild):
4
+ Minor syntax correction.
5
+
6
+ * lib/tree.rb (Tree::TreeNode::depth): Added a tree depth
7
+ computation method.
8
+ (Tree::TreeNode::breadth): Added a tree breadth method.
9
+
10
+ * test/testtree.rb (TC_TreeTest::test_depth/test_breadth): Added a
11
+ test for the depth and breadth method.
12
+
13
+ * lib/tree/binarytree.rb (Tree::BinaryTreeNode::is*Child):
14
+ Added tests for determining whether a node is a left or right
15
+ child.
16
+
17
+ * test/testbinarytree.rb: Added the test cases for the binary tree
18
+ implementation.
19
+ (TC_BinaryTreeTest::test_is*Child): Added tests for right or left
20
+ childs.
21
+
22
+ * lib/tree/binarytree.rb: Added the binary tree implementation.
23
+
24
+ 2007-07-17 Anupam Sengupta <anupamsg@gmail.com>
2
25
 
3
26
  * lib/tree.rb (Tree::TreeNode::parentage): Renamed 'ancestors'
4
27
  method to 'parentage' to avoid clobbering Module.ancestors
data/README CHANGED
@@ -1,9 +1,9 @@
1
- = Rubytree 0.3.1
1
+ = Rubytree 0.4.0
2
2
 
3
3
  (c) 2006, 2007 Anupam Sengupta
4
4
  http://rubytree.rubyforge.org
5
5
 
6
- Document Revision: $Revision: 1.7 $ by $Author: anupamsg $
6
+ Document Revision: $Revision: 1.9 $ by $Author: anupamsg $
7
7
 
8
8
  == License
9
9
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  # Rakefile
2
2
  #
3
- # $Revision: 1.16 $ by $Author: anupamsg $
3
+ # $Revision: 1.18 $ by $Author: anupamsg $
4
4
  # $Name: $
5
5
  #
6
6
  # Copyright (c) 2006, 2007 Anupam Sengupta
@@ -42,7 +42,7 @@ require 'rake/rdoctask'
42
42
  desc "Default Task"
43
43
  task :default => :gem
44
44
 
45
- PKG_VERSION = '0.3.1'
45
+ PKG_VERSION = '0.4.0'
46
46
  PKG_FILES = FileList[
47
47
  '[A-Z]*',
48
48
  'lib/**/*.rb',
@@ -107,6 +107,14 @@ begin
107
107
  end
108
108
 
109
109
  # $Log: Rakefile,v $
110
+ # Revision 1.18 2007/07/18 20:15:06 anupamsg
111
+ # Added two predicate methods in BinaryTreeNode to determine whether a node
112
+ # is a left or a right node.
113
+ #
114
+ # Revision 1.17 2007/07/18 07:17:34 anupamsg
115
+ # Fixed a issue where TreeNode.ancestors was shadowing Module.ancestors. This method
116
+ # has been renamed to TreeNode.parentage.
117
+ #
110
118
  # Revision 1.16 2007/07/17 05:34:03 anupamsg
111
119
  # Added an optional tags Rake-task for generating the TAGS file for Emacs.
112
120
  #
data/TAGS CHANGED
@@ -8,7 +8,7 @@ module Tree::Tree48,2020
8
8
  attr_writer :content::Tree::TreeNode#content107,3886
9
9
  def initialize::Tree::TreeNode#Tree::TreeNode.new118,4158
10
10
  def to_s::Tree::TreeNode#to_s132,4447
11
- def ancestors::Tree::TreeNode#ancestors144,4836
11
+ def parentage::Tree::TreeNode#parentage144,4836
12
12
  def parent=::Tree::TreeNode#parent=159,5172
13
13
  def <<::Tree::TreeNode#<<167,5408
14
14
  def add::Tree::TreeNode#add174,5667
@@ -55,6 +55,40 @@ class Person::Person37,1683
55
55
  def to_s::Person#to_s45,1853
56
56
 
57
57
  test/testtree.rb,1847
58
+ class TC_TreeTest::TC_TreeTest43,1728
59
+ def setup::TC_TreeTest#setup45,1781
60
+ def loadChildren::TC_TreeTest#loadChildren73,2687
61
+ def teardown::TC_TreeTest#teardown79,2783
62
+ def test_root_setup::TC_TreeTest#test_root_setup83,2828
63
+ def test_root::TC_TreeTest#test_root97,3464
64
+ def test_firstSibling::TC_TreeTest#test_firstSibling105,3691
65
+ def test_isFirstSibling::TC_TreeTest#test_isFirstSibling115,4169
66
+ def test_isLastSibling::TC_TreeTest#test_isLastSibling125,4577
67
+ def test_lastSibling::TC_TreeTest#test_lastSibling135,4973
68
+ def test_siblings::TC_TreeTest#test_siblings145,5442
69
+ def test_isOnlyChild?::TC_TreeTest#test_isOnlyChild?164,6029
70
+ def test_nextSibling::TC_TreeTest#test_nextSibling173,6341
71
+ def test_previousSibling::TC_TreeTest#test_previousSibling182,6707
72
+ def test_add::TC_TreeTest#test_add191,7091
73
+ def test_remove::TC_TreeTest#test_remove210,7573
74
+ def test_removeAll::TC_TreeTest#test_removeAll237,8283
75
+ def test_removeFromParent::TC_TreeTest#test_removeFromParent246,8527
76
+ def test_children::TC_TreeTest#test_children263,9157
77
+ def test_firstChild::TC_TreeTest#test_firstChild289,10018
78
+ def test_lastChild::TC_TreeTest#test_lastChild298,10293
79
+ def test_find::TC_TreeTest#test_find307,10558
80
+ def test_parentage::TC_TreeTest#test_parentage321,11093
81
+ def test_each::TC_TreeTest#test_each329,11377
82
+ def test_each_leaf::TC_TreeTest#test_each_leaf346,11999
83
+ def test_parent::TC_TreeTest#test_parent360,12469
84
+ def test_indexed_access::TC_TreeTest#test_indexed_access369,12850
85
+ def test_printTree::TC_TreeTest#test_printTree377,13120
86
+ def test_dump::TC_TreeTest#test_dump383,13191
87
+ def test_collect::TC_TreeTest#test_collect399,13728
88
+ def test_freezeTree::TC_TreeTest#test_freezeTree408,13947
89
+ def test_content::TC_TreeTest#test_content417,14211
90
+
91
+ test/testtree.rb.~1.11.~,1847
58
92
  class TC_TreeTest::TC_TreeTest43,1728
59
93
  def setup::TC_TreeTest#setup45,1781
60
94
  def loadChildren::TC_TreeTest#loadChildren73,2687
@@ -1,9 +1,9 @@
1
1
  # tree.rb
2
2
  #
3
- # $Revision: 1.12 $ by $Author: anupamsg $
3
+ # $Revision: 1.16 $ by $Author: anupamsg $
4
4
  # $Name: $
5
5
  #
6
- # = tree.rb - Generic Tree implementation
6
+ # = tree.rb - Generic Multi-way Tree implementation
7
7
  #
8
8
  # Provides a generic tree data structure with ability to
9
9
  # store keyed node elements in the tree. The implementation
@@ -440,27 +440,40 @@ module Tree
440
440
  loadDumpRep(str)
441
441
  end
442
442
 
443
+ # Returns depth of the tree from this node. A single leaf node has a
444
+ # depth of 1.
445
+ def depth
446
+ return 1 if isLeaf?
447
+ 1 + @children.collect { |child| child.depth }.max
448
+ end
449
+
450
+ # Returns breadth of the tree at this node level. A single node has a
451
+ # breadth of 1.
452
+ def breadth
453
+ return 1 if isRoot?
454
+ parent.children.size
455
+ end
456
+
443
457
  protected :parent=, :setAsRoot!
444
458
  private_class_method :loadDumpRep
445
459
 
446
460
  end
447
461
  end
448
462
 
449
- if __FILE__ == $0
450
- root = Tree::TreeNode.new("ROOT")
451
- child1 = Tree::TreeNode.new("CHILD1")
452
- child2 = Tree::TreeNode.new("CHILD2")
453
- child3 = Tree::TreeNode.new("CHILD3")
454
- grandchild1 = Tree::TreeNode.new("GRANDCHILD1")
455
- root << child1 << grandchild1
456
- root << child2
457
- root << child3
458
-
459
- puts child1.nextSibling
460
- root.printTree
461
- end
462
-
463
463
  # $Log: tree.rb,v $
464
+ # Revision 1.16 2007/07/18 23:38:55 anupamsg
465
+ # Minor updates to tree.rb
466
+ #
467
+ # Revision 1.15 2007/07/18 22:11:50 anupamsg
468
+ # Added depth and breadth methods for the TreeNode.
469
+ #
470
+ # Revision 1.14 2007/07/18 19:33:27 anupamsg
471
+ # Added a new binary tree implementation.
472
+ #
473
+ # Revision 1.13 2007/07/18 07:17:34 anupamsg
474
+ # Fixed a issue where TreeNode.ancestors was shadowing Module.ancestors. This method
475
+ # has been renamed to TreeNode.parentage.
476
+ #
464
477
  # Revision 1.12 2007/07/17 03:39:28 anupamsg
465
478
  # Moved the CVS Log keyword to end of the files.
466
479
  #
@@ -0,0 +1,114 @@
1
+ # binarytree.rb
2
+ #
3
+ # $Revision: 1.2 $ by $Author: anupamsg $
4
+ # $Name: $
5
+ #
6
+ # = binarytree.rb - Binary Tree implementation
7
+ #
8
+ # Provides a generic tree data structure with ability to
9
+ # store keyed node elements in the tree. The implementation
10
+ # mixes in the Enumerable module.
11
+ #
12
+ # Author:: Anupam Sengupta (anupamsg@gmail.com)
13
+ #
14
+
15
+ # Copyright (c) 2007 Anupam Sengupta
16
+ #
17
+ # All rights reserved.
18
+ #
19
+ # Redistribution and use in source and binary forms, with or without modification,
20
+ # are permitted provided that the following conditions are met:
21
+ #
22
+ # - Redistributions of source code must retain the above copyright notice, this
23
+ # list of conditions and the following disclaimer.
24
+ #
25
+ # - Redistributions in binary form must reproduce the above copyright notice, this
26
+ # list of conditions and the following disclaimer in the documentation and/or
27
+ # other materials provided with the distribution.
28
+ #
29
+ # - Neither the name of the organization nor the names of its contributors may
30
+ # be used to endorse or promote products derived from this software without
31
+ # specific prior written permission.
32
+ #
33
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
36
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
37
+ # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
38
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
39
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
40
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
41
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
42
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
+ #
44
+
45
+ require 'tree'
46
+
47
+ module Tree
48
+
49
+ # Provides a Binary tree implementation. This tree node allows only two child
50
+ # nodes (left and right childs). It also provides direct access to the left
51
+ # and right children, including assignment to the same.
52
+ class BinaryTreeNode < TreeNode
53
+
54
+ # Adds the specified child node to the receiver node. The child node's
55
+ # parent is set to be the receiver. The child nodes are added in the order
56
+ # of addition, i.e., the first child added becomes the left node, and the
57
+ # second child will be the second node.
58
+ # If only one child is present, then this will be the left child.
59
+ def add(child)
60
+ raise "Already has two child nodes" if @children.size == 2
61
+
62
+ super(child)
63
+ end
64
+
65
+ # Returns the left child node. Note that
66
+ # left Child == first Child
67
+ def leftChild
68
+ children.first
69
+ end
70
+
71
+ # Returns the right child node. Note that
72
+ # right child == last child unless there is only one child.
73
+ def rightChild
74
+ children.last
75
+ end
76
+
77
+ # Sets the left child. If a previous child existed, it is replaced.
78
+ def leftChild=(leftChild)
79
+ @children[0] = leftChild
80
+ @childrenHash[leftChild.name] = leftChild
81
+ end
82
+
83
+ # Sets the right child. If a previous child existed, it is replaced.
84
+ def rightChild=(rightChild)
85
+ @children[1] = rightChild
86
+ @childrenHash[rightChild.name] = rightChild
87
+ end
88
+
89
+ # Returns true if this is the left child of its parent. Always returns false
90
+ # if this is the root node.
91
+ def isLeftChild?
92
+ return nil if isRoot?
93
+ self == parent.leftChild
94
+ end
95
+
96
+ # Returns true if this is the right child of its parent. Always returns false
97
+ # if this is the root node.
98
+ def isRightChild?
99
+ return nil if isRoot?
100
+ self == parent.rightChild
101
+ end
102
+
103
+ end
104
+
105
+ end
106
+
107
+ # $Log: binarytree.rb,v $
108
+ # Revision 1.2 2007/07/18 20:15:06 anupamsg
109
+ # Added two predicate methods in BinaryTreeNode to determine whether a node
110
+ # is a left or a right node.
111
+ #
112
+ # Revision 1.1 2007/07/18 19:33:27 anupamsg
113
+ # Added a new binary tree implementation.
114
+ #
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # testtree.rb
4
+ #
5
+ # $Revision: 1.4 $ by $Author: anupamsg $
6
+ # $Name: $
7
+ #
8
+ # Copyright (c) 2006, 2007 Anupam Sengupta
9
+ #
10
+ # All rights reserved.
11
+ #
12
+ # Redistribution and use in source and binary forms, with or without modification,
13
+ # are permitted provided that the following conditions are met:
14
+ #
15
+ # - Redistributions of source code must retain the above copyright notice, this
16
+ # list of conditions and the following disclaimer.
17
+ #
18
+ # - Redistributions in binary form must reproduce the above copyright notice, this
19
+ # list of conditions and the following disclaimer in the documentation and/or
20
+ # other materials provided with the distribution.
21
+ #
22
+ # - Neither the name of the organization nor the names of its contributors may
23
+ # be used to endorse or promote products derived from this software without
24
+ # specific prior written permission.
25
+ #
26
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
30
+ # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
33
+ # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
+ #
37
+
38
+ require 'test/unit'
39
+ require 'tree/binarytree'
40
+ require 'person'
41
+
42
+ # Test class for the Tree node.
43
+ class TC_BinaryTreeTest < Test::Unit::TestCase
44
+
45
+ def setup
46
+ @root = Tree::BinaryTreeNode.new("ROOT", "Root Node")
47
+
48
+ @left_child1 = Tree::BinaryTreeNode.new("A Child at Left", "Child Node @ left")
49
+ @right_child1 = Tree::BinaryTreeNode.new("B Child at right", "Child Node @ right")
50
+
51
+ end
52
+
53
+ def teardown
54
+ @root.remove!(@left_child1)
55
+ @root.remove!(@right_child1)
56
+ @root = nil
57
+ end
58
+
59
+ def test_initialize
60
+ assert_not_nil(@root, "Binary tree's Root should have been created")
61
+ end
62
+
63
+ def test_add
64
+ @root.add @left_child1
65
+ assert_same(@left_child1, @root.leftChild, "The left node should be left_child1")
66
+ assert_same(@left_child1, @root.firstChild, "The first node should be left_child1")
67
+
68
+ @root.add @right_child1
69
+ assert_same(@right_child1, @root.rightChild, "The right node should be right_child1")
70
+ assert_same(@right_child1, @root.lastChild, "The first node should be right_child1")
71
+
72
+ assert_raise RuntimeError do
73
+ @root.add Tree::BinaryTreeNode.new("The third child!")
74
+ end
75
+
76
+ assert_raise RuntimeError do
77
+ @root << Tree::BinaryTreeNode.new("The third child!")
78
+ end
79
+ end
80
+
81
+ def test_left
82
+ @root << @left_child1
83
+ @root << @right_child1
84
+ assert_same(@left_child1, @root.leftChild, "The left child should be 'left_child1")
85
+ assert_not_same(@right_child1, @root.leftChild, "The right_child1 is not the left child")
86
+ end
87
+
88
+ def test_right
89
+ @root << @left_child1
90
+ @root << @right_child1
91
+ assert_same(@right_child1, @root.rightChild, "The right child should be 'right_child1")
92
+ assert_not_same(@left_child1, @root.rightChild, "The left_child1 is not the left child")
93
+ end
94
+
95
+ def test_left_assignment
96
+ @root << @left_child1
97
+ @root << @right_child1
98
+ assert_same(@left_child1, @root.leftChild, "The left child should be 'left_child1")
99
+
100
+ @root.leftChild = Tree::BinaryTreeNode.new("New Left Child")
101
+ assert_equal("New Left Child", @root.leftChild.name, "The left child should now be the new child")
102
+ end
103
+
104
+ def test_right_assignment
105
+ @root << @left_child1
106
+ @root << @right_child1
107
+ assert_same(@right_child1, @root.rightChild, "The right child should be 'right_child1")
108
+
109
+ @root.rightChild = Tree::BinaryTreeNode.new("New Right Child")
110
+ assert_equal("New Right Child", @root.rightChild.name, "The right child should now be the new child")
111
+ end
112
+
113
+ def test_isLeftChild?
114
+ @root << @left_child1
115
+ @root << @right_child1
116
+
117
+ assert(@left_child1.isLeftChild?, "left_child1 should be the left child")
118
+ assert(!@right_child1.isLeftChild?, "left_child1 should be the left child")
119
+
120
+ assert(!@root.isLeftChild?, "Root is neither left child nor right")
121
+ end
122
+
123
+ def test_isRightChild?
124
+ @root << @left_child1
125
+ @root << @right_child1
126
+
127
+ assert(@right_child1.isRightChild?, "right_child1 should be the right child")
128
+ assert(!@left_child1.isRightChild?, "right_child1 should be the right child")
129
+ assert(!@root.isRightChild?, "Root is neither left child nor right")
130
+ end
131
+ end
132
+
133
+ # $Log: testbinarytree.rb,v $
134
+ # Revision 1.4 2007/07/19 02:03:57 anupamsg
135
+ # Minor syntax correction.
136
+ #
137
+ # Revision 1.3 2007/07/19 02:02:12 anupamsg
138
+ # Removed useless files (including rdoc, which should be generated for each release.
139
+ #
140
+ # Revision 1.2 2007/07/18 20:15:06 anupamsg
141
+ # Added two predicate methods in BinaryTreeNode to determine whether a node
142
+ # is a left or a right node.
143
+ #
@@ -2,7 +2,7 @@
2
2
 
3
3
  # testtree.rb
4
4
  #
5
- # $Revision: 1.11 $ by $Author: anupamsg $
5
+ # $Revision: 1.13 $ by $Author: anupamsg $
6
6
  # $Name: $
7
7
  #
8
8
  # Copyright (c) 2006, 2007 Anupam Sengupta
@@ -419,11 +419,54 @@ class TC_TreeTest < Test::Unit::TestCase
419
419
  @root.content = pers
420
420
  assert_same(pers, @root.content, "Content should be the same")
421
421
  end
422
+
423
+ def test_depth
424
+ assert_equal(1, @root.depth, "A single node's depth is 1")
425
+
426
+ @root << @child1
427
+ assert_equal(2, @root.depth, "This should be of depth 2")
428
+
429
+ @root << @child2
430
+ assert_equal(2, @root.depth, "This should be of depth 2")
431
+
432
+ @child2 << @child3
433
+ assert_equal(3, @root.depth, "This should be of depth 3")
434
+ assert_equal(2, @child2.depth, "This should be of depth 2")
435
+
436
+ @child3 << @child4
437
+ assert_equal(4, @root.depth, "This should be of depth 4")
438
+
439
+ end
440
+
441
+ def test_breadth
442
+ assert_equal(1, @root.breadth, "A single node's breadth is 1")
443
+
444
+ @root << @child1
445
+ assert_equal(1, @root.breadth, "This should be of breadth 1")
446
+
447
+ @root << @child2
448
+ assert_equal(2, @child1.breadth, "This should be of breadth 2")
449
+ assert_equal(2, @child2.breadth, "This should be of breadth 2")
450
+
451
+ @root << @child3
452
+ assert_equal(3, @child1.breadth, "This should be of breadth 3")
453
+ assert_equal(3, @child2.breadth, "This should be of breadth 3")
454
+
455
+ @child3 << @child4
456
+ assert_equal(1, @child4.breadth, "This should be of breadth 1")
457
+ end
422
458
  end
423
459
 
424
460
  __END__
425
461
 
426
462
  # $Log: testtree.rb,v $
463
+ # Revision 1.13 2007/07/18 22:11:50 anupamsg
464
+ # Added depth and breadth methods for the TreeNode.
465
+ #
466
+ # Revision 1.12 2007/07/18 07:17:34 anupamsg
467
+ # Fixed a issue where TreeNode.ancestors was shadowing Module.ancestors. This method
468
+ # has been renamed to TreeNode.parentage.
469
+ #
427
470
  # Revision 1.11 2007/07/17 03:39:29 anupamsg
428
471
  # Moved the CVS Log keyword to end of the files.
429
472
  #
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: rubytree
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.1
7
- date: 2007-07-17 00:00:00 -07:00
6
+ version: 0.4.0
7
+ date: 2007-07-18 00:00:00 -07:00
8
8
  summary: Ruby implementation of the Tree data structure.
9
9
  require_paths:
10
10
  - lib
@@ -34,10 +34,13 @@ files:
34
34
  - Rakefile
35
35
  - README
36
36
  - TAGS
37
+ - lib/tree/binarytree.rb
37
38
  - lib/tree.rb
38
39
  - test/person.rb
40
+ - test/testbinarytree.rb
39
41
  - test/testtree.rb
40
42
  test_files:
43
+ - test/testbinarytree.rb
41
44
  - test/testtree.rb
42
45
  rdoc_options: []
43
46