summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-24 07:57:19 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-24 07:57:19 +0000
commitda9d5db8bd14c2e2ed7ad32481f0937f6fc47c46 (patch)
tree5b95db8efc6be872d2c1d089ac2148a66c219961 /test/ruby
parent73d797ad48bfe73d63d7666fc9fd46fda5031dfe (diff)
test_enum.rb: test_inject_array_op_redefined
* test/ruby/test_enum.rb (test_inject_array_op_redefined): test other operators too. [Bug#12178] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_enum.rb23
1 files changed, 16 insertions, 7 deletions
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb
index c6ccecc6df..86998eef60 100644
--- a/test/ruby/test_enum.rb
+++ b/test/ruby/test_enum.rb
@@ -213,15 +213,24 @@ class TestEnumerable < Test::Unit::TestCase
assert_equal(2.0+3.0i, [2.0, 3.0i].inject(:+))
end
- def test_inject_array_plus_redefined
- assert_separately([], <<-"end;")
- class Integer
- undef :+
- def +(x)
- 0
+ def test_inject_array_op_redefined
+ assert_separately([], "#{<<~"end;"}\n""end")
+ all_assertions_foreach("", *%i[+ * / - %]) do |op|
+ bug = '[ruby-dev:49510] [Bug#12178] should respect redefinition'
+ begin
+ Integer.class_eval do
+ alias_method :orig, op
+ define_method(op) do |x|
+ 0
+ end
+ end
+ assert_equal(0, [1,2,3].inject(op), bug)
+ ensure
+ Integer.class_eval do
+ undef_method op
+ alias_method op, :orig
end
end
- assert_equal(0, [1,2,3].inject(:+), "[ruby-dev:49510] [Bug#12178]")
end;
end