diff options
Diffstat (limited to 'spec/ruby/core/objectspace')
-rw-r--r-- | spec/ruby/core/objectspace/_id2ref_spec.rb | 41 | ||||
-rw-r--r-- | spec/ruby/core/objectspace/define_finalizer_spec.rb | 2 |
2 files changed, 35 insertions, 8 deletions
diff --git a/spec/ruby/core/objectspace/_id2ref_spec.rb b/spec/ruby/core/objectspace/_id2ref_spec.rb index 6e8828348e..c088ae2743 100644 --- a/spec/ruby/core/objectspace/_id2ref_spec.rb +++ b/spec/ruby/core/objectspace/_id2ref_spec.rb @@ -7,16 +7,43 @@ describe "ObjectSpace._id2ref" do r.should == s end - it "retrieves an Integer by object_id" do - f = 1 - r = ObjectSpace._id2ref(f.object_id) - r.should == f + it "retrieves true by object_id" do + ObjectSpace._id2ref(true.object_id).should == true + end + + it "retrieves false by object_id" do + ObjectSpace._id2ref(false.object_id).should == false + end + + it "retrieves nil by object_id" do + ObjectSpace._id2ref(nil.object_id).should == nil + end + + it "retrieves a small Integer by object_id" do + ObjectSpace._id2ref(1.object_id).should == 1 + ObjectSpace._id2ref((-42).object_id).should == -42 + end + + it "retrieves a large Integer by object_id" do + obj = 1 << 88 + ObjectSpace._id2ref(obj.object_id).should.equal?(obj) end it "retrieves a Symbol by object_id" do - s = :sym - r = ObjectSpace._id2ref(s.object_id) - r.should == s + ObjectSpace._id2ref(:sym.object_id).should.equal?(:sym) + end + + it "retrieves a String by object_id" do + obj = "str" + ObjectSpace._id2ref(obj.object_id).should.equal?(obj) + end + + it "retrieves a frozen literal String by object_id" do + ObjectSpace._id2ref("frozen string literal _id2ref".freeze.object_id).should.equal?("frozen string literal _id2ref".freeze) + end + + it "retrieves an Encoding by object_id" do + ObjectSpace._id2ref(Encoding::UTF_8.object_id).should.equal?(Encoding::UTF_8) end it 'raises RangeError when an object could not be found' do diff --git a/spec/ruby/core/objectspace/define_finalizer_spec.rb b/spec/ruby/core/objectspace/define_finalizer_spec.rb index ed021b7131..281785b0a4 100644 --- a/spec/ruby/core/objectspace/define_finalizer_spec.rb +++ b/spec/ruby/core/objectspace/define_finalizer_spec.rb @@ -4,7 +4,7 @@ require_relative 'fixtures/classes' # Why do we not test that finalizers are run by the GC? The documentation # says that finalizers are never guaranteed to be run, so we can't # spec that they are. On some implementations of Ruby the finalizers may -# run asyncronously, meaning that we can't predict when they'll run, +# run asynchronously, meaning that we can't predict when they'll run, # even if they were guaranteed to do so. Even on MRI finalizers can be # very unpredictable, due to conservative stack scanning and references # left in unused memory. |