Sha256: 8f013d4eaa9b154b5ddd1ee7557e5c77978c343ad3d5445122cc23f4664518b3
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
shared_examples_for "wref" do include GarbageCollectorHelper let(:implementation) do class_name = described_class.name if match = class_name.match(/::([A-z]+)$/) impl = match[1].to_sym if match[1] != "Map" end return impl end let(:user) { User.new("Kasper") } let(:user_ref) { Wref.new(user, impl: implementation) } def ref_in_danger return Wref.new(User.new("Morten"), impl: implementation) end it "#implementation" do user_ref.implementation.should eq implementation if described_class != Wref end it "#weak_ref" do user_ref.weak_ref.should be_a described_class if described_class != Wref end describe "#alive?" do it "is true when ref exists" do user_ref.alive?.should eq true end it "is false when ref has been removed" do ref = ref_in_danger force_garbage_collection ref.alive?.should eq false end end describe "#get" do it "#get" do user_ref.get.name.should eq "Kasper" ref2 = ref_in_danger force_garbage_collection user_ref.get.should === user ref2.get.should eq nil end it "returns the correct content initialy" do ref_in_danger.get.name.should eq "Morten" end end it "#get!" do ref = user_ref ref.get!.should === user ref2 = ref_in_danger force_garbage_collection ref.get!.should === user expect { ref2.get! }.to raise_error Wref::Recycled end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
wref-0.0.8 | spec/support/wref_collection.rb |
wref-0.0.7 | spec/support/wref_collection.rb |