зеркало из https://github.com/github/ruby.git
range.c (r_cover_range_p): support beginless range
`(..2).cover?(..1)` should return true. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
95f7992b89
Коммит
d4319541e8
5
range.c
5
range.c
|
@ -1484,8 +1484,9 @@ r_cover_range_p(VALUE range, VALUE beg, VALUE end, VALUE val)
|
|||
val_end = RANGE_END(val);
|
||||
|
||||
if (!NIL_P(end) && NIL_P(val_end)) return FALSE;
|
||||
if (!NIL_P(val_end) && r_less(val_beg, val_end) > -EXCL(val)) return FALSE;
|
||||
if (!r_cover_p(range, beg, end, val_beg)) return FALSE;
|
||||
if (!NIL_P(beg) && NIL_P(val_beg)) return FALSE;
|
||||
if (!NIL_P(val_beg) && !NIL_P(val_end) && r_less(val_beg, val_end) > -EXCL(val)) return FALSE;
|
||||
if (!NIL_P(val_beg) && !r_cover_p(range, beg, end, val_beg)) return FALSE;
|
||||
|
||||
cmp_end = r_less(end, val_end);
|
||||
|
||||
|
|
|
@ -581,6 +581,9 @@ class TestRange < Test::Unit::TestCase
|
|||
assert_operator(2.., :cover?, 2..)
|
||||
assert_operator(2.., :cover?, 3..)
|
||||
assert_operator(1.., :cover?, 1..10)
|
||||
assert_operator(..2, :cover?, ..2)
|
||||
assert_operator(..2, :cover?, ..1)
|
||||
assert_operator(..2, :cover?, 0..1)
|
||||
assert_operator(2.0..5.0, :cover?, 2..3)
|
||||
assert_operator(2..5, :cover?, 2.0..3.0)
|
||||
assert_operator(2..5, :cover?, 2.0...3.0)
|
||||
|
@ -604,7 +607,9 @@ class TestRange < Test::Unit::TestCase
|
|||
assert_not_operator(1...2, :cover?, 1...3)
|
||||
assert_not_operator(2.., :cover?, 1..)
|
||||
assert_not_operator(2.., :cover?, 1..10)
|
||||
assert_not_operator(2.., :cover?, ..10)
|
||||
assert_not_operator(1..10, :cover?, 1..)
|
||||
assert_not_operator(1..10, :cover?, ..1)
|
||||
assert_not_operator(1..5, :cover?, 3..2)
|
||||
assert_not_operator(1..10, :cover?, 3...2)
|
||||
assert_not_operator(1..10, :cover?, 3...3)
|
||||
|
|
Загрузка…
Ссылка в новой задаче