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.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/Gemfile.lock +37 -52
- data/README.md +5 -5
- data/Rakefile +19 -19
- data/examples/example_basic.rb +5 -5
- data/lib/rubytree.rb +1 -1
- data/lib/tree.rb +55 -50
- data/lib/tree/binarytree.rb +10 -7
- data/lib/tree/tree_deps.rb +8 -8
- data/lib/tree/utils/camel_case_method_handler.rb +10 -9
- data/lib/tree/utils/hash_converter.rb +6 -4
- data/lib/tree/utils/json_converter.rb +13 -9
- data/lib/tree/utils/metrics_methods.rb +8 -6
- data/lib/tree/utils/path_methods.rb +7 -5
- data/lib/tree/utils/tree_merge_handler.rb +5 -4
- data/lib/tree/utils/utils.rb +3 -0
- data/lib/tree/version.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/tree_spec.rb +17 -17
- data/test/run_test.rb +6 -6
- data/test/test_binarytree.rb +84 -82
- data/test/test_rubytree_require.rb +2 -2
- data/test/test_subclassed_node.rb +13 -12
- data/test/test_thread_and_fiber.rb +3 -3
- data/test/test_tree.rb +479 -484
- metadata +19 -23
- data/TAGS +0 -248
- data/gem_graph.png +0 -0
- data/rubytree.gemspec +0 -90
- data/setup.rb +0 -1585
    
        data/test/run_test.rb
    CHANGED
    
    | @@ -32,13 +32,13 @@ | |
| 32 32 | 
             
            # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         | 
| 33 33 | 
             
            #
         | 
| 34 34 |  | 
| 35 | 
            -
            base_dir = File.expand_path(File.join(File.dirname(__FILE__),  | 
| 36 | 
            -
            lib_dir  = File.join(base_dir,  | 
| 37 | 
            -
            test_dir = File.join(base_dir,  | 
| 35 | 
            +
            base_dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
         | 
| 36 | 
            +
            lib_dir  = File.join(base_dir, 'lib')
         | 
| 37 | 
            +
            test_dir = File.join(base_dir, 'test')
         | 
| 38 38 |  | 
| 39 39 | 
             
            $LOAD_PATH.unshift(lib_dir)
         | 
| 40 40 |  | 
| 41 | 
            -
            if ENV[ | 
| 41 | 
            +
            if ENV['COVERAGE']
         | 
| 42 42 | 
             
              begin
         | 
| 43 43 | 
             
                require 'simplecov'
         | 
| 44 44 | 
             
                require 'coveralls'
         | 
| @@ -51,10 +51,10 @@ if ENV["COVERAGE"] | |
| 51 51 | 
             
                  add_group 'Internal Utilities', '/lib/tree/utils/.*.rb'
         | 
| 52 52 | 
             
                end
         | 
| 53 53 | 
             
              rescue LoadError => e
         | 
| 54 | 
            -
                puts  | 
| 54 | 
            +
                puts 'Could not load simplecov; continuing without code coverage' + e.cause
         | 
| 55 55 | 
             
              end
         | 
| 56 56 | 
             
            end
         | 
| 57 57 |  | 
| 58 58 | 
             
            require 'test/unit'
         | 
| 59 59 |  | 
| 60 | 
            -
             | 
| 60 | 
            +
            Test::Unit::AutoRunner.run(true, test_dir)
         | 
    
        data/test/test_binarytree.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ | |
| 3 3 | 
             
            # test_binarytree.rb - This file is part of the RubyTree package.
         | 
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            #
         | 
| 6 | 
            -
            # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2015 Anupam Sengupta
         | 
| 6 | 
            +
            # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2015, 2017 Anupam Sengupta
         | 
| 7 7 | 
             
            #
         | 
| 8 8 | 
             
            # All rights reserved.
         | 
| 9 9 | 
             
            #
         | 
| @@ -34,7 +34,7 @@ | |
| 34 34 | 
             
            #
         | 
| 35 35 |  | 
| 36 36 | 
             
            require 'test/unit'
         | 
| 37 | 
            -
             | 
| 37 | 
            +
            require_relative '../lib/tree/binarytree'
         | 
| 38 38 |  | 
| 39 39 | 
             
            module TestTree
         | 
| 40 40 | 
             
              # Test class for the binary tree node.
         | 
| @@ -42,10 +42,10 @@ module TestTree | |
| 42 42 |  | 
| 43 43 | 
             
                # Setup the test data scaffolding.
         | 
| 44 44 | 
             
                def setup
         | 
| 45 | 
            -
                  @root = Tree::BinaryTreeNode.new( | 
| 45 | 
            +
                  @root = Tree::BinaryTreeNode.new('ROOT', 'Root Node')
         | 
| 46 46 |  | 
| 47 | 
            -
                  @left_child1  = Tree::BinaryTreeNode.new( | 
| 48 | 
            -
                  @right_child1 = Tree::BinaryTreeNode.new( | 
| 47 | 
            +
                  @left_child1  = Tree::BinaryTreeNode.new('A Child at Left', 'Child Node @ left')
         | 
| 48 | 
            +
                  @right_child1 = Tree::BinaryTreeNode.new('B Child at Right', 'Child Node @ right')
         | 
| 49 49 | 
             
                end
         | 
| 50 50 |  | 
| 51 51 | 
             
                # Tear down the test data scaffolding.
         | 
| @@ -58,22 +58,22 @@ module TestTree | |
| 58 58 | 
             
                # Test initialization of the binary tree.
         | 
| 59 59 | 
             
                def test_initialize
         | 
| 60 60 | 
             
                  assert_not_nil(@root, "Binary tree's Root should have been created")
         | 
| 61 | 
            -
                  assert_nil(@root.left_child,  | 
| 62 | 
            -
                  assert_nil(@root.right_child,  | 
| 63 | 
            -
                  assert_equal(@root.children.size, 0,  | 
| 61 | 
            +
                  assert_nil(@root.left_child, 'The initial left child of root should be nil')
         | 
| 62 | 
            +
                  assert_nil(@root.right_child, 'The initial right child of root should be nil')
         | 
| 63 | 
            +
                  assert_equal(@root.children.size, 0, 'Initially no children should be present')
         | 
| 64 64 | 
             
                end
         | 
| 65 65 |  | 
| 66 66 | 
             
                def test_from_hash
         | 
| 67 67 | 
             
                  # Can't make a root node without a name
         | 
| 68 68 | 
             
                  assert_raise (ArgumentError) { Tree::BinaryTreeNode.from_hash({})}
         | 
| 69 69 | 
             
                  # Can't have multiple roots
         | 
| 70 | 
            -
                  assert_raise (ArgumentError) { Tree::BinaryTreeNode.from_hash({: | 
| 70 | 
            +
                  assert_raise (ArgumentError) { Tree::BinaryTreeNode.from_hash({A: {}, B: {}}) }
         | 
| 71 71 |  | 
| 72 72 | 
             
                  # Can't have more than 2 children
         | 
| 73 | 
            -
                  too_many_kids = {: | 
| 73 | 
            +
                  too_many_kids = {A: {B: {}, C: {}, D: {}}}
         | 
| 74 74 | 
             
                  assert_raise(ArgumentError) { Tree::BinaryTreeNode.from_hash(too_many_kids) }
         | 
| 75 75 |  | 
| 76 | 
            -
                  valid_hash = {: | 
| 76 | 
            +
                  valid_hash = {A: {B: {}, C: {D: {}}}}
         | 
| 77 77 | 
             
                  tree = Tree::BinaryTreeNode.from_hash(valid_hash)
         | 
| 78 78 | 
             
                  #    A
         | 
| 79 79 | 
             
                  #   / \
         | 
| @@ -88,19 +88,19 @@ module TestTree | |
| 88 88 | 
             
                  assert_equal(2, tree.children.count) # B, C, D
         | 
| 89 89 | 
             
                  assert_equal(4, tree.size)
         | 
| 90 90 |  | 
| 91 | 
            -
                  valid_hash_with_content = {[:A,  | 
| 91 | 
            +
                  valid_hash_with_content = {[:A, 'Content!'] => {B: {}, C: {[:D, 'More content'] => {}}} }
         | 
| 92 92 | 
             
                  tree2 = Tree::BinaryTreeNode.from_hash(valid_hash_with_content)
         | 
| 93 93 |  | 
| 94 94 | 
             
                  assert_equal(Tree::BinaryTreeNode, tree2.class)
         | 
| 95 | 
            -
                  assert_equal( | 
| 96 | 
            -
                  assert_equal( | 
| 95 | 
            +
                  assert_equal('Content!', tree2.content)
         | 
| 96 | 
            +
                  assert_equal('More content', tree2[:C][:D].content)
         | 
| 97 97 | 
             
                end
         | 
| 98 98 |  | 
| 99 99 | 
             
                def test_add_from_hash
         | 
| 100 | 
            -
                  root = Tree::BinaryTreeNode.new( | 
| 100 | 
            +
                  root = Tree::BinaryTreeNode.new('Root')
         | 
| 101 101 |  | 
| 102 102 | 
             
                  # Can't have too many children
         | 
| 103 | 
            -
                  too_many_kids = {: | 
| 103 | 
            +
                  too_many_kids = {child1: {}, child2: {}, child3: {}}
         | 
| 104 104 | 
             
                  assert_raise(ArgumentError) { root.add_from_hash(too_many_kids) }
         | 
| 105 105 | 
             
                  assert_equal(0, root.children.count) # Nothing added
         | 
| 106 106 |  | 
| @@ -108,7 +108,7 @@ module TestTree | |
| 108 108 | 
             
                  assert_equal([], root.add_from_hash({}))
         | 
| 109 109 | 
             
                  assert_equal(1, root.size)
         | 
| 110 110 |  | 
| 111 | 
            -
                  valid_hash = {: | 
| 111 | 
            +
                  valid_hash = {A: {}, B: {C: {}, [:D, 'leaf'] => {}}}
         | 
| 112 112 | 
             
                  added = root.add_from_hash(valid_hash)
         | 
| 113 113 | 
             
                  #   root
         | 
| 114 114 | 
             
                  #   / \
         | 
| @@ -120,48 +120,48 @@ module TestTree | |
| 120 120 | 
             
                  assert_equal(2, added.count)
         | 
| 121 121 | 
             
                  assert_equal(5, root.size)
         | 
| 122 122 | 
             
                  assert_equal(root.children.count, 2)
         | 
| 123 | 
            -
                  assert_equal( | 
| 123 | 
            +
                  assert_equal('leaf', root[:B][:D].content)
         | 
| 124 124 |  | 
| 125 125 | 
             
                  # Can't add more than two children
         | 
| 126 | 
            -
                  assert_raise(ArgumentError) { root.add_from_hash({: | 
| 127 | 
            -
                  node = Tree::BinaryTreeNode.new( | 
| 128 | 
            -
                  assert_raise(ArgumentError) { node.add_from_hash({: | 
| 126 | 
            +
                  assert_raise(ArgumentError) { root.add_from_hash({X: {}}) }
         | 
| 127 | 
            +
                  node = Tree::BinaryTreeNode.new('Root 2')
         | 
| 128 | 
            +
                  assert_raise(ArgumentError) { node.add_from_hash({A: {}, B: {}, C: {}}) }
         | 
| 129 129 | 
             
                end
         | 
| 130 130 |  | 
| 131 131 | 
             
                # Test the add method.
         | 
| 132 132 | 
             
                def test_add
         | 
| 133 133 | 
             
                  @root.add @left_child1
         | 
| 134 | 
            -
                  assert(!@left_child1.is_root?,  | 
| 134 | 
            +
                  assert(!@left_child1.is_root?, 'Left child1 cannot be a root after addition to the ROOT node')
         | 
| 135 135 |  | 
| 136 | 
            -
                  assert_same(@left_child1, @root.left_child,  | 
| 137 | 
            -
                  assert_same(@left_child1, @root.first_child,  | 
| 136 | 
            +
                  assert_same(@left_child1, @root.left_child, 'The left node should be left_child1')
         | 
| 137 | 
            +
                  assert_same(@left_child1, @root.first_child, 'The first node should be left_child1')
         | 
| 138 138 |  | 
| 139 139 | 
             
                  @root.add @right_child1
         | 
| 140 | 
            -
                  assert(!@right_child1.is_root?,  | 
| 140 | 
            +
                  assert(!@right_child1.is_root?, 'Right child1 cannot be a root after addition to the ROOT node')
         | 
| 141 141 |  | 
| 142 | 
            -
                  assert_same(@right_child1, @root.right_child,  | 
| 143 | 
            -
                  assert_same(@right_child1, @root.last_child,  | 
| 142 | 
            +
                  assert_same(@right_child1, @root.right_child, 'The right node should be right_child1')
         | 
| 143 | 
            +
                  assert_same(@right_child1, @root.last_child, 'The first node should be right_child1')
         | 
| 144 144 |  | 
| 145 145 | 
             
                  assert_raise ArgumentError do
         | 
| 146 | 
            -
                    @root.add Tree::BinaryTreeNode.new( | 
| 146 | 
            +
                    @root.add Tree::BinaryTreeNode.new('The third child!')
         | 
| 147 147 | 
             
                  end
         | 
| 148 148 |  | 
| 149 149 | 
             
                  assert_raise ArgumentError do
         | 
| 150 | 
            -
                    @root << Tree::BinaryTreeNode.new( | 
| 150 | 
            +
                    @root << Tree::BinaryTreeNode.new('The third child!')
         | 
| 151 151 | 
             
                  end
         | 
| 152 152 | 
             
                end
         | 
| 153 153 |  | 
| 154 154 | 
             
                # Test the inordered_each method.
         | 
| 155 155 | 
             
                def test_inordered_each
         | 
| 156 | 
            -
                  a = Tree::BinaryTreeNode.new( | 
| 157 | 
            -
                  b = Tree::BinaryTreeNode.new( | 
| 158 | 
            -
                  c = Tree::BinaryTreeNode.new( | 
| 159 | 
            -
                  d = Tree::BinaryTreeNode.new( | 
| 160 | 
            -
                  e = Tree::BinaryTreeNode.new( | 
| 161 | 
            -
                  f = Tree::BinaryTreeNode.new( | 
| 162 | 
            -
                  g = Tree::BinaryTreeNode.new( | 
| 163 | 
            -
                  h = Tree::BinaryTreeNode.new( | 
| 164 | 
            -
                  i = Tree::BinaryTreeNode.new( | 
| 156 | 
            +
                  a = Tree::BinaryTreeNode.new('a')
         | 
| 157 | 
            +
                  b = Tree::BinaryTreeNode.new('b')
         | 
| 158 | 
            +
                  c = Tree::BinaryTreeNode.new('c')
         | 
| 159 | 
            +
                  d = Tree::BinaryTreeNode.new('d')
         | 
| 160 | 
            +
                  e = Tree::BinaryTreeNode.new('e')
         | 
| 161 | 
            +
                  f = Tree::BinaryTreeNode.new('f')
         | 
| 162 | 
            +
                  g = Tree::BinaryTreeNode.new('g')
         | 
| 163 | 
            +
                  h = Tree::BinaryTreeNode.new('h')
         | 
| 164 | 
            +
                  i = Tree::BinaryTreeNode.new('i')
         | 
| 165 165 |  | 
| 166 166 | 
             
                  # Create the following Tree
         | 
| 167 167 | 
             
                  #        f         <-- level 0 (Root)
         | 
| @@ -186,9 +186,9 @@ module TestTree | |
| 186 186 |  | 
| 187 187 | 
             
                  assert_equal(f, result)   # each should return the original object
         | 
| 188 188 |  | 
| 189 | 
            -
                  expected_array.each_index do | | 
| 189 | 
            +
                  expected_array.each_index do |idx|
         | 
| 190 190 | 
             
                    # Match only the names.
         | 
| 191 | 
            -
                    assert_equal(expected_array[ | 
| 191 | 
            +
                    assert_equal(expected_array[idx].name, result_array[idx].name)
         | 
| 192 192 | 
             
                  end
         | 
| 193 193 |  | 
| 194 194 | 
             
                  assert_equal(Enumerator, f.inordered_each.class) if defined?(Enumerator.class )# Without a block
         | 
| @@ -200,7 +200,7 @@ module TestTree | |
| 200 200 | 
             
                  @root << @left_child1
         | 
| 201 201 | 
             
                  @root << @right_child1
         | 
| 202 202 | 
             
                  assert_same(@left_child1, @root.left_child, "The left child should be 'left_child1")
         | 
| 203 | 
            -
                  assert_not_same(@right_child1, @root.left_child,  | 
| 203 | 
            +
                  assert_not_same(@right_child1, @root.left_child, 'The right_child1 is not the left child')
         | 
| 204 204 | 
             
                end
         | 
| 205 205 |  | 
| 206 206 | 
             
                # Test the right_child method.
         | 
| @@ -208,7 +208,7 @@ module TestTree | |
| 208 208 | 
             
                  @root << @left_child1
         | 
| 209 209 | 
             
                  @root << @right_child1
         | 
| 210 210 | 
             
                  assert_same(@right_child1, @root.right_child, "The right child should be 'right_child1")
         | 
| 211 | 
            -
                  assert_not_same(@left_child1, @root.right_child,  | 
| 211 | 
            +
                  assert_not_same(@left_child1, @root.right_child, 'The left_child1 is not the left child')
         | 
| 212 212 | 
             
                end
         | 
| 213 213 |  | 
| 214 214 | 
             
                # Test left_child= method.
         | 
| @@ -216,18 +216,18 @@ module TestTree | |
| 216 216 | 
             
                  @root << @left_child1
         | 
| 217 217 | 
             
                  @root << @right_child1
         | 
| 218 218 | 
             
                  assert_same(@left_child1, @root.left_child, "The left child should be 'left_child1")
         | 
| 219 | 
            -
                  assert(!@left_child1.is_root?,  | 
| 219 | 
            +
                  assert(!@left_child1.is_root?, 'The left child now cannot be a root.')
         | 
| 220 220 |  | 
| 221 | 
            -
                  @root.left_child = Tree::BinaryTreeNode.new( | 
| 222 | 
            -
                  assert(!@root.left_child.is_root?,  | 
| 223 | 
            -
                  assert_equal( | 
| 224 | 
            -
                  assert_equal( | 
| 221 | 
            +
                  @root.left_child = Tree::BinaryTreeNode.new('New Left Child')
         | 
| 222 | 
            +
                  assert(!@root.left_child.is_root?, 'The left child now cannot be a root.')
         | 
| 223 | 
            +
                  assert_equal('New Left Child', @root.left_child.name, 'The left child should now be the new child')
         | 
| 224 | 
            +
                  assert_equal('B Child at Right', @root.last_child.name, 'The last child should now be the right child')
         | 
| 225 225 |  | 
| 226 226 | 
             
                  # Now set the left child as nil, and retest
         | 
| 227 227 | 
             
                  @root.left_child = nil
         | 
| 228 | 
            -
                  assert_nil(@root.left_child,  | 
| 229 | 
            -
                  assert_nil(@root.first_child,  | 
| 230 | 
            -
                  assert_equal( | 
| 228 | 
            +
                  assert_nil(@root.left_child, 'The left child should now be nil')
         | 
| 229 | 
            +
                  assert_nil(@root.first_child, 'The first child is now nil')
         | 
| 230 | 
            +
                  assert_equal('B Child at Right', @root.last_child.name, 'The last child should now be the right child')
         | 
| 231 231 | 
             
                end
         | 
| 232 232 |  | 
| 233 233 | 
             
                # Test right_child= method.
         | 
| @@ -235,19 +235,19 @@ module TestTree | |
| 235 235 | 
             
                  @root << @left_child1
         | 
| 236 236 | 
             
                  @root << @right_child1
         | 
| 237 237 | 
             
                  assert_same(@right_child1, @root.right_child, "The right child should be 'right_child1")
         | 
| 238 | 
            -
                  assert(!@right_child1.is_root?,  | 
| 238 | 
            +
                  assert(!@right_child1.is_root?, 'The right child now cannot be a root.')
         | 
| 239 239 |  | 
| 240 | 
            -
                  @root.right_child = Tree::BinaryTreeNode.new( | 
| 241 | 
            -
                  assert(!@root.right_child.is_root?,  | 
| 242 | 
            -
                  assert_equal( | 
| 243 | 
            -
                  assert_equal( | 
| 244 | 
            -
                  assert_equal( | 
| 240 | 
            +
                  @root.right_child = Tree::BinaryTreeNode.new('New Right Child')
         | 
| 241 | 
            +
                  assert(!@root.right_child.is_root?, 'The right child now cannot be a root.')
         | 
| 242 | 
            +
                  assert_equal('New Right Child', @root.right_child.name, 'The right child should now be the new child')
         | 
| 243 | 
            +
                  assert_equal('A Child at Left', @root.first_child.name, 'The first child should now be the left child')
         | 
| 244 | 
            +
                  assert_equal('New Right Child', @root.last_child.name, 'The last child should now be the right child')
         | 
| 245 245 |  | 
| 246 246 | 
             
                  # Now set the right child as nil, and retest
         | 
| 247 247 | 
             
                  @root.right_child = nil
         | 
| 248 | 
            -
                  assert_nil(@root.right_child,  | 
| 249 | 
            -
                  assert_equal( | 
| 250 | 
            -
                  assert_nil(@root.last_child,  | 
| 248 | 
            +
                  assert_nil(@root.right_child, 'The right child should now be nil')
         | 
| 249 | 
            +
                  assert_equal('A Child at Left', @root.first_child.name, 'The first child should now be the left child')
         | 
| 250 | 
            +
                  assert_nil(@root.last_child, 'The first child is now nil')
         | 
| 251 251 | 
             
                end
         | 
| 252 252 |  | 
| 253 253 | 
             
                # Test isLeft_child? method.
         | 
| @@ -255,14 +255,14 @@ module TestTree | |
| 255 255 | 
             
                  @root << @left_child1
         | 
| 256 256 | 
             
                  @root << @right_child1
         | 
| 257 257 |  | 
| 258 | 
            -
                  assert(@left_child1.is_left_child?,  | 
| 259 | 
            -
                  assert(!@right_child1.is_left_child?,  | 
| 258 | 
            +
                  assert(@left_child1.is_left_child?, 'left_child1 should be the left child')
         | 
| 259 | 
            +
                  assert(!@right_child1.is_left_child?, 'left_child1 should be the left child')
         | 
| 260 260 |  | 
| 261 261 | 
             
                  # Now set the right child as nil, and retest
         | 
| 262 262 | 
             
                  @root.right_child = nil
         | 
| 263 | 
            -
                  assert(@left_child1.is_left_child?,  | 
| 263 | 
            +
                  assert(@left_child1.is_left_child?, 'left_child1 should be the left child')
         | 
| 264 264 |  | 
| 265 | 
            -
                  assert(!@root.is_left_child?,  | 
| 265 | 
            +
                  assert(!@root.is_left_child?, 'Root is neither left child nor right')
         | 
| 266 266 | 
             
                end
         | 
| 267 267 |  | 
| 268 268 | 
             
                # Test is_right_child? method.
         | 
| @@ -270,13 +270,13 @@ module TestTree | |
| 270 270 | 
             
                  @root << @left_child1
         | 
| 271 271 | 
             
                  @root << @right_child1
         | 
| 272 272 |  | 
| 273 | 
            -
                  assert(@right_child1.is_right_child?,  | 
| 274 | 
            -
                  assert(!@left_child1.is_right_child?,  | 
| 273 | 
            +
                  assert(@right_child1.is_right_child?, 'right_child1 should be the right child')
         | 
| 274 | 
            +
                  assert(!@left_child1.is_right_child?, 'right_child1 should be the right child')
         | 
| 275 275 |  | 
| 276 276 | 
             
                  # Now set the left child as nil, and retest
         | 
| 277 277 | 
             
                  @root.left_child = nil
         | 
| 278 | 
            -
                  assert(@right_child1.is_right_child?,  | 
| 279 | 
            -
                  assert(!@root.is_right_child?,  | 
| 278 | 
            +
                  assert(@right_child1.is_right_child?, 'right_child1 should be the right child')
         | 
| 279 | 
            +
                  assert(!@root.is_right_child?, 'Root is neither left child nor right')
         | 
| 280 280 | 
             
                end
         | 
| 281 281 |  | 
| 282 282 | 
             
                # Test swap_children method.
         | 
| @@ -284,35 +284,37 @@ module TestTree | |
| 284 284 | 
             
                  @root << @left_child1
         | 
| 285 285 | 
             
                  @root << @right_child1
         | 
| 286 286 |  | 
| 287 | 
            -
                  assert(@right_child1.is_right_child?,  | 
| 288 | 
            -
                  assert(!@left_child1.is_right_child?,  | 
| 287 | 
            +
                  assert(@right_child1.is_right_child?, 'right_child1 should be the right child')
         | 
| 288 | 
            +
                  assert(!@left_child1.is_right_child?, 'right_child1 should be the right child')
         | 
| 289 289 |  | 
| 290 290 | 
             
                  @root.swap_children
         | 
| 291 291 |  | 
| 292 | 
            -
                  assert(@right_child1.is_left_child?,  | 
| 293 | 
            -
                  assert(@left_child1.is_right_child?,  | 
| 294 | 
            -
                  assert_equal(@right_child1, @root.first_child,  | 
| 295 | 
            -
                  assert_equal(@left_child1, @root.last_child,  | 
| 296 | 
            -
                  assert_equal(@right_child1, @root[0],  | 
| 297 | 
            -
                  assert_equal(@left_child1, @root[1],  | 
| 292 | 
            +
                  assert(@right_child1.is_left_child?, 'right_child1 should now be the left child')
         | 
| 293 | 
            +
                  assert(@left_child1.is_right_child?, 'left_child1 should now be the right child')
         | 
| 294 | 
            +
                  assert_equal(@right_child1, @root.first_child, 'right_child1 should now be the first child')
         | 
| 295 | 
            +
                  assert_equal(@left_child1, @root.last_child, 'left_child1 should now be the last child')
         | 
| 296 | 
            +
                  assert_equal(@right_child1, @root[0], 'right_child1 should now be the first child')
         | 
| 297 | 
            +
                  assert_equal(@left_child1, @root[1], 'left_child1 should now be the last child')
         | 
| 298 298 | 
             
                end
         | 
| 299 299 |  | 
| 300 300 | 
             
                # Test the old CamelCase method names
         | 
| 301 | 
            -
                def  | 
| 302 | 
            -
                  @left_child2  = Tree::BinaryTreeNode.new( | 
| 303 | 
            -
                  @right_child2 = Tree::BinaryTreeNode.new( | 
| 301 | 
            +
                def test_old_camel_case_names
         | 
| 302 | 
            +
                  @left_child2  = Tree::BinaryTreeNode.new('A Child at Left', 'Child Node @ left')
         | 
| 303 | 
            +
                  @right_child2 = Tree::BinaryTreeNode.new('B Child at Right', 'Child Node @ right')
         | 
| 304 304 |  | 
| 305 305 | 
             
                  require 'structured_warnings'
         | 
| 306 306 |  | 
| 307 307 | 
             
                  meth_names_for_test = %w{leftChild isLeftChild? rightChild isRightChild?}
         | 
| 308 308 |  | 
| 309 309 | 
             
                  meth_names_for_test.each do |meth_name|
         | 
| 310 | 
            -
                    assert_warn(DeprecatedMethodWarning) {@root.send(meth_name)}
         | 
| 310 | 
            +
                    assert_warn(StructuredWarnings::DeprecatedMethodWarning) {@root.send(meth_name)}
         | 
| 311 311 | 
             
                  end
         | 
| 312 312 |  | 
| 313 | 
            -
                   | 
| 314 | 
            -
                  assert_warn(DeprecatedMethodWarning) {@root. | 
| 315 | 
            -
                   | 
| 313 | 
            +
                  # noinspection RubyResolve
         | 
| 314 | 
            +
                  assert_warn(StructuredWarnings::DeprecatedMethodWarning) {@root.leftChild = @left_child2}
         | 
| 315 | 
            +
                  # noinspection RubyResolve
         | 
| 316 | 
            +
                  assert_warn(StructuredWarnings::DeprecatedMethodWarning) {@root.rightChild = @right_child2}
         | 
| 317 | 
            +
                  assert_raise(NoMethodError) {@root.DummyMethodDoesNotExist} # Make sure the right method is visible
         | 
| 316 318 |  | 
| 317 319 | 
             
                end
         | 
| 318 320 |  | 
| @@ -33,7 +33,7 @@ | |
| 33 33 | 
             
            #
         | 
| 34 34 |  | 
| 35 35 | 
             
            require 'test/unit'
         | 
| 36 | 
            -
             | 
| 36 | 
            +
            require_relative '../lib/rubytree'
         | 
| 37 37 |  | 
| 38 38 | 
             
            module TestTree
         | 
| 39 39 |  | 
| @@ -42,7 +42,7 @@ module TestTree | |
| 42 42 |  | 
| 43 43 | 
             
                # A simple test.  We are just checking whether the require worked.
         | 
| 44 44 | 
             
                def test_create_a_simple_node
         | 
| 45 | 
            -
                  assert_not_nil(Tree::TreeNode.new( | 
| 45 | 
            +
                  assert_not_nil(Tree::TreeNode.new('Root', 'A Root node'))
         | 
| 46 46 | 
             
                end
         | 
| 47 47 | 
             
              end
         | 
| 48 48 | 
             
            end
         | 
| @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            # test_subclassed_node.rb - This file is part of the RubyTree package.
         | 
| 4 4 | 
             
            #
         | 
| 5 | 
            -
            # Copyright (c) 2012 Anupam Sengupta
         | 
| 5 | 
            +
            # Copyright (c) 2012, 2017 Anupam Sengupta
         | 
| 6 6 | 
             
            #
         | 
| 7 7 | 
             
            # All rights reserved.
         | 
| 8 8 | 
             
            #
         | 
| @@ -34,7 +34,7 @@ | |
| 34 34 |  | 
| 35 35 | 
             
            require 'test/unit'
         | 
| 36 36 | 
             
            require 'json'
         | 
| 37 | 
            -
             | 
| 37 | 
            +
            require_relative '../lib/tree'
         | 
| 38 38 |  | 
| 39 39 | 
             
            module TestTree
         | 
| 40 40 |  | 
| @@ -45,27 +45,28 @@ module TestTree | |
| 45 45 | 
             
                class MyNode < Tree::TreeNode
         | 
| 46 46 | 
             
                  # A dummy method to test the camelCasedMethod resolution
         | 
| 47 47 | 
             
                  def my_dummy_method
         | 
| 48 | 
            -
                     | 
| 48 | 
            +
                    'Hello'
         | 
| 49 49 | 
             
                  end
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 | 
            -
                def  | 
| 53 | 
            -
                  root = MyNode.new( | 
| 52 | 
            +
                def test_camelcase_methods
         | 
| 53 | 
            +
                  root = MyNode.new('Root')
         | 
| 54 54 |  | 
| 55 | 
            -
                  assert_equal( | 
| 55 | 
            +
                  assert_equal('Hello', root.my_dummy_method)
         | 
| 56 56 |  | 
| 57 57 | 
             
                  # We should get a warning as we are invoking the camelCase version of the dummy method.
         | 
| 58 | 
            -
                  assert_warn(DeprecatedMethodWarning) { root.send('MyDummyMethod') }
         | 
| 58 | 
            +
                  assert_warn(StructuredWarnings::DeprecatedMethodWarning) { root.send('MyDummyMethod') }
         | 
| 59 59 |  | 
| 60 | 
            -
                  # Test if the structured_warnings can be disabled to call the  | 
| 61 | 
            -
                  DeprecatedMethodWarning.disable do
         | 
| 62 | 
            -
                     | 
| 60 | 
            +
                  # Test if the structured_warnings can be disabled to call the CamelCase methods.
         | 
| 61 | 
            +
                  StructuredWarnings::DeprecatedMethodWarning.disable do
         | 
| 62 | 
            +
                    # noinspection RubyResolve
         | 
| 63 | 
            +
                    assert_equal('Hello', root.myDummyMethod)
         | 
| 63 64 | 
             
                  end
         | 
| 64 65 |  | 
| 65 66 | 
             
                end
         | 
| 66 67 |  | 
| 67 | 
            -
                def  | 
| 68 | 
            -
                  root = MyNode.new( | 
| 68 | 
            +
                def test_detached_copy_same_clz
         | 
| 69 | 
            +
                  root = MyNode.new('Root')
         | 
| 69 70 | 
             
                  assert_equal(MyNode, root.detached_copy.class)
         | 
| 70 71 | 
             
                end
         | 
| 71 72 |  | 
| @@ -34,7 +34,7 @@ | |
| 34 34 |  | 
| 35 35 | 
             
            require 'test/unit'
         | 
| 36 36 | 
             
            require 'json'
         | 
| 37 | 
            -
             | 
| 37 | 
            +
            require_relative '../lib/tree'
         | 
| 38 38 |  | 
| 39 39 | 
             
            module TestTree
         | 
| 40 40 | 
             
              # Test class for the Tree node.
         | 
| @@ -42,7 +42,7 @@ module TestTree | |
| 42 42 |  | 
| 43 43 | 
             
                # Test long and unbalanced trees
         | 
| 44 44 | 
             
                def create_long_depth_trees(depth=100)
         | 
| 45 | 
            -
                  tree = Tree::TreeNode.new( | 
| 45 | 
            +
                  tree = Tree::TreeNode.new('/')
         | 
| 46 46 | 
             
                  current = tree
         | 
| 47 47 | 
             
                  depth.times do |i|
         | 
| 48 48 | 
             
                    new_node = Tree::TreeNode.new("#{i}")
         | 
| @@ -50,7 +50,7 @@ module TestTree | |
| 50 50 | 
             
                    current = new_node
         | 
| 51 51 | 
             
                  end
         | 
| 52 52 |  | 
| 53 | 
            -
                  tree.each { | | 
| 53 | 
            +
                  tree.each { |_| nil }
         | 
| 54 54 | 
             
                  tree
         | 
| 55 55 | 
             
                end
         | 
| 56 56 |  |