summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-05 07:07:28 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-05 07:07:28 +0000
commita62ee369a1cd9e141518c2d145a5e6dfc5362d9f (patch)
tree4c6e5396c5f20156145424a7312da6e3490272f6 /test/ruby
parent738fee09de8034da66754fc7cc0e8044f5e1069f (diff)
* test/ruby/test_regexp.rb
(TestRegexp#test_options_in_look_behind) (TestRegexp#assert_match_at): Add tests for another problem fixed in Onigmo 5.13.5. Previously Onigmo did not allow option enclosures in look-behind, which makes it impossible to interpolate a regexp into another in the middle of a look-behind pattern. cf. https://github.com/k-takata/Onigmo/pull/17 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_regexp.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index f13a900634..2bfbd9dff9 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -944,6 +944,38 @@ class TestRegexp < Test::Unit::TestCase
assert_match_each(/\A((?<x>x)|(?<y>y))(?(<x>)y|x)\z/, conds, bug8583)
end
+ def test_options_in_look_behind
+ assert_nothing_raised {
+ assert_match_at(/(?<=(?i)ab)cd/, "ABcd", [[2,4]])
+ assert_match_at(/(?<=(?i:ab))cd/, "ABcd", [[2,4]])
+ assert_match_at(/(?<!(?i)ab)cd/, "aacd", [[2,4]])
+ assert_match_at(/(?<!(?i:ab))cd/, "aacd", [[2,4]])
+
+ assert_not_match(/(?<=(?i)ab)cd/, "ABCD")
+ assert_not_match(/(?<=(?i:ab))cd/, "ABCD")
+ assert_not_match(/(?<!(?i)ab)cd/, "ABcd")
+ assert_not_match(/(?<!(?i:ab))cd/, "ABcd")
+ }
+ end
+
+ def assert_match_at(re, str, positions, msg = nil)
+ match = re.match(str)
+
+ assert_not_nil match, message(msg) {
+ "Expected #{re.inspect} to match #{str.inspect}"
+ }
+
+ if match
+ actual_positions = (0...match.size).map { |i|
+ [match.begin(i), match.end(i)]
+ }
+
+ assert_equal positions, actual_positions, message(msg) {
+ "Expected #{re.inspect} to match #{str.inspect} at: #{positions.inspect}"
+ }
+ end
+ end
+
def assert_match_each(re, conds, msg = nil)
errs = conds.select {|str, match| match ^ (re =~ str)}
msg = message(msg) {