diff options
author | Ufuk Kayserilioglu <[email protected]> | 2022-09-27 01:19:22 +0300 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2022-10-20 17:30:17 +0200 |
commit | 0378e2f4a8319440dd65c82b16f189161472d237 (patch) | |
tree | 6c2c6dd91c624fd4ae6ad4be5dd3a6d04528df37 /spec/ruby/core | |
parent | 192bc725290ca4b271bff2bae6123d84c25f7173 (diff) |
Add Class#attached_object
Implements [Feature #12084]
Returns the object for which the receiver is the singleton class, or
raises TypeError if the receiver is not a singleton class.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6450
Diffstat (limited to 'spec/ruby/core')
-rw-r--r-- | spec/ruby/core/class/attached_object_spec.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/spec/ruby/core/class/attached_object_spec.rb b/spec/ruby/core/class/attached_object_spec.rb new file mode 100644 index 0000000000..115d5fa563 --- /dev/null +++ b/spec/ruby/core/class/attached_object_spec.rb @@ -0,0 +1,31 @@ +require_relative '../../spec_helper' + +ruby_version_is '3.2' do + describe "Class#attached_object" do + it "returns the object that is attached to a singleton class" do + a = Class.new + + a_obj = a.new + a_obj.singleton_class.attached_object.should == a_obj + end + + it "returns the class object that is attached to a class's singleton class" do + a = Class.new + singleton_class = (class << a; self; end) + + singleton_class.attached_object.should == a + end + + it "raises TypeError if the class is not a singleton class" do + a = Class.new + + -> { a.attached_object }.should raise_error(TypeError) + end + + it "raises TypeError for special singleton classes" do + -> { nil.singleton_class.attached_object }.should raise_error(TypeError) + -> { true.singleton_class.attached_object }.should raise_error(TypeError) + -> { false.singleton_class.attached_object }.should raise_error(TypeError) + end + end +end |