Shoot, I'll give it a whirl, it beats the meta discussion. I added a
check for branch contents, I think that qualified as an aspect per the
quiz rules.

- donald

avl_tree.rb:

#!/usr/bin/env ruby -wKU

class AVLTree

  def initialize
    @contents = []
  end

  def empty?
    @contents.empty?
  end

  def include?(obj)
    @contents.include?(obj)
  end

  def <<(obj)
    @contents << obj
  end

  def height
    Math::log(@contents.length).ceil
  end

  def remove(obj)
    @contents.delete(obj)
  end

end 

#!/usr/bin/env ruby -wKU

 require "test/unit"

 require "avl_tree"

 class TestAVLTree < Test::Unit::TestCase
   def setup
     @tree = AVLTree.new
   end

   def test_tree_membership
     assert_equal(true,  @tree.empty?)
     assert_equal(false, @tree.include?(3))

     @tree << 3

     assert_equal(false, @tree.empty?)
     assert_equal(true,  @tree.include?(3))
   end

   def test_tree_should_allow_more_than_one_element
     @tree << 3
     @tree << 4

     assert(@tree.include?(4))
     assert(@tree.include?(3))
   end

#disabled this test case as it is order dependent and not valid # def
test_tree_height_of_one_or_two_nodes_is_N
#   @tree << 5
#   assert_equal 1, @tree.height
#   @tree << 6
#   assert_equal 2, @tree.height     #changed from 1
# end


 def test_tree_height_of_three_nodes_should_be_greater_than_1
   @tree << 5
   @tree << 6
   @tree << 7
   assert(@tree.height > 1, "Tree appears to have stunted growth.")  end

 def test_tree_growth_limit_is_1pt44_log_N
   (1..10).each{|i|
      @tree << i
      limit = (1.44 * Math::log(i)).ceil+1
      assert( @tree.height <= limit, "Tree of #{i} nodes is too tall by
#{@tree.height - limit}")
    }
 end

 def test_remove_node
   @tree << 314
   @tree.remove(314)
   assert(!@tree.include?(314))
 end

 def test_has_branches
   [50, 17, 72].each {|n| @tree << n}
   assert(50 == @tree.value)
   assert(17 == @tree.left.value)
   assert(72 == @tree.right.value)
 end

end