Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 43 lines (32 sloc) 0.823 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
require 'weakling'
require 'jruby'

describe Weakling::WeakRef do
  it "holds a reference to an object" do
    o = Object.new
    w = Weakling::WeakRef.new(o)
    w.get.should equal(o)
  end

  it "weakly references the contained object" do
    o = Object.new
    w = Weakling::WeakRef.new(o)
    o = nil
    5.times {JRuby.gc}

    lambda {w.get}.should raise_error RefError
    w.weakref_alive?.should == false
  end

  it "accepts a RefQueue for reporting collected refs" do
    o1 = Object.new
    o2 = Object.new
    r = Weakling::RefQueue.new
    w1 = Weakling::WeakRef.new(o1, r)
    w2 = Weakling::WeakRef.new(o2, r)
    
    r.poll.should == nil
    r.remove(50).should == nil

    o1 = nil
    5.times {JRuby.gc}

    r.poll.should == w1

    o2 = nil
    5.times {JRuby.gc}

    r.remove.should == w2
  end
end

Something went wrong with that request. Please try again.