mirror of
https://github.com/ruby/ruby.git
synced 2025-08-27 06:56:13 +02:00
Add MatchData#deconstruct/deconstruct_keys
This commit is contained in:
parent
546566d34b
commit
4954c9fc0f
Notes:
git
2022-10-10 12:41:35 +09:00
3 changed files with 119 additions and 0 deletions
|
@ -608,6 +608,38 @@ class TestRegexp < Test::Unit::TestCase
|
|||
assert_equal('#<MatchData "foobarbaz" 1:"foo" 2:"bar" 3:"baz" 4:nil>', m.inspect)
|
||||
end
|
||||
|
||||
def test_match_data_deconstruct
|
||||
m = /foo.+/.match("foobarbaz")
|
||||
assert_equal([], m.deconstruct)
|
||||
|
||||
m = /(foo).+(baz)/.match("foobarbaz")
|
||||
assert_equal(["foo", "baz"], m.deconstruct)
|
||||
|
||||
m = /(...)(...)(...)(...)?/.match("foobarbaz")
|
||||
assert_equal(["foo", "bar", "baz", nil], m.deconstruct)
|
||||
end
|
||||
|
||||
def test_match_data_deconstruct_keys
|
||||
m = /foo.+/.match("foobarbaz")
|
||||
assert_equal({}, m.deconstruct_keys([:a]))
|
||||
|
||||
m = /(?<a>foo).+(?<b>baz)/.match("foobarbaz")
|
||||
assert_equal({a: "foo", b: "baz"}, m.deconstruct_keys(nil))
|
||||
assert_equal({a: "foo", b: "baz"}, m.deconstruct_keys([:a, :b]))
|
||||
assert_equal({b: "baz"}, m.deconstruct_keys([:b]))
|
||||
assert_equal({}, m.deconstruct_keys([:c, :a]))
|
||||
assert_equal({a: "foo"}, m.deconstruct_keys([:a, :c]))
|
||||
assert_equal({}, m.deconstruct_keys([:a, :b, :c]))
|
||||
|
||||
assert_raise(TypeError) {
|
||||
m.deconstruct_keys(0)
|
||||
}
|
||||
|
||||
assert_raise(TypeError) {
|
||||
m.deconstruct_keys(["a", "b"])
|
||||
}
|
||||
end
|
||||
|
||||
def test_initialize
|
||||
assert_raise(ArgumentError) { Regexp.new }
|
||||
assert_equal(/foo/, assert_warning(/ignored/) {Regexp.new(/foo/, Regexp::IGNORECASE)})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue