diff options
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_module.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 4c171bb439..cc11087e8a 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -3365,6 +3365,40 @@ class TestModule < Test::Unit::TestCase CODE end + def test_set_temporary_name + m = Module.new + assert_nil m.name + + m.const_set(:N, Module.new) + + assert_match(/\A#<Module:0x\h+>::N\z/, m::N.name) + m::N.set_temporary_name("fake_name_under_M") + assert_equal("fake_name_under_M", m::N.name) + m::N.set_temporary_name(nil) + assert_nil(m::N.name) + + m.set_temporary_name("fake_name") + assert_equal("fake_name", m.name) + + m.set_temporary_name(nil) + assert_nil m.name + + assert_raise_with_message(ArgumentError, "empty class/module name") do + m.set_temporary_name("") + end + %w[A A::B ::A ::A::B].each do |name| + assert_raise_with_message(ArgumentError, /must not be a constant path/) do + m.set_temporary_name(name) + end + end + + [Object, User, AClass].each do |mod| + assert_raise_with_message(RuntimeError, /permanent name/) do + mod.set_temporary_name("fake_name") + end + end + end + private def assert_top_method_is_private(method) |
