[Feature #19521] Test for Module#set_temporary_name
This commit is contained in:
parent
9497820bcf
commit
7604588f6f
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user