diff options
Diffstat (limited to 'spec/ruby/core/class/attached_object_spec.rb')
-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..f1c0f63a44 --- /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, /is not a singleton class/) + end + + it "raises TypeError for special singleton classes" do + -> { nil.singleton_class.attached_object }.should raise_error(TypeError, /[`']NilClass' is not a singleton class/) + -> { true.singleton_class.attached_object }.should raise_error(TypeError, /[`']TrueClass' is not a singleton class/) + -> { false.singleton_class.attached_object }.should raise_error(TypeError, /[`']FalseClass' is not a singleton class/) + end + end +end |