diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-27 07:48:50 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-27 07:48:50 +0000 |
commit | 8ddbbb33242f413845079b0274c28331cb4aa0f5 (patch) | |
tree | 522b12dada77b09073a58130c99c77d62c895b87 /test | |
parent | 8634544fa74be0995582bc8056763fcfd38a0702 (diff) | |
download | ruby-8ddbbb33242f413845079b0274c28331cb4aa0f5.tar.gz |
Module#prepend
* class.c (rb_prepend_module): prepend module into another module.
* eval.c (rb_mod_prepend): new method Module#prepend. [Feature #1102]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_module.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index b24fa3222d..decb217289 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -1238,4 +1238,36 @@ class TestModule < Test::Unit::TestCase INPUT assert_in_out_err([], src, ["NameError"], []) end + + module M0 + def m1; [:M0] end + end + module M1 + def m1; [:M1, super, :M1] end + end + module M2 + def m1; [:M2, super, :M2] end + end + M3 = Module.new do + def m1; [:M3, super, :M3] end + end + module M4 + def m1; [:M4, super, :M4] end + end + class C0 + include M0 + prepend M1 + def m1; [:C0, super, :C0] end + end + class C1 < C0 + prepend M2, M3 + include M4 + def m1; [:C1, super, :C1] end + end + + def test_prepend + obj = C1.new + expected = [:M2,[:M3,[:C1,[:M4,[:M1,[:C0,[:M0],:C0],:M1],:M4],:C1],:M3],:M2] + assert_equal(expected, obj.m1) + end end |