diff options
Diffstat (limited to 'test/ruby/test_enum.rb')
-rw-r--r-- | test/ruby/test_enum.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 8d30b343a8..aa93b95c2a 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -63,6 +63,27 @@ class TestEnumerable < Test::Unit::TestCase assert_equal([[2, 1], [2, 4]], a) end + def test_grep_optimization + bug17030 = '[ruby-core:99156]' + 'set last match' =~ /set last (.*)/ + assert_equal([:a, 'b', :c], [:a, 'b', 'z', :c, 42, nil].grep(/[a-d]/)) + assert_equal(['z', 42, nil], [:a, 'b', 'z', :c, 42, nil].grep_v(/[a-d]/)) + assert_equal('match', $1) + + regexp = Regexp.new('x') + assert_equal([], @obj.grep(regexp)) # sanity check + def regexp.===(other) + true + end + assert_equal([1, 2, 3, 1, 2], @obj.grep(regexp)) + + o = Object.new + def o.to_str + 'hello' + end + assert_same(o, [o].grep(/ll/).first) + end + def test_count assert_equal(5, @obj.count) assert_equal(2, @obj.count(1)) |