$: << File.join(File.expand_path(File.dirname(__FILE__)), ‘..’, ‘lib’) require ‘algorithms’
if defined? Containers::CBst
describe "CBst" do it "should mark ruby object references" do anon_key_class = Class.new do attr :value def initialize(x); @value = x; end def <=>(other); value <=> other.value; end end anon_val_class = Class.new @bst = Containers::CBst.new 100.times { |x| @bst.push(anon_key_class.new(x), anon_val_class.new) } # Mark and sweep ObjectSpace.garbage_collect # Check if any instances were swept count = 0 ObjectSpace.each_object(anon_key_class) { |x| count += 1 } count.should eql(100) ObjectSpace.each_object(anon_val_class) { |x| count += 1 } count.should eql(200) end end
end