* class.c (rb_mix_module): implement Module#mix.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2011-05-31 16:16:06 +00:00
parent fcc86b0f4c
commit 604fe33b44
5 changed files with 243 additions and 24 deletions

View file

@ -1068,4 +1068,33 @@ class TestModule < Test::Unit::TestCase
INPUT
assert_in_out_err([], src, ["NameError"], [])
end
def test_mix
american = Module.new do
attr_accessor :address
end
japanese = Module.new do
attr_accessor :address
end
japanese_american = Class.new
assert_nothing_raised(ArgumentError) {
japanese_american.class_eval {mix american}
}
assert_raise(ArgumentError) {
japanese_american.class_eval {mix japanese}
}
japanese_american = Class.new
assert_nothing_raised(ArgumentError) {
japanese_american.class_eval {
mix american, :address => :us_address, :address= => :us_address=
}
}
assert_nothing_raised(ArgumentError) {
japanese_american.class_eval {
mix japanese, :address => :jp_address, :address= => :jp_address=
}
}
end
end