diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-08 14:56:08 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-08 14:56:08 +0000 |
commit | 1bb89a6dea9e2ec3730713285fba33c197578fb8 (patch) | |
tree | 633b96cdadde1962934a8d4988ab9c626ac70f24 /test | |
parent | e028d3d90572a58f87f4efb6ada3ffdc857d44c7 (diff) | |
download | ruby-1bb89a6dea9e2ec3730713285fba33c197578fb8.tar.gz |
* eval.c (rb_mod_refinements): new method Module#refinements.
* test/ruby/test_refinement.rb: add new tests for the above changes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_refinement.rb | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/ruby/test_refinement.rb b/test/ruby/test_refinement.rb index 476c6442c7..6a1a1ccf80 100644 --- a/test/ruby/test_refinement.rb +++ b/test/ruby/test_refinement.rb @@ -455,4 +455,69 @@ class TestRefinement < Test::Unit::TestCase end end end + + def test_refinements_empty + m = Module.new + assert(m.refinements.empty?) + end + + def test_refinements_one + c = Class.new + c_ext = nil + m = Module.new { + refine c do + c_ext = self + end + } + assert_equal({c => c_ext}, m.refinements) + end + + def test_refinements_two + c1 = Class.new + c1_ext = nil + c2 = Class.new + c2_ext = nil + m = Module.new { + refine c1 do + c1_ext = self + end + + refine c2 do + c2_ext = self + end + } + assert_equal({c1 => c1_ext, c2 => c2_ext}, m.refinements) + end + + def test_refinements_duplicate_refine + c = Class.new + c_ext = nil + m = Module.new { + refine c do + c_ext = self + end + refine c do + end + } + assert_equal({c => c_ext}, m.refinements) + end + + def test_refinements_no_recursion + c1 = Class.new + c1_ext = nil + m1 = Module.new { + refine c1 do + c1_ext = self + end + } + c2 = Class.new + c2_ext = nil + m2 = Module.new { + using m1 + refine c2 do + c2_ext = self + end + } + assert_equal({c2 => c2_ext}, m2.refinements) + end end |