summaryrefslogtreecommitdiff
path: root/test/rdoc/test_rdoc_class_module.rb
diff options
Diffstat (limited to 'test/rdoc/test_rdoc_class_module.rb')
-rw-r--r--test/rdoc/test_rdoc_class_module.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/rdoc/test_rdoc_class_module.rb b/test/rdoc/test_rdoc_class_module.rb
index 50b3dec796..ded5bc8d09 100644
--- a/test/rdoc/test_rdoc_class_module.rb
+++ b/test/rdoc/test_rdoc_class_module.rb
@@ -1279,6 +1279,26 @@ class TestRDocClassModule < XrefTestCase
assert_equal @c3_h1, @c3_h2.superclass
end
+ def test_setting_superclass
+ @c1.superclass = nil
+ assert_nil(@c1.superclass)
+ assert_nil(@c1.instance_variable_get("@superclass")) # proxy to test marshalling
+
+ @c1.superclass = @c4_c4.full_name
+ assert_equal(@c1.superclass, @c4_c4)
+ assert_equal(@c4_c4.full_name, @c1.instance_variable_get("@superclass"))
+
+ @c1.superclass = @c4_c4
+ assert_equal(@c1.superclass, @c4_c4)
+ assert_equal(@c4_c4.full_name, @c1.instance_variable_get("@superclass"))
+
+ # we could support this if we find we need to in the future.
+ assert_raise(TypeError) { @c1.superclass = Object }
+
+ # but this doesn't make sense.
+ assert_raise(TypeError) { @c1.superclass = Object.new }
+ end
+
def test_super_classes
rdoc_c3_h1 = @xref_data.find_module_named('C3::H1')
rdoc_object = @xref_data.find_module_named('Object')