28
30
def test_ruby_dev_31309
29
31
assert_equal('Ruby', 'Ruby'.sub(/[^a-z]/i, '-'))
34
def test_assert_normal_exit
35
# moved from knownbug. It caused core.
36
Regexp.union("a", "a")
40
assert_equal '(?-mix:\x00)', Regexp.new("\0").to_s
44
assert_equal :ok, begin
47
Regexp.new("\xc2\xa1".force_encoding("euc-jp")),
48
Regexp.new("\xc2\xa1".force_encoding("utf-8")))
55
def test_named_capture
56
m = /&(?<foo>.*?);/.match("aaa & yyy")
57
assert_equal("amp", m["foo"])
58
assert_equal("amp", m[:foo])
59
assert_equal(5, m.begin(:foo))
60
assert_equal(8, m.end(:foo))
61
assert_equal([5,8], m.offset(:foo))
63
assert_equal("aaa [amp] yyy",
64
"aaa & yyy".sub(/&(?<foo>.*?);/, '[\k<foo>]'))
66
assert_equal('#<MatchData "& y" foo:"amp">',
67
/&(?<foo>.*?); (y)/.match("aaa & yyy").inspect)
68
assert_equal('#<MatchData "& y" 1:"amp" 2:"y">',
69
/&(.*?); (y)/.match("aaa & yyy").inspect)
70
assert_equal('#<MatchData "& y" foo:"amp" bar:"y">',
71
/&(?<foo>.*?); (?<bar>y)/.match("aaa & yyy").inspect)
72
assert_equal('#<MatchData "& y" foo:"amp" foo:"y">',
73
/&(?<foo>.*?); (?<foo>y)/.match("aaa & yyy").inspect)
75
/(?<id>[A-Za-z_]+)/ =~ "!abc"
76
assert_equal("abc", Regexp.last_match(:id))
78
/a/ =~ "b" # doesn't match.
79
assert_equal(nil, Regexp.last_match)
80
assert_equal(nil, Regexp.last_match(1))
81
assert_equal(nil, Regexp.last_match(:foo))
83
assert_equal(["foo", "bar"], /(?<foo>.)(?<bar>.)/.names)
84
assert_equal(["foo"], /(?<foo>.)(?<foo>.)/.names)
85
assert_equal([], /(.)(.)/.names)
87
assert_equal(["foo", "bar"], /(?<foo>.)(?<bar>.)/.match("ab").names)
88
assert_equal(["foo"], /(?<foo>.)(?<foo>.)/.match("ab").names)
89
assert_equal([], /(.)(.)/.match("ab").names)
91
assert_equal({"foo"=>[1], "bar"=>[2]},
92
/(?<foo>.)(?<bar>.)/.named_captures)
93
assert_equal({"foo"=>[1, 2]},
94
/(?<foo>.)(?<foo>.)/.named_captures)
95
assert_equal({}, /(.)(.)/.named_captures)
97
assert_equal("a[b]c", "abc".sub(/(?<x>[bc])/, "[\\k<x>]"))
100
def test_assign_named_capture
101
assert_equal("a", eval('/(?<foo>.)/ =~ "a"; foo'))
102
assert_equal("a", eval('foo = 1; /(?<foo>.)/ =~ "a"; foo'))
103
assert_equal("a", eval('1.times {|foo| /(?<foo>.)/ =~ "a"; break foo }'))
104
assert_nothing_raised { eval('/(?<Foo>.)/ =~ "a"') }
105
assert_nil(eval('/(?<Foo>.)/ =~ "a"; defined? Foo'))
108
def test_assign_named_capture_to_reserved_word
110
assert(!local_variables.include?(:nil), "[ruby-dev:32675]")
113
def test_match_regexp
116
assert_equal(r, m.regexp)