aboutsummaryrefslogtreecommitdiffstats
path: root/test/ruby/test_refinement.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/test_refinement.rb')
-rw-r--r--test/ruby/test_refinement.rb65
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