diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-24 07:57:19 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-05-24 07:57:19 +0000 |
commit | 8567dbb1b1782b6d6e0328c6a143006d98c39da1 (patch) | |
tree | 5b95db8efc6be872d2c1d089ac2148a66c219961 /test/ruby | |
parent | 2aae783fce172e80d14c22a4f4ea07542dd35380 (diff) | |
download | ruby-8567dbb1b1782b6d6e0328c6a143006d98c39da1.tar.gz |
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.rb | 23 |
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 |