diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-09-23 11:46:33 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-09-23 11:46:33 +0000 |
commit | a463ab1f0536e24c72b700945203ef4685406f55 (patch) | |
tree | 97d7228c670ed87e3c39b77f7d96b97503bd170d /test/ruby/test_refinement.rb | |
parent | 0b5a4e68c3c577fbf807cdb81d5b69bb2901a4c9 (diff) |
* eval.c (rb_mod_refine): refine modules as well.
[ruby-core:76199] [Feature #12534]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_refinement.rb')
-rw-r--r-- | test/ruby/test_refinement.rb | 61 |
1 files changed, 54 insertions, 7 deletions
diff --git a/test/ruby/test_refinement.rb b/test/ruby/test_refinement.rb index c3c2dbc61f..4f7918e810 100644 --- a/test/ruby/test_refinement.rb +++ b/test/ruby/test_refinement.rb @@ -345,17 +345,64 @@ class TestRefinement < Test::Unit::TestCase assert_equal([:c, :m1, :m2], x) end - def test_refine_module - m1 = Module.new - assert_raise(TypeError) do - Module.new { - refine m1 do + module RefineModule + module M + def foo + "M#foo" + end + + def bar + "M#bar" + end + + def baz + "M#baz" + end + end + + class C + include M + + def baz + "#{super} C#baz" + end + end + + module M2 + refine M do def foo - :m2 + "M@M2#foo" end + + def bar + "#{super} M@M2#bar" end - } + + def baz + "#{super} M@M2#baz" + end + end end + + using M2 + + def self.call_foo + C.new.foo + end + + def self.call_bar + C.new.bar + end + + def self.call_baz + C.new.baz + end + end + + def test_refine_module + assert_equal("M@M2#foo", RefineModule.call_foo) + assert_equal("M#bar M@M2#bar", RefineModule.call_bar) + assert_equal("M#baz C#baz", RefineModule.call_baz) end def test_refine_neither_class_nor_module |